px(pixel)像素
相信大家对像素这个名词并不陌生,接下来来介绍下这个单位的一些小知识点:
pixel 是 picture(图片)和element(元素)这两个词组成的.pixel不是绝对的自然长度单位,例如同样1 px的尺寸在不同设备上的"自然长度"是不一样的.当你放大一个图片后会发现图片是由一个个小方块组成,每个小方块就是1px,放大的程度越大1px的自然长度越大. 因此同样的一个自然长度的图片里面包含的像素越多,这个图片就越清晰.
em
相对于当前对象内文本的字体尺寸.也可以理解为是一个百分比单位, 1em=100%.那么来介绍下在css样式中em呈现的是什么样的效果吧:
如果当前子元素没有设置字体大小(浏览器默认字体大小为16px),那么子元素设置字体大小:font-size:1em;
,这时候子元素的字体大小就为父元素的100% x 16px= 16px; 以此类推,font-size:1.5em;
,子元素字体大小就为24px;
p{ font-size:1.5em; } div{ font-size:1.5em; } <div> <p> 字体大小 </p> </div>
这里的 "字体大小"就是1.5 x 1.5 x 16=36px
父元素的字体大小会继承给子元素,但是继承的是px值,不是em的值.怎么理解呢?
body{2em}
<body> <div> <p></p> </div> </body>
那么body里面的子元素div 和 p 都是32px(不叠加)
rem
虽然同样是相对于字体大小的百分比,与em相似,但是参照对象不同.rem的参照对象不是父元素,因此无论父元素如何变化当前设置rem的元素字体大小并不会有响应.
rem是相对于根元素(也就是html)值改变的.当我们书写html文档时,head和body 都是被<html></html>标签包裹的.
在css样式中我们同样可以更改html的font-size
html{ font-size:10px; } div{ font-size:2rem; }
此时,div的字体大小是20px;
在css样式中line-height直接书写数字
对于font-size
来说 这种做法是错误的,并不会响应.
但是line-height
除了有以上的单位设置以外,还可以不设置单位,直接书写数字.
在line-height中em 同样是相对于当前字体大小的一个比例,并且继承的是px固定值,子元素不会继承em的值.
但是line-height:2;
是可以继承的, 子元素继承这个后, line-height值是当前字体大小的两倍.
总结