CSS的单位及css3的calc()及line-height百分比

 说在前面的话

 
阳历2014年已经离我们远去,2015年接踵而来。祝大家新年快乐!在新的一年,我将有新的蜕变!这是2015年的第一篇文章,写一篇关于css的单位的文章吧!
 
单位介绍
 
说到css的单位,大家应该首先想到的是px,也就是像素,我们在网页布局中一般都是用px,但是近年来自适应网页布局越来越多,em和百分比也经常用到了。然后随着手机的流行,web app和hybrid app的开发,都用到了css3技术,在css3中,新增了许多单位,rem、vw和vh、vmin和vmax、ch和ex等等,那现在对这些单位分别做一下详细的介绍吧。


em
 
做前端的应该对em不陌生,不是什么罕见的单位,是相对单位,参考物是父元素的font-size,具有继承的特点。如果字体大小是16px(浏览器的默认值),那么 1em = 16px。
 
不过,这样使用很复杂,很难很好的与px进行对应,因此,前端开发的前辈们总结了一个经验
 


  1. body { 
  2. font-size: 62.5%; 

那么,这样之后 1em = 10px 在布局等使用的时候好换算了很多。
 
百分比
 
百分比相信大家更不会陌生了,百分比一般宽泛的讲是相对于父元素,但是并不是十分准确。
 
1、对于普通定位元素就是我们理解的父元素
2、对于position: absolute;的元素是相对于已定位的父元素(offset parent)
3、对于position: fixed;的元素是相对于 ViewPort
viewport:可视窗口,也就是浏览器的window那么大。
 
例外情况
 
1、使用了padding、margin 等,实际百分比和你想要的百分比是有区别的。(关于这个,解决方法之一,就是我们可以使用css3的calc()属性,具体,您请继续往下看,在文章最后我会解释。)
2、line-height百分比的一些情况,通常结果是百分比 计算后的值。(关于这个,您请继续往下看。。。)
 
rem
 
rem支持IE9及以上,意思是相对于根元素html(网页),不会像em那样,依赖于父元素的字体大小,而造成混乱。使用起来安全了很多。
 
html {font-size: 62.5%; /**10 ÷ 16 × 100% = 62.5%    1rem = 10px   **/}   
body {font-size: 1.4rem; /**1.4 × 10px = 14px **/}
h1 { font-size: 2.4rem; /**2.4 × 10px = 24px**/}
这样整个网页都会比较统一!不会造成混乱!
 
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的高度
如下图:
 
enter image description here
 
当font-family改变的时候这两个单位的值也会变化,不同字体表现的样式不一样。
 
css3的calc()
 
上面我们已经提到了calc(),下面我们就具体说一说吧!
 
浏览器支持IE9+、FF4.0+、Chrome19+、Safari6+
 
calc()语法非常简单,就像我们小时候学加 (+)、减(-)、乘(*)、除(/)一样,使用数学表达式来表示:

 


  1. .haorooms { 
  2.   width: calc(expression); 

这样padding和margin和百分比一起用,问题就可以解决了。
 
例如,我们margin是20px。那么我们就可以写成
 


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

也可以这么用:
 


  1. .box { 
  2.     background: #f60; 
  3.     height: 50px; 
  4.     padding: 10px; 
  5.     border: 5px solid green; 
  6.      width: 90%;/*写给不支持calc()的浏览器*/ 
  7.     width:-moz-calc(100% - (10px + 5px) * 2); 
  8.     width:-webkit-calc(100% - (10px + 5px) * 2); 
  9.     width: 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,子元素虽然字体是12,行高还是父元素的行高)

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

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索字体
, viewport布局
, line-height
, 百分比
, 元素
, 单位
支持
css3 calc height、css3 height 百分比、css3 line height、line height 百分比、css calc height,以便于您获取更多的相关知识。

时间: 2024-10-02 01:23:27

CSS的单位及css3的calc()及line-height百分比的相关文章

CSS的未来:鲜为人知的CSS 2.1和CSS3属性

文章简介:最伟大的财富隐藏在Webkit的下面,而且在iPhone.iPad和Android apps的时代,开始了解它们会灰常有用.就连Firefox等使用的Gecko引擎,也提供了一些独特的属性.在本文中,我们将看一下鲜为人知的CSS 2.1和CSS3属性以及它们在现代浏览器中的支持情况. 原文:CSS的未来:一些试验性CSS属性译自:The Future Of CSS: Experimental CSS Properties请尊重版权,转载请注明来源,多谢! 尽管现代浏览器已经支持了众多的

css中单位px和em,rem的区别

  px像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的. em是相对长度单位.相对于当前对象内文本的字体尺寸.如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸. 任意浏览器的默认字体高都是16px.所有未经调整的浏览器都符合: 1em=16px.那么12px=0.75em,10px=0.625em.为了简化font-size的换算,需要在css中的body选择器中声明 Font-size=62.5%,这就使em值变为 16px*62.5%=10px,

CSS网页制作教程:CSS文字单位PX、EM、PT

文章简介:但是12px汉字例外,就是由以上方法得到的12px(1.2em)大小的汉字在IE中并不等于直接用12px定义的字体大小,而是稍大一点.这个问题 Jorux已经解决,只需在body选择器中把62.5%换成63%就能正常显示了.原因可能是IE处理汉字时,对于浮点的取值精确度有限.不知道有没有 其 这里引用的是Jorux的"95%的中国网站需要重写CSS"的文章, 题目有点吓人,但是确实是现在国内网页制作方面的一些缺陷.我一直也搞不清楚px与em之间的关系和特点,看过以后确实收获很

CSS实例教程:使用CSS3实现实现文字渐变方法

文章简介:我们有发表过CSS文字渐变效果,但是其实那并不是纯粹的基于CSS的渐变,它需要一张半透明渐变的png图片.今天我们将介绍两种使用CSS3实现实现文字的方法. 之前,我们有发表过CSS文字渐变效果,但是其实那并不是纯粹的基于CSS的渐变,它需要一张半透明渐变的png图片.今天我们将介绍两种使用CSS3实现实现文字的方法.嗯,只有webkit浏览器支持,请暂时无视其它浏览器. 1.-webkit-mask 在<CSS的未来:一些试验性CSS属性>中,我们提到了这个属性,相对于Firefo

CSS教程:与众不同的CSS3技巧

你们中有许多人可能已经听到过有关CSS3的不少传言,但是我们现在能真正用到的CSS3技巧又有哪些呢?本文,我将向你展示一些与众不同的CSS3技巧,这些技巧在一些主要的浏览器中表现良好(如Firefox,Chrome,Safari,Opera浏览器).这些效果会在不支持的浏览器中降级渲染(如IE浏览器).使用浏览器特定的声明,许多提议的CSS3样式都可以马上拿来使用. 如果你不知道浏览器的特定声明是什么,你只需要记住它们都是CSS样式属性前与内核提供商有关的特定前缀.因为CSS3目前还没得到全面的

css中单位px和em的区别

px像素(pixel)相对长度单位是相对于显示器屏幕分辨率而言的(引自css教程2.0手册). em相对长度单位是相对于当前对象内文本的字体尺寸而言的,如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸(引自css2.0手册). 任意浏览器的默认字体高都是16px.所有未经调整的浏览器都符合: 1em=16px.那么12px=0.75em.10px=0.625em.为了简化font-size的换算,需要在css中的body选择器中声明font-size=62.5%,这就使em值

css中单位em和rem

一.介绍 1.em w3cschool中给出css中尺寸单位如下: 单位 描述 % 百分比 in 英寸 cm 厘米 mm 毫米 em 1em 等于当前的字体尺寸. 2em 等于当前字体尺寸的两倍. 例如,如果某元素以 12pt 显示,那么 2em 是24pt. 在 CSS 中,em 是非常有用的单位,因为它可以自动适应用户所使用的字体. ex 一个 ex 是一个字体的 x-height. (x-height 通常是字体尺寸的一半.) pt 磅 (1 pt 等于 1/72 英寸) pc 12 点活

css在不同浏览器中的唯一标识以height属性为例

不同浏览器都有自己独特的css标识,下面为大家整理了一些主流浏览器的css唯一标示,喜欢研究浏览器兼容性的朋友可以参考下,希望对大家学习前端有所帮助     复制代码 代码如下: height:73px; /*正常浏览器*/ [;height:50px;] /* chrome */ -moz-height:73px; /*firefox*/ _height:73px; /*IE6*/ *height:73px; /*IE7*/ height:73px9; /*IE8*/

css3 calc()功能小窥

之前,我们想要实现一个完美的宽度自适应的输入框好麻烦,曾经也被作为对前端技术的一个挑战.类似的常见场景还有100%宽+边框的容器等.遇到这些情况,我们不得不分外小心,因为各个浏览器的表现可能不一致. 现在,firefox和webkit相继支持calc()功能了,我们也可以学习下了. calc()是干嘛的? calc()是单词calculate(计算)的缩写,是css3的一个新的长度单位功能,可以使用简单的数学运算. 嗯,CSS3越来越高级了. 运算规则 calc()使用通用的数学运算规则,但是也