浅谈line-height

#基础知识css

有4种模型,分别是html

  • 块,块盒模型 containing boxing,包括line
  • 行内盒模型 inline boxing ,包含content
  • 行模型 line boxing,包含inline,line高度是由最高的inline元素决定.
  • 内容区域 content area

这部份内容能够着重看 这里有详细的介绍。web

##line-height与line boxes高度chrome

由上面的内容能够总结出line boxes 的高度取决与其下属的inline boxes 中最高的元素。浏览器

对于像input这样的元素,在不一样浏览器上line-height属性表现是不一样,参考Line-Height Doesn’t Work As Expected On Inputswordpress

##垂直居中的特性测试

行高还有一个特性,叫作垂直居中性。line-height的最终表现是经过line boxes实现的,而不管line boxes所占据的高度是多少(不管比文字大仍是比文字小),其占据的空间都是与文字内容公用水平中垂线的。 ----张鑫旭的博文code

咱们常常看到一种垂直居中的方法,那就是让heightline-height 相同orm

text-vertical{
    	height:30px;
    	line-height:30px;
    }

其实在这里起做用的是line-height , 只要设置好了line-height ,在不设置height 的状况下一个div 的高度就是他的line-height 的值htm

结果如图:在chrome的测试下

line-height与line boxes高度 by wangjojo (@wweggplant) on CodePen.

##多行文字垂直居中

在看了张鑫旭大神的博文后, 发现不使用最后的i标签也是能够作到垂直居中的,多是他当时写那篇文章的时间过久,浏览器的更新问题等, 在最新版本的测试下,没必要使用i标签,只使用line-height 就能解决问题,若是发现旧浏览器不支持,能够采用他博客中提到的方法.

多行文字居中,添加i方式 by wangjojo (@wweggplant) on CodePen.

##行高在文章中的应用

line-height赋值方式px/em、百分值、normal、数值、inherit继承。px/em和inherit没什么好说的, normal与数值1.2等价 ,因此下面重点说说百分比和数值两种赋值方式的区别.

line-height百分比

line-height百分比赋值的结果是当前line-height的值乘以这个百分比数值获得的.demo以下:

line-height赋值方式 by wangjojo (@wweggplant) on CodePen.

外层的 div.wrapline-height 计算结果是 20px*150% = 24px; 2016-07-06131603.png

内部的h1标签和 p标签的经过继承获得 line-height:150% 而后最后的结果仍然是24px 2016-07-06132005.png2016-07-06132121.png

line-height采用百分比的状况下,line-height的最终值h就是当前line-height乘以这个百分比计算得出.而且这个值会继承下去,后代的元素继承获得的值也是h

line-height纯数值

外层的 div.wrap-line-height-numberline-height 计算结果是 30px*1.5 = 45px;

2016-07-06134612.png

内部的h1标签和 p标签的经过继承获得 line-height:1.5

2016-07-06134649.png h1line-height16px*1.5 = 24px

2016-07-06134745.png pline-height12px*1.5 = 16px

能够把line-height采用数值形式看成一种倍数的继承, 后代的元素都会继承这个倍数,并受这几数值的影响,获得最后的值

line-height与vertical-align关系(有空再写)

总结

  1. 4种box模型以及各自的含义
  2. line-heightline box的关系
  3. 文字垂直居中
  4. line-height赋值形式采用数值或者是百分比时各自的表明的含义

参考

相关文章
相关标签/搜索