前端学习(381):CSS3 的视口单位vw、vh实现自适应(带有px,em,rem的简单介绍)

一、px,em,rem,vw的简单介绍
1、px

px其实就是像素的意思,全称pixel,也就是图像的基本采样单位。对于不同的设备,它的图像基本单位是不同的,比如显示器和打印机。而我们通常所说的显示器分辨率是指桌面设定的分辨率,不是显示器的物理分辨率,但是现在我们的桌面分辨率和物理分辨率几乎是一致的,因为这样显示效果最佳。所以总的来说px就是对应我们显示器的分辨率。这样就会有个问题就是如果使用px的话我们就要根据不同电脑的分辨率来做自适应,有点麻烦。
2、em

em是相对长度单位。相对于当前对象内本文的字体尺寸(如果没有设置本文尺寸,那就是相对于浏览器默认的字体尺寸,也就是16px),这样计算的话。如果没有设置字体尺寸就是1em = 16px。如果使用em的话,有个好的建议,就是将body的font-size设置成62.5%,也就是16px * 62.5% = 10px。这样的话1em = 10px,方便我们计算。
3、rem

rem和em一样也是相对长度单位,但是不一样的是rem始终都是相对html根元素。这样有个很大的有点就是使用rem后不会受到对象内文本字体尺寸的影响,而且只需要改变根元素就能改变所有的字体大小。兼容性也是不错的,IE8以上版本和其他浏览器都已经支持,是个做响应式页面的好选择
4、重点:vw和vh

vw和vh是视口(viewport units)单位,何谓视口,就是根据你浏览器窗口的大小的单位,不受显示器分辨率的影响,是不是很神奇,这就代表了,我们不需要顾虑到现在那么多不同电脑有关分辨率的自适应问题。

vw是可视窗口的宽度单位,和百分比有点一样,1vw = 可视窗口的宽度的百分之一。比如窗口宽度大小是1800px,那么1vw = 18px。和百分比不一样的是,vw始终相对于可视窗口的宽度,而百分比和其父元素的宽度有关。

vh就是可视窗口的高度了。

这边顺便提一下vmin和vmax,vmin是指选择vw和vh中最小的那个,而vmax是选择最大的那个

兼容性方面是vw和vh的短板了,如下图所示,使用vw和vh所需求的版本还是较高的


二、使用vw,vh能做什么
1、响应式页面轻松搞定

由于vw,vh的特性,他们能够根据窗口大小来自动调节字体大小,这就能很轻松地完成响应式页面的布局
2、小技巧之响应垂直居中

可以使用vw,vh来实现在页面中响应垂直居中,只需要以下代码

    #box {width: 50vw;height: 50vh;margin: 25vh auto;}

只要设置margin的上下间距,使之heigit + margin-top +margin-bottom = 100 ,width + margin-left + margin-right = 100 ,就能够响应垂直居中
3、模仿bootstrap的栅栏布局

了解过bootstrap的都知道它的栅栏布局,而使用vw,vh就能够轻松实现。

    .col-2 {float: left;width: 50vw;}.col-4 {float: left;width: 25vw;}.col-5 {float: left;width: 20vw;}.col-8 {float: left;width: 12.5vw;}


上面是column实例只要在一行中所有的列加起来等于100vw就实现响应式布局
总结:

个人认为视口单位是个用来做响应式布局很不错的单位,当然如果要使用vw,vh,我的建议是rem结合vw来开发,因为视口单位有个缺点就是它没有最小或者最大限制,这就达不到我们都时候所希望的一个限制(比如窗口太小了,字都看不清)。所以我们可以在根元素上设置vw和vh,然后在根元素上限制最大最小值,然后配合body设置最大最小宽度。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/422596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAP 那点事BW HANA

作为在去年10月份SAP公司大会上隆重推出的产品,不得不提,HANA是十分强大的,它与BW是相辅相成的,但又可以独立于BW之外,虽然建模功能不如BW强大,但是它的ETL较之BW快上了至少10倍以上,速度和可实…

java数组中相同的元素个数_java求两个数组中相同元素出现的次数

