关于CSS:line-height

前言

先上结论:

  • 如果为块级元素设置height则其拥有高度
  • 如果没有为块级元素设置height元素中有文字且为该元素设置line-height则其拥有高度
  • 在第二种情况下文字的水平中线与块级元素的line-height中线是同一条(同一高度)

正文

元素的高度是由什么决定对于我们解决页面显示问题和布局页面都有很大的帮助。
常规的操作表现是为一个块级元素设置height属性,则其拥有了高度:

<style>
  .test {
    border: 1px solid #ccc;
    height: 100px;
    width: 100px;
  }
</style>
<body>
  <div class="test"></div>
</body>

上述代码表现为:


设置height后

但是根据熟知,当我们不为元素设置height,而元素中有内容时,该元素依然获取到了高度:

<style>
  .test {
    border: 1px solid #ccc;
    width: 100px;
  }
</style>
<body>
  <div class="test">1</div>
</body>

直观表现为:


image.png

为什么div获取到了高度,并不是由于文字撑起了高度,而是line-height撑起了div,比较一下两端代码

 .test {
    border: 1px solid #ccc;
    width: 100px;
    line-height: 100px;
  }
</style>
<body>
  <div class="test">1</div>
</body>
line-height为100px
 .test {
    border: 1px solid #ccc;
    width: 100px;
    line-height: 0;
  }
</style>
<body>
  <div class="test">1</div>
</body>

line-height为0

显而易见的结果就是因为有了height所以有高度,没有height则因为有了line-height而有了高度
更多详细的细节其实是因为每一行文字都有一个line boxes,这些一个个盒子自然撑起了父元素的高度

同时,观察上面的例子就能发现文字的中线和line-height的中线是在相同位置的,所以才有了常用的那套居中办法:

<style>
  .test {
    line-height: 100px;
    height: 100px;
  }
</style>

这里再强调一点,以前说

设置line-height和height相同数值则可以使得其中文字垂直居中

从结果来看确实如此,但是这句话不对,这句话多余了几个字,完全不需要设置height,只需要line-height就可以做到文字垂直居中了。
至此,前言三条结论都在本文中做出了解释和观察。

结尾

这篇文章其实是为了 使用原生HTML+JS+CSS实现折线图 做准备的
会是一系列的文章,全部文章内容均为参考张鑫旭博客内容
本篇对应的博客地址为:张鑫旭博客地址

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,826评论 1 92
  • 1. 前言 前端圈有个“梗”:在面试时,问个css的position属性能刷掉一半人,其中不乏工作四五年的同学。在...
    YjWorld阅读 4,584评论 5 15
  • 参考文章:深入了解CSS的line-height属性Vertical-Align: 你需要知道的所有事【译】Ver...
    若邪Y阅读 3,498评论 1 6
  • 时间过的真快,一转眼四周时间都过去了,一起战斗的小伙伴也变换了不少,感觉自己再不努力,也要被淘汰了。 【Step1...
    左右谜底阅读 192评论 0 0
  • 我们班有64个人,在我的印象当中,我换了五次同桌! 第一次是我刚转来,坐在马文博同学的旁边,这位同学可能是和我不熟...
    刘婧_阅读 359评论 2 9