在写我对line-height的认识之前,我想每一个人都应该搞清楚下面这个情况。
当给一个空div里面添加文字时,这个div的高度是怎么来的?
也许有很多朋友认为是由font-size决定的,但事实上这个元素的高度是由line-height决定的。下面我们可以通过例子来证明一下这个结论。
情况一:


在这里,我们将元素的font-size设置为30px,同时将line-height设置为0。这个时候通过检查元素看到该div的高度其实是并没有被撑开的,而是0;
情况二:


与上一个相反,我们将元素的line-height设置为30px,同时将font-size设置为0。但是这个时候虽然我们看不到文字,但是div的高度是被撑开了。

经过上面的两个例子,我们就可以得到最开始的结论:空div的高度是由line-height决定的。

接下来我们需要了解的是line-height对于内联元素和块级元素的影响。首先大家都知道内联元素分为替换元素和非替换元素。关于什么是替换元素和非替换元素的问题这里我就不讲解了。

现在我们先来了解line-height对于非替换元素的作用和影响。用一句话总结就是:非替换元素的高度完全由line-height决定。证明的话这里也就不列举了,大家可以自己试试。

下面轮到了替换元素和块级元素。
关于替换元素的高度与line-height的关系首先需要弄明白这个问题:line-height可以影响替换元素吗?答案是:不可以
可能有些朋友会质疑,那我们来看一下面这个例子:


可以看到,select元素的高度并没有因为设置line-height为200px而改变。
对于块级元素,line-height对其本身是没有任何作用的,我们平时改变line-hieght,块级元素的高度跟着变化实际上是通过改变块级元素里面内联级别元素占据的高度实现的。比如开始的例子,实际上块级元素里面内联级别元素就是文字。

接下来,我想在这里给大家讲解一下line-height的继承问题。在讨论中这个问题之前,首先我们需要搞清楚line-height都有哪些属性以及这些属性对应的属性值。

  • 数值:如line-heigth:1.5,其最终的计算值和当前的font-size相乘后的值。例如:假设我们此时的font-size大小是14px,则此时line-height就是1.5*14px = 21px;
  • 百分比值:如line-height:150%,其最终的计算值和当前的font-size相乘后的值。例如:假设我们此时的font-size大小是14px,则此时line-height就是150%*14px = 21px;
  • 长度值:也就是带单位的值,line-heigth:21px或者line-height:1.5em,此处em是一个相对于font-size的相对单位,因此其最终的计算值和当前的font-size相乘后的值。例如:假设我们此时的font-size大小是14px,则此时line-height就是1.5*14px = 21px;
    乍一看,似乎line-height:1.5,line-height:150%以及line-height:1.5em的最终效果都是一样的,但是实际上,line-height:1.5和其他两个市有区别的,那就体现在继承方面上。

  • 如果使用数值作为line-hieght的属性值,那么所有的子元素继承的都是这个值,比如:
    line-height:1.5,那么子元素继承的就是1.5;

  • 如果使用百分比值或者长度值作为属性值,那么所有的子元素都继承的是最终的计算值。比如:line-height:1.5em或者line-height:150%,font-size:14px,那么子元素继承的是1.5*14px = 21px;

最后,在这里我再继续问大家一个问题,具体如下:

此时.box和.box1的高度分别是多少?
正确的答案是:全都是96px!不相信的朋友可以自己亲自试试验证一下。
关于这个问题,也就是说:无论内联元素line-height怎么设置,最终父元素的高度都是由数值大的line-height决定的,我们可以将它称为“内联元素line-height的大值特性”。

