css单位我们常用的是px,也即是像素。随着网页开发自适应的要求,css3新增了许多单位,rem、vw和vh、vmin和vmax、ch和ex等。

em

做前端的应该对em不陌生,不是什么罕见的单位,是相对单位,参考物是父元素的font-size,具有继承的特点。如果字体大小是16px(浏览器的默认值),那么 1em = 16px。

不过,这样使用很复杂,很难很好的与px进行对应,因此,前端开发的前辈们总结了一个经验:

body{font-size:62.5%;

}

那么,这样之后 1em = 10px 在布局等使用的时候好换算了很多。

百分比

百分比相信大家更不会陌生了,百分比一般宽泛的讲是相对于父元素,但是并不是十分准确。

1、对于普通定位元素就是我们理解的父元素

2、对于position: absolute;的元素是相对于已定位的父元素(offset parent)

3、对于position: fixed;的元素是相对于 ViewPort。(viewport:可视窗口,也就是浏览器的window那么大。)

rem

rem支持IE9及以上,意思是相对于根元素html(网页),不会像em那样,依赖于父元素的字体大小,而造成混乱。使用起来安全了很多。

html{font-size:62.5%; /**10 ÷ 16 × 100% = 62.5% 1rem = 10px **/}body{1.4rem; *1.4 × 10px = 14px *h1{font-size:2.4rem; *2.4 × 10px = 24px**/}

这样整个网页都会比较统一!不会造成混乱!

rem单位确实好处蛮多的,它是相对于根节点,让我们整个网站单位可以统一。还可以让我们的字体更好的自适应网站的大小。但是,你用过了就知道,它会出现一个问题:

用Chrome浏览器打开你做的网站的时候,有时候会出现字体很大的情况。但是刷新一下页面就好了。

之所以会出现这种情况,原因是因为我们为了计算方便,将原本默认1rem=16px修改1rem=10px。因此,我们在html中通常做了如下设置:

*/}

但是呢,Chrome浏览器有时候会忽略了html的设置。于是在初始化页面的时候,出现了上面字体过大的情况,本来1.6rem应该渲染成16px的字体,却被渲染成了16*1.6=25.6px大小了。

你仔细研究会发现,出现字体过大的“元素”,通常是没有设置font-size的,元素的font-size是继承根目录的,因此,字体会变大。

因此,最佳的一种解决方案是:

在你要展现的文字父级或者其本身设置font-size

第二种解决方案:

我们在页面中添加style样式,给body设置font-size

例如把下面的代码放到 head 里面:

}

>

vh 和 vw

IE10+ 和现代浏览器都支持这两个单位。

vw Viewport宽度, 1vw等于viewport宽度的1%

vh Viewport高度, 1vh等于viewport高的的1%

vw和vh会随着viewport变化自动变化,再也不用js控制全屏了。

甚至有些人丧心病狂的字体大小都用vw和vh控制,来达到字体和viewport大小同步的效果。

vmin和vmax

IE10+ 和现代浏览器都已经支持vmin

webkit浏览器之前不支持vmax,新版已经支持,所有现代浏览器已经支持,但是IE 全部不支持vmax

vmin vw和vh中比较 小 的值

vmax vw和vh中比较 大的值

这两个属性也会随着viewport变化

ch和ex

IE9+ 和现代浏览器都已经支持,这两个单位时根据 当前font-family的相对单位。

ch 字符0的宽度

ex 小写字符x的高度

如图:

当font-family改变的时候这两个单位的值也会变化,不同字体表现的样式不一样。

css3的calc()

浏览器支持IE9+、FF4.0+、Chrome19+、Safari6+

calc()语法非常简单,就像我们小时候学加 (+)、减(-)、乘(*)、除(/)一样,使用数学表达式来表示:

.container{width:calc(expression);

}

例如:

calc(100% - 20px);//注:减号前后要有空格,否则很可能不生效!!}

兼容写法:

width:90%;写给不支持calc()的浏览器*/-moz-calc(100% - (10px + 5px) * 2);-webkit-calc(100% - (10px + 5px) * 2);calc(100% - (10px + 5px) * 2);

}

line-height百分比

line-height百分比在面试中可能经常问到。例如你知道line-height:120%和line-height:1.2的区别吗?

现在就说一下行高带单位和不带单位的区别,例如下面的例子:

line-height:26px; 表示行高为26个像素

line-heigth:120%;表示行高为当前字体大小的120%

line-height:2.6em; 表示行高为当前字体大小的2.6倍

带单位的行高都有继承性,其子元素继承的是计算值,如父元素的字体大小为14px,定义行高line-height:2em;则计算值为 28px,不会因其子元素改变字体尺寸而改变行高。(例如:父元素14px,子元素12px,那么行高就是28px,子元素虽然字体是12px,行高还是父元素的行高)

line-height:2.6;表示行高为当前字体大小的2.6倍

不带单位的行高是直接继承,而不是计算值,如父元素字体尺寸为14px,行高line-height:2;子元素字体为12px,不需要再定义行高,他默认的行高为24px。(例如:子元素12px,他的行高是24px,不会继承父元素的28px)

一个完整的例子:

htmlheadcharset="utf-8"/>

name="description"content=""="keywords"/>

.parent_01font-size14px;line-height150%backgroundgreenpadding10px}.parent_021.5.parent_03.children26pxbackgroundredbodydivclass="parent_01">

="children">行高测试div>

br/><="parent_02"="parent_03">