法一public class Methodfifth {public void mixed(int array1[], int n1, int array2[], int n2){int i 0, j 0,number0;while (i < n1&&j < n2){if (array1[i] array2[j]){number;i;j;}else if (array1[i]>array2[j]){j;}else if (array1[i] < array2…

实例1.2:获得应用程序主窗口指针

主窗口指针保存在CWinThread::m_pMainWnd中&#xff0c;可以先调用AfxGetApp函数获得应用程序的指针&#xff0c;然后通过应用程序的指针获得其主窗口的指针。 //获得应用程序指针CMy1_2App* pApp (CMy1_2App*)AfxGetApp();//获得主窗口指针CWnd* pMainWnd pApp->m_pMainW…

【C++ 学习笔记】 MFC CEdit

环境&#xff1a;VS2008 -关联变量 方法一&#xff1a;在控件上右键-变量-CEdit类型变量-输入变量名。 方法二&#xff1a;添加代码 头文件中定义变量CEdit m_edit_fileName;源文件中变量关联DDX_Control(pDX, IDC_FILENAME, m_edit_fileName); -取得文本 取得CEdit中输入文本的…

java log4j 配置_Java:log4j与log4j.properties的配置说明

[来源&#xff1a;Java |作者&#xff1a;Java |时间&#xff1a;2007-7-20 |去论坛]--在强调可重用组件开发的今天&#xff0c;除了自己从头到尾开发一个可重用的日志操作类外&#xff0c;Apache为我们提供了一个强有力的日志操作包-Log4j。Log4j是Apache的一个开放源代码项目…

Linq(03)基础之Orderby group-by

说明&#xff1a;本内容来自微软的MSDN&#xff0c;好记性不如烂笔头&#xff0c;加深印象。 我的心得&#xff1a;开头 Let子句 1) 在查询表达式中&#xff0c;存储子表达式的结果有时很有用&#xff0c;这样可以在随后的子句中使用。 2) 该关键字可以创建一个新的…

linux-tar命令详解

转自&#xff1a;http://www.21andy.com/blog/20060820/389.html linux解压 tar命令 tar命令 tar [-cxtzjvfpPN] 文件与目录 .... 参数&#xff1a; -c &#xff1a;建立一个压缩文件的参数指令(create 的意思)&#xff1b; -x &#xff1a;解开一个压缩文件的参数指令&#xf…

java tcp端口复用_windows server tcp端口重用问题

我们的服务器端和客户端都是windows的Serverclient(192.168.1.11)发送socket连接到windows服务端&#xff0c;windows处理完数据返回报文后就close掉了(server端是java写的)。比如client使用12345端口发送数据到server的7777端口。client收到server的fin包后完成4次挥手后clien…

计算机视觉基础(11)——语义分割和实例分割

前言 在这节课&#xff0c;我们将学习语义分割和实例分割。在语义分割中&#xff0c;我们需要重点掌握语义分割的概念、常用数据集、评价指标&#xff08;IoU&#xff09;以及经典的语义分割方法&#xff08;Deeplab系列&#xff09;&#xff1b;在实例分割中&#xff0c;需要知…

使用vs2010+WCF发布json数据,ExtJS4.0进行调用

花了近一天的时间调试解决&#xff0c;希望对有相同需要的朋友有帮助&#xff1a;1、新建一空网站,添加一个web页面webform1.aspx&#xff0c;添加ExtJs相关引用<link href"ExtJs4.0.7/resources/css/ext-all.css"rel"stylesheet"type"text/css&qu…

mysql的 怎么处理_本人的MySQL连接到底怎么处理才好……

RT&#xff0c;代码本人直接贴了……using MySql.Data.MySqlClient;namespace WindowsFormsApplication1{public class ClassConnect{MySqlConnectionStringBuilder cs new MySqlConnectionStringBuilder();cs.Server “127.0.0.1”;cs.Port 3306;cs.Database “user_syste…

js解密

js解密http://www.cfansblog.com/tools/jsEncode.html转载于:https://www.cnblogs.com/skillCoding/archive/2012/02/03/2336700.html

java qq通信_结对博客(Java通信项目QQ)

项目名称&#xff1a;JAVA通信项目——QQ成员&#xff1a;邢正&#xff0c;郑振兰项目需求&#xff1a;QQ每个人都用过&#xff0c;它的意义就不再讲了。之所以选择做QQ事因为它有挑战性&#xff0c;涉及到通信、传输、swing等各种知识。(好吧我不装逼了&#xff0c;说的直白点…

类的序列化[Serializable]

简介序列化是指将对象实例的状态存储到存储媒体的过程。在此过程中&#xff0c;先将对象的公共字段和私有字段以及类的名称&#xff08;包括类所在的程序集&#xff09;转换为字节流&#xff0c;然后再把字节流写入数据流。在随后对对象进行反序列化时&#xff0c;将创建出与原…

java深度克隆大数据_Java - 深拷贝技巧

先让我描述一下问题&#xff1a;我在某Action(struts2.x)-A中写了一个功能P,以当前用户的某个标识F 1时需要走这个功能,而且这个功能因某些原因已经侵入到了其他一些method中。顺便一提,A中获得当前用户session的method已经被父类封装好了。然后我的代码已经push上去了,第二天…

Android中的Handler, Looper, MessageQueue和Thread

前几天&#xff0c;和同事探讨了一下Android中的消息机制&#xff0c;探究了消息的发送和接收过程以及与线程之间的关系。虽然我们经常使用这些基础的东西&#xff0c;但对于其内部原理的了解&#xff0c;能使我们更加容易、合理地架构系统&#xff0c;并避免一些低级错误。 对…

java平面_java知识点整理

一、http和tcp/ip的区别&#xff1f;http是应用层协议&#xff0c;主要解决如何封装数据。tcp/ip则是传输层协议&#xff0c;主要解决数据如何在网络中传递。web应用使用http协议作为应用层协议来封装成http文本协议&#xff0c;然后使用tcp/ip做传输层协议将信息发布到网络上。…

设计模式—适配器模式

一、概念 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。——Gang of Four Adapter模式的宗旨&#xff1a;保留现有类所提供的服务&#xff0c;向客户提供接口&#xff0c;以满足客户的期望。 对象适配…