你可能没注意的CSS单位
2016-03-23 16:17
579 查看
扶今追昔
CSS中的单位我们经常用到px、
pt、
em、
百分比,px和pt不用多说
em
em是相对单位,参考物是父元素的font-size,具有继承的特点
如果字体大小是16px(浏览器的默认值),那么
1em = 16px
这样使用换算很复杂,尤其是和px对应,大家总结出了经验
body {
font-size: 62.5%;
}
这样之后
1em = 10px在布局等使用的时候好换算了很多
百分比
百分比也是很常见的用法,看似简单其实有些初学者可能注意不到的知识
相对于谁
首先要明确百分比是相对于谁,宽泛的讲是父元素,但是并不是十分准确对于普通定位元素就是我们理解的父元素
对于
position: absolute;的元素是相对于已定位的父元素(offset parent)
对于
position: fixed;的元素是相对于 ViewPort
viewport:可视窗口,也就是浏览器的window那么大
意外
padding、margin 如果设置了百分比,会发现左右和预期一样,用的父元素宽度的百分比,但是用的也是 ** 宽度 ** 百分比,而不是想象中的高度的百分比后代元素继承的是百分比 计算后的值 ,而不是原百分比,这个对于
line-height的时候经常会遇到坑,还有这样的面试题问你
line-height设置为
120%和
1.2的区别
CSS3开启新时代
rem
em是个很不错的单位,但是有个问题就是可能会带来混乱,因为em依赖于父元素的字体大小,各个元素父元素的字体尺寸不一定一样,会带来布局上很大的不确定性remfont
size of the root element
rem相对于根元素
html(网页),这样使用起来就安全了很多
html {font-size: 62.5%; /10 ÷ 16 × 100% = 62.5%/}
body {font-size: 1.4rem; /1.4 × 10px = 14px /}
h1 { font-size: 2.4rem; /2.4 × 10px = 24px/}
IE9+ 和现代浏览器都已经支持了
vw和vh
vwViewport宽度,
** 1vw ** 等于viewport宽度的1%
vhViewport高度,
** 1vh ** 等于viewport高的的1%
vw和vh会随着viewport变化自动变化,再也不用js控制全屏神马的了
甚至有些人丧心病狂的字体大小都用vw和vh控制,来达到字体和viewport大小同步的效果
IE10+ 和现代浏览器都支持这两个单位
vmin和vmax
这两个单位是针对vw和vhvminvw和vh中比较
** 小 ** 的值
vmaxvw和vh中比较
** 大 ** 的值
这两个属性也会随着viewport变化
IE10+ 和现代浏览器都已经支持vmin
webkit浏览器之前不支持vmax,现在已经支持,所有现代浏览器已经支持,但是IE ** 全部 ** 不支持vmax
ch和ex
这两个单位时根据 ** 当前font-family**
的相对单位
ch字符
0的宽度
ex小写字符
x的高度
当
font-family改变的时候这两个单位的值也会变化,不同字体表现的样式不一样
IE9+ 和现代浏览器都已经支持
浏览器兼容性
写的时候介绍了一些,大神写了测试页面可以帮我们直观的看到http://s.codepen.io/chriscoyier/fullgrid/CiwFD?type=embed&safe=true
<iframe height="680" width="100%" src="http://s.codepen.io/chriscoyier/fullgrid/CiwFD?type=embed&safe=true">
参考
7 CSS Units You Might Not Know AboutCSS的长度单位
你可能不知道的7个CSS单位
相关文章推荐
- Web布局连载——两栏固定布局(五)
- [div+css]晒晒最新制作专题推广页模板
- 盒子模型
- CSS选择器
- CSS样式优先权
- [css] line-height 百分比单位和数值单位的区别
- Apple官网研究之使用Justify布局导航
- 设计更快的网页(三):字体和 CSS 调整
- 纯CSS制作的新闻网站中的文章列表
- 10条影响CSS渲染速度的写法与使用建议第1/3页
- BS项目中的CSS架构_仅加载自己需要的CSS
- 很不错的 CSS Hack 又学了一招
- 发一个css比较清爽的写法
- CSS expression控制图片自动缩放效果代码[兼容 IE,Firefox]
- css布局网页水平居中常用方法
- CSS经典技巧十则第1/2页
- css 兼容性问题this.style.cursor=''hand''
- IE6不能正常解析CSS文件问题的解决方法及原因分析
- 欲练CSS ,必先解决IE的一些细节分析
- CSS文字截取功能实现代码