其中,parent_01,parent_02,parent_03下面的文字效果如图所示:

如上图,结果分析:

parent_01:有百分比的children继承了父级元素14*1.5=21px;

parent_02:没有百分比,不带单位的是自己的1.5倍,也就是26*1.5=39px;

parent_03:带百分比,但是父元素没有设置字体大小,但是父元素继承了浏览器默认的字体大小16px,即时16*1.5=24px

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

html 自适应单位vw,CSS单位em、rem、vh和vw等及CSS3的calc()以及line-height百分比相关推荐

  1. 认识css长度单位 px % em rem vh vw

    目录 长度单位 px % em rem vh.vw 总结 长度单位 在日常的项目开发,在使用css样式进行时布局的时候,我们常常用到px.%.em这三个单位.CSS3开始,浏览器新增加了rem.vh. ...

  2. 移动端页面单位的选择(px em rem)

    移动端页面单位的选择(px em rem) 绝对单位:  px 相对单位:  rem  em em具有继承性  继承自直接父类  所以说在移动端很少用 浏览器默认的字体大小 16px  那么 1em= ...

  3. px,em,rem,vh,vw,vmin,vmax的区别

    css手册中关于font-size是这么介绍的: font-size 值可以是绝对或相对值. 绝对值: 将文本设置为指定的大小 不允许用户在所有浏览器中改变文本大小(不利于可用性) 绝对大小在确定了输 ...

  4. html pc vw过大,细说em/rem/vh/vw与响应式布局

    细说em/rem/vh/vw与响应式布局 一.em,rem的原理与应用场景 CSS单位中的长度单位分为:相对长度.绝对长度,如下表: 引用MDN上的两句话: em:在 font-size 中使用是相对 ...

  5. css px em rem % vw vh vm 区别

    前言 在传统项目开发中,我们只会用到 px.%.em 这几个单位长度,它们可以适用大部分项目的开发,并且拥有较好的兼容性. 而从 css3 开始,浏览器对逻辑单位的支持又提升了新的境界,增加了 rem ...

  6. 前端面试题:px、rem、em、vh、vw、rpx的区别

    px 像素,是相对于显示器屏幕分辨率而言的. em 相对长度单位.相对于当前对象内文本的字体尺寸.会继承父级元素的字体大小. rem 是相对于HTML根元素的字体大小. vh 和vw相对于视口的高度和 ...

  7. css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况

    px:绝对单位,页面按精确像素展示 em:相对单位,基准点为父节点字体的大小,如果自身定义了font-size按自身来计算(浏览器默认字体是16px),整个页面内1em不是一个固定的值. rem:相对 ...

  8. CSS 中px、em、rem、%、vw、vh单位之间的区别详解【全网最全】

    一.px(像素) [绝对单位,页面按精确像素展示] px就是pixel(像素)的缩写,相对长度单位,相对于屏幕分辨率. px表示像素 (计算机屏幕上的一个点:1px = 1/96in),是绝对单位,不 ...

  9. 说说em/px/rem/vh/vw的区别

    一.介绍 传统的项目开发中,我们只会用到px.%.em这几个单位,它可以适用于大部分的项目开发,且拥有比较良好的兼容性 从CSS3开始,浏览器对计量单位的支持又提升到了另外一个境界,新增了rem.vh ...

最新文章

  1. 降低云计算成本的方法总结
  2. javascript 遍历对象
  3. android.xml设置全屏,Android全屏设置的方法总结
  4. 【强化学习】数据科学,从计算到推理
  5. libgdx 学习笔记七 Libgdx模块概述
  6. ulink php,【转载】15款USB数字界面横向评测(对比顶级CD转盘)!多看点!
  7. 快手春晚10亿元红包玩法来了:最高得2020元现金
  8. CCF业务总部和学术交流中心落户苏州相城
  9. 容器中运行Fabric区块链网络
  10. 第一章 数字图像基础
  11. sqlserver 2016 安装
  12. 保持简单----纪念丹尼斯•里奇
  13. 计算机网络16进制地址,计算机内存地址和为什么用16进制?
  14. Bootstrap系列之导航条(Navbar)
  15. [转]performSelector延时调用导致的内存泄露
  16. python locust api_性能测试工具--Locust官方文档(API)解读(全)
  17. 基于vue+element-ui的H5可视化编辑器
  18. 我的未来式计算机歌谱,【我的未来式钢琴谱】我的未来式《爱情公寓》主题曲钢琴谱_中国歌谱大全...
  19. 学鳄鱼,不做恐龙! 学习鳄鱼的生存之道
  20. 【机器视觉】教你选择工业机器人视觉系统!

热门文章

  1. 别在我的坟前哭 脏了我轮回的路
  2. 职场中 你要学习12种动物精神
  3. 数字化转型方法论_50+企业数字化转型、管理的方法论,这本书到底有什么干货?...
  4. 交换机和路由器的区别_秒懂交换机和路由器的功用区别 拷贝
  5. 函数的参数个数是不固定_EXCEL这些序号技巧,你还真不一定都知道
  6. Java使用lambda进行分页,SpringBoot(八):整合mybatis,通用mapper,分页插件,lambda,Logger,junit用法...
  7. 左右布局图文排版设计灵感案例
  8. 电商促销海报设计技巧!
  9. UI线框图模板素材实际应用好帮手
  10. flexsession禁用_flex(替代session过期)用户长时间不操作要求重新登录的处理