对于line-height的认识相关推荐

  1. html中高与行高的区别,深入了解css的行高Line Height属性

    什么是行间距? 古时候我们是用印刷机来处理文字,印出来的每个字都位于独立的一个块里. 行间距,即传说中控制两行文字之间垂直距离的东东. 在CSS,line-height被用来控制行与行之间的垂直距离. ...

  2. 真正的能理解CSS中的line-height,height与line-height

    在最近的项目中,常常用到line-height,只是简单的理解为行高但并没有深层次的理解,致使不能达到信手拈来的感觉.在此做一下总结,一是更深层次的了解什么是line-height,二是比较heigh ...

  3. CSS中的line-height,height与line-height

    在最近的项目中,常常用到line-height,只是简单的理解为行高但并没有深层次的理解,致使不能达到信手拈来的感觉.在此做一下总结,一是更深层次的了解什么是line-height,二是比较heigh ...

  4. DW中CSS属性详解

    作者:未知 来源:5D多媒体       在Dreamweaver的CSS样式里包含了W3C规范定义的所有CSS1的属性,Dreamweaver把这些属性分为Type(类型).Background(背 ...

  5. 微信小程序 加载中 动画效果

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 效果图: 代码: <view class="line"><image s ...

  6. VVeboTableView 源码解析

    原文链接:http://www.jianshu.com/p/78027a3a2c41 最近在看一些 iOS 性能优化的文章,我找到了 VVeboTableView 这个框架.严格来说这个不属于框架,而 ...

  7. 第十次课:前台首页设计及显示商品信息

    一.前台首页设计 0.css样式 @charset "utf-8"; /*全局设置*/ *{  padding:0;  margin:0; } body {  font-size: ...

  8. Java的新项目学成在线笔记-day7(二)

    1.3 前端页面说明 我的课程列表使用element 的card组件,如下: 页面布局代码如下: <template> <section> <el‐row >< ...

  9. 超全超实用的Javascript类库和jQuery插件大全之一:图片,地图和图形

    为什么80%的码农都做不了架构师?>>>    日期:2012-10-10  来源:GBin1.com 如果你需要解决一些开发中遇到的技术问题的话,很可能会找到一些相关的javasc ...

  10. CSS 行内格式化上下文中的各种高度计算

    前言碎碎语:标题问题在昨天困扰了笔者很久很久,早上把问题提到了各网络也暂时没有回复.因为明天要早起飞异地参加一场校招面试,笔者还是很紧张的,但奈何问题不解决寝食难安--所以还是卯起劲重新思考这个问题, ...

最新文章

  1. tensorflow-gpu 常用网址
  2. Java中isAssignableFrom的用法
  3. 【组合数学】集合的排列组合问题示例 ( 排列 | 组合 | 圆排列 | 二项式定理 )
  4. grep 显示搜索的关键字相关的行信息
  5. JS怎样捕获浏览器关闭时间弹出自定义对话框
  6. 从fastjson的TypeReference用法,推导如何实现泛型反射
  7. 运用大数据助力大发展
  8. 为Python IDLE 添加清屏(Ctrl + L )快捷工具(附带解决错误的方法)
  9. android 设备实现定时重启(无root权限或已root)
  10. SwitchHost使用
  11. Linux dstat监控工具简讲
  12. vue常用的事件修饰符
  13. 淘宝大数据,打假新武器
  14. 【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录
  15. photo技能大全,想学ps的来看看
  16. html网页组织结构,使用HTML和CSS编码创建组织结构图
  17. 恒生电子实习记录-7
  18. android开发中如何判断手机中存在的sim卡数量?
  19. 如何使用Metasploit对安卓手机进行控制
  20. Linux下使用Docker做mysql的镜像部署

热门文章

  1. NRF52832 WDT
  2. 5、数码相框之使用多种方法支持多输入
  3. html如何提取素材,如何优雅地提取App的素材
  4. Kafka【ERROR Exiting Kafka】崩溃恢复
  5. 从春招到秋招,一个本科生的求职之路
  6. 网页点名器(移动端、pc端)
  7. openpyxl操作excel 删除行
  8. Java项目中利用钉钉机器人Webhook向钉钉群推送告警通知
  9. 计算机主机通电启动不了,电脑不通电,开机没反应?这里有问题!
  10. 十九、RTC实时时钟