关于css中的长度单位,我们用的最多就是px,因为他简单直接。但是当一套方案匹配不同终端时,px就会显得过于生硬,不容易变通。

  然而rem,em,vh,vw就可以有效的解决这一问题。让我们来看看这些东西是个啥?

  首先是rem,W3C官网描述是“font size of the root element”,即rem是相对于根元素。概念不好理解接咋们就直接直接看demo:

DOM结构如下:

CSS 代码如下:

效果如下:

  

      现在对于rem是否有了点认识,设置html的font-size大小后,就有了参照值,其他地方的px就可以替换成rem了,就像demo所展示的html的font-size大小为16px,div中的字体大写分别为1rem,1.5rem,2rem。换算成px就分别分 1* 16=16px,1.5*16=24px,2*16=32px。不仅仅是字体大小,html所有元素的宽高也可以写成rem为单位,同样是参照html的font-size的值。再扩展一下就是说所文档中所有的可以使用px表示的都可以替换成rem。

  那么这么做的意义又是什么呢?当你需要做相应式布局时,rem就能发挥其正真的威力。通过匹配不同的设配的屏幕大小,设置其html的font-size的值,然后就可以放心大胆的使用rem,其他的就可以交给浏览器处理了。

em,vh,vw原理大同小异。不同的是参考点不一样,em参考的父节点的font-size的大小,即当父节点的fong-size为12px,子节点设置宽度为10em,font-size为2em,则宽度换算成px是12*10=120px,字体大小为12*2=24px,若孙节点的高度设置10em,那么换算成px又是多少呢? 当然是父节点的fong-size值24px乘10em,结果为240px,所以em永远只关心上一级的font-size。那么问题来了,上一级没有设置font-size怎么办?不要慌,元素的font-size默认继承父节点的font-size值。这下是不是就对em了然于胸了。

  接下来是vh和vw。看着简写你可能看不出什么东西。我们展开看看 vh:viewport height,vw:viewport width 。viewport叫做可视区域。这下是不是就感觉明白了vh和vw。没错就是你想的那样,vh和vw分别参照可视区域的高度和宽度。

  所以这些单位都是相对的,只要知道参考点,那么就很简单了。目前我所做的项目中,都是统一使用的rem 做的适配,方便有效,谁用谁知道!

  作为一个新人,欢迎大家指导批评。

CSS 中的rem,em,vh,vw一次说清楚的更多相关文章

  1. css中px,em和rem的区别

    css中px,em和rem的区别 今天,突然间发现一个特别有意思的问题,就是无意间看到一个网站中的em并不是16px,下面展开了对于px和em以及rem的探究. 首先,px是绝对长度单位,是相对于显示 ...

  2. CSS中强大的EM

    (转)作者:dearjohn ,发布于2012-7-31 http://www.uml.org.cn/html/201207311.asp 使用CSS也好久了,但一直都是在使用“px”来设置Web元素 ...

  3. CSS中强大的EM(转)

    转自:https://www.w3cplus.com/css/px-to-em CSS中强大的EM 作者:大漠 日期:2011-10-27 点击:97370 em 长度单位 编辑推荐:3月31日前,点 ...

  4. css中单位px,em,rem和vh/vw的理解

    >px像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的. em是相对长度单位.相对于当前对象内文本的字体尺寸.如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认 ...

  5. CSS各种度量单位----px、em、%、rem、vh/vw、vmin/vmax

    本文主要讲下CSS中各类度量单位的意思和区别. 开发中最常用到的css单位是px.em.%.随着css3的出现,带来了更多的度量单位,这些单位为响应式开发,带来很大的好处.各种单位的浏览器兼容性可以去 ...

  6. CSS中的 REM PX EM

    px像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的 em是相对长度单位.相对于当前对象内文本的字体尺寸.如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸. ...

  7. CSS中px,em,rem,pt的区别及四者换算?

    本文章重要说明px,em,rem,pt的区别以及四者之间的换算. em单位有如下特点 1. em的值并不是固定的; 2. em会继承父级元素的字体大小. 我们在写CSS的时候如果要用em为单位,需要注 ...

  8. CSS中px和em属性的特点与区别

    详解px和em的特点和区别象素px是我们在定义CSS中经常用到的尺寸大小单位,而em在国外网站中经常被使用,px和em之间究竟有什么区别和特点呢?◆px像素(Pixel),相对长度单位.像素px是相对 ...

  9. 了解css中px、em、rem的区别并使用Flexible实现vue移动端的适配

    本人java菜鸟一名,若有错误,还请见谅. 1.px和em和rem的定义和区别 px:px像素,是相对单位,相对于屏幕的分辨率而言,也就是说,当屏幕的分辨率不同那么px相同,实际看到的大小也会不同. ...

随机推荐

  1. Java集合类小结-思维导图

    java集合类分为collection 和 map两类Collection List ArrayList LibnkedList Vector Set HashSet TreeSet LinkedHa ...

  2. java 线程之executors线程池

    一.线程池的作用 平时的业务中,如果要使用多线程,那么我们会在业务开始前创建线程,业务结束后,销毁线程.但是对于业务来说,线程的创建和销毁是与业务本身无关的,只关心线程所执行的任务.因此希望把尽可能多 ...

  3. (转)Linux服务器安装配置tomcat

    这里首先说明下,Linux下的Tomcat没有32位和64位的区分. tomcat是分windows版本与linux版本的,windows版本一般以exe或者zip格式:linux版本一般以tar.g ...

  4. Objective-c 多线程操作 自定义NSOperation 模拟下载

    写在前面 使用多线程下载图片,使用内存缓存和磁盘缓存. 这里只为理解NSOperation及其派生类 真要应用到APP中 请下载成熟的第三方库 效果 下载多张图片时可控制线程并发数 分析 自定义NSO ...

  5. 【ES6】变量的解构赋值

    1. 数组 var [a, b, c] = [1, 2, 3]; let [a, [b], d] = [1, [2, 3], 4]; 默认值生效的条件是,对象的属性值严格等于undefined. [x ...

  6. 【HTML】html5新属性-datalist

    摘要: 为实现输入域自动填充的效果 方法一: jquery-ui的autocomplete方法, 不是jquery 自带的方法. 方法二: 采用html5新特性,datalist,例子如下:坏处很明显 ...

  7. matrix()方法与translate()、scale()、rotate()、skew()方法的关系

    2D变换方法translate().scale().rotate().skew()与matrix()的关系举例介绍. 一.介绍 2D变换方法: translate():根据左(X轴)和顶部(Y轴)位置 ...

  8. dpkg和perl的依赖环境出现错误故障解决(磁盘原因)

    内核: uname -a Linux localhost.localdomain 3.4.29-t4 #12 Wed Mar 13 16:50:15 EST 2013 armv7l armv7l ar ...

  9. helpers.bulk时 action_request_validation_exception 异常

    语言Python 在开发时,批量插入ES,出现了action_request_validation_exception异常.我的代码是这样的 action = { } helpers.bulk(es, ...

  10. 使用CHCA搭建静态博客

    [toc] chca是一个使用golang开发的静态博客生成器,简单.方便.快捷,抛弃每次都需要使用命令编译文件,采用文件监听方式编译,作者只需把markdown文件放到配置中的markdown文件夹 ...