浅谈line-height
基础知识
有4种模型,分别是
块,块盒模型 containing boxing,包括line
行内盒模型 inline boxing ,包含content
行模型 line boxing,包含inline,line高度是由最高的inline元素决定.
内容区域 content area
这部分内容可以着重看 这里有详细的介绍。
line-height与line boxes高度
由上面的内容可以总结出line boxes 的高度取决与其下属的inline boxes 中最高的元素。
对于像input这样的元素,在不同浏览器上line-height属性表现是不同,参考Line-Height Doesn’t Work As Expected On Inputs
垂直居中的特性
行高还有一个特性,叫做垂直居中性。line-height的最终表现是通过line boxes实现的,而无论line boxes所占据的高度是多少(无论比文字大还是比文字小),其占据的空间都是与文字内容公用水平中垂线的。 ----张鑫旭的博文
我们经常看到一种垂直居中的方法,那就是让height和line-height 相同
text-vertical{ height:30px; line-height:30px;}
其实在这里起作用的是line-height , 只要设置好了line-height ,在不设置height 的情况下一个div 的高度就是他的line-height 的值
结果如图:在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.wrap 的 line-height 计算结果是 20px*150% = 24px;
内部的h1标签和 p标签的通过继承得到 line-height:150% 然后最后的结果仍然是24px
在line-height采用百分比的情况下,line-height的最终值h就是当前line-height乘以这个百分比计算得出.并且这个值会继承下去,后代的元素继承得到的值也是h
line-height纯数值
外层的 div.wrap-line-height-number 的 line-height 计算结果是 30px*1.5 = 45px;
内部的h1标签和 p标签的通过继承得到 line-height:1.5
h1的line-height是 16px*1.5 = 24px
p 的line-height是 12px*1.5 = 16px
可以把line-height采用数值形式当作一种倍数的继承, 后代的元素都会继承这个倍数,并受这几数值的影响,得到最后的值
line-height与vertical-align关系(有空再写)
总结
4种box模型以及各自的含义
line-height与line box的关系
文字垂直居中
line-height赋值形式采用数值或者是百分比时各自的代表的含义
参考
深入了解css的行高Line Height属性——沁园春
css行高line-height的一些深入理解及应用——张鑫旭
关键字:html5, css, html, line
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!