1、line-height的定义

  定义:两行文字基线之间的距离。

  注:不同字体之间的基线是不同的。

2、line-height与行内框盒子模型

  行内框盒子模型:

  ①内容区域(content area),是一种围绕文字看不见的盒子,大小与font-size有关;

    

  ②内联盒子(inline boxes),不会让内容成块显示,而是排成一行。如果外部含inline水平标签,则属于内联盒子;如果是个光秃秃的文字,则属于”匿名内联盒子“;

    

  ③行框盒子(line boxes),每一行就是一个行框盒子,每一个行框盒子又是由一个个内联盒子组成。

    

  ④包含盒子(containing box),由一行行行框盒子组成。

    

3、line-height与内联元素的高度机理

  关于内容区域高度:①内容区域高度只与字体以及字号有关,与line-height没有任何关系;②在simsun字体下,内容区域高度等于文字大小值。

  行的高度不是由于行高造成的。

  因为:①行高由于其继承性,影响无处不在,即使单行文本也不例外;②行高这是幕后黑手,高度表现不是行高,而是内容区域和行间距。

  只不过:

  行间距line-height - font-size

  行间距一般是上下均分的。

  总结:行高决定内联盒子高度;行间距墙头草,可大可小可负值,保证高度正好等同于行高。

4、line-height各类属性值

  line-height:normal/<number>/<lenght>/<percent>/inherit;

  normal:默认属性值。与浏览器和元素字体相关。因此为了让各个浏览器兼容性一致,要初始化line-height。

  <number>:使用数值作为行高值。line-height = number * font-size

  <lenght>:使用具体长度值作为行高值。em/rem/px/pt

  <percent>:使用百分比作为行高值。line-height = percent * font-size

  inherit:行高继承。IE8+

  问题:line-height:1.5/150%/1.5em的区别

  答:计算无差别。1.5所有可继承元素根据font-size重新计算行高;150%/1.5em当前元素根据font-size计算行高,继承给下面的元素。

  

  body全局数值行高使用经验:

    匹配20px使用,为了方便心算:line-height = 20px / 14px = 1.42857

    由于chrome是19px,所以body{font-size:14px;line-height:1.4286;}

5、line-height与图片的表现

  行高不会影响图片实际占据的高度。

  问题:如何消除图片底部间隙?

  

  答:①图片块状化—无基线对齐img{display:block;};①图片底线对齐img{vertical-align:bottom;};③行高足够小-基线位置上移.box{line-height:0;}

6、line-height的实际应用

  (1)大小不固定的图片、多行文字的垂直居中

  

  

  (2)代替height,避免IE6/IE7下的haslayout

  在IE6/IE7下,block元素设置height会破坏block规则,而line-height不会。

  

CSS深入理解学习笔记之line-height的更多相关文章

  1. CSS深入理解学习笔记之absolute

    1.absolute和float 拥有相同的特性表现: ①包裹性(容器应用之后,可以包裹里面的内容): <!doctype html> <html> <head> ...

  2. CSS深入理解学习笔记之float

    1.float的历史 float设计的初衷仅仅是为了文字环绕效果. 示例代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit ...

  3. CSS深入理解学习笔记之margin

    1.margin与容器尺寸 元素尺寸:①可视尺寸 clientWidth(标准):②占据尺寸 margin与可视尺寸:①适用于没有设定width/height的普通block元素:②只适用于水平方向尺 ...

  4. CSS深入理解学习笔记之overflow

    1.Overflow基本属性 overflow:visible(默认)/hidden/scroll/auto/inherit; visible:超出部分可见. hidden:超出部分隐藏. scrol ...

  5. CSS深入理解学习笔记之vertical-align

    1.vertical-align基本认识 支持的属性值: ①线类:baseline(默认),top,middle,bottom ②文本类:text-top,text-bottom ③上标下标类:sub ...

  6. CSS深入理解学习笔记之relative

    1.relative和absolute的相煎关系 限制作用:①限制left/top/right/bottom定位:②限制z-index层级:③限制在overflow下的嚣张气焰. relative和f ...

  7. CSS深入理解学习笔记之z-index

    1.z-index基础 z-index含义:指定了元素及其子元素的"z顺序",而"z顺序"可以决定元素的覆盖顺序.z-index值越大越在上面. z-index ...

  8. CSS深入理解学习笔记之padding

    1.padding与容器尺寸之间的关系 对于block水平元素:①padding值暴走,一定会影响尺寸:②width非auto,padding影响尺寸:③width为auto或box-sizing为b ...

  9. CSS深入理解学习笔记之border

    1.border-width border-width为何不支持百分比:语义和使用场景决定的,现实中各种边框本身的概念就不存在百分比的使用方法. border-width支持关键字:thin.medi ...

随机推荐

  1. 自学Aruba3.1-Aruba配置架构

    点击返回:自学Aruba之路 自学Aruba3.1-Aruba配置架构  WLAN配置架构 1. AP group :    Aruba无线控制器通过AP Group来构建无线网络配置参数模版.并通过 ...

  2. c# winform 视频转字符动画

    以上是大图展示, 原理比较简单,附件下载带了一个分辨率比较小的txt动画.   音乐删除了music.mp3,  如果需要自己下载一首歌曲,然后放在根目录名称“music.mp3”就可以了. 附件点我 ...

  3. java中重载一定在一个类里面吗?

    虽然这些概念在翻译成中文的过程中,有很多不同的翻译方式但本质上只有两种说法,就是Override和Overload其中,Overload一般都被翻译成重载而Override的翻译就乱七八糟了,所谓覆盖 ...

  4. for循环找出2到100的质数(素数)

    思路: 1,一个数只有1和它本身两个因数,这个数叫质数. 2.注意:缩进这里else是for循环这个上下文的. 代码: for num in range(2,100): #为大循环变量num提供2-1 ...

  5. C#设计模式之总结篇

    一.引言     C#版本的23种设计模式已经写完了,现在也到了一个该总结的时候了.说起设计模式,我的话就比较多了.刚开始写代码的时候,有需求就写代码来解决需求,如果有新的需求,或者需求变了,我就想当 ...

  6. 简易安卓APP

    简介 现在来分享期末做的安卓大作业--生活百科. 本项目只是单纯的一个大作业,没有考虑实际的需求,所以有设计不合理的地方,请见谅. 这个项目有三大功能(因为是使用了侧边栏所以是可以继续往里面添加功能的 ...

  7. sublime text3安装、注册及常用插件

    由于换电脑,重装系统等问题,总要重装sublime.每次都要查来查去,不如自己记下来,以后再装也方便. 一.下载 官网下载安装包(http://www.sublimetext.com/) :然后直接点 ...

  8. Linux ssh双向免密认证

    一.实现原理 使用一种被称为"公私钥"认证的方式来进行ssh登录."公私钥"认证方式简单的解释是: 首先在客户端上创建一对公私钥(公钥文件:~/.ssh/id_ ...

  9. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](三)

    前言 上一篇<一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](二)>我们通过如下操作: 创建实体及工具类 创建Re ...

  10. Java与算法之(4) - 数字全排列

    全排列是指n个数(或其他字符)所有可能的排列顺序,例如1 2 3三个数字的全排列是 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 那么问题来了,任意输入一个大于1的数字n,列 ...