line-height定义
行高,两行文字基线之间的距离
基线:字母x的下边缘的位置
line-height与行内框盒子模型
<p>这是一行普通的文字,这里有个<em>em</em>标签。</p>
上面的代码包含的盒子:
- 内容盒子(content area)
- 内联盒子(inline boxes)
- 行框盒子(line boxes)
- 包含盒子(containing box)
line-height的高度机理
内联元素的高度是有line-height决定的
- 行高由于其继承性,影响无处不在,即使单行文本也不例外
- 行高是幕后黑手,高度的表现不是行高,而是内容区域和行间距
行高 = 内容区域高度+行间距(line-height = content area+vertical spacing)
(1)内容区域高度只与字号和字体有关,与line-height没有任何关系
(2)在simsun(宋体)下,内容区域高度等于文字大小
在simsun字体下 font-size+行间距=line-height
line-height的属性值
- 默认属性 normal 与浏览器及字体有关
- 数值,根绝当前元素的font-size计算。如当前元素font-size为36,line-height为1.5,则实际行高像素为1.5*36
- <length>
- <percent>
- inherit
line-height:1.5,line-height:150%,line-height:1.5em有什么区别?
计算上没有差别。应用元素有差别
- line-height:1.5所有可继承元素根据font-size重计算行高。
- line-height:150%/1.5em 当前元素根绝font-size计算行高,继承给下面的元素。
line-height与图片的表现
行高会不会影响图片实际占用的尺寸?
不会!!
消除图片底部间隙的方法
- 图片块状化-无基线对齐
- font-size设为0
- 图片底线对齐
- 行高足够小-基线位置上移如设为0
小图片和大文字
基本上高度受行高控制
剩下的就是图文的vertical-align垂直对齐了
行高的实际应用
大小不固定的图片、多行文字的垂直居中
.box{line-height:300px;text-align:center;font-size:0px;} .box>img{vertical-align:middile;} //ie8及其以上支持
多行文本水平垂直居中
.box{line-height:300px;text-align:center;font-size:0px;} .box>.text{display:inline-block;line-height:normal;vertical-align:middile;text-align:left;max-width:100%;}
- 代替height避免ie6/7下的haslayout(冲破容器限制)