[CSS学习] line-height属性讲解

记:本文可以作为张老师在慕课网上讲解课程的学习笔记

定义

line-height:通过查MDN文档可知

对于块级元素,CSS属性line-height指定了元素内部line-boxes的最小高度。对于非替代行内元素,line-height用于计算line box的高度。对于替代行内元素,如button/input等元素,line-height并没有影响。

查CSS参考手册,line-height表示字体最底端与字体内部顶端之间的距离,应该是不准确的。

张老师说:line-height表示两条基线之间的距离

通过MDN的定义可以知道,内联元素的高度是由line-height决定的,并不是由字体大小决定的。

 

高度机理

1. 行高line-height具有继承性,影响无处不在。

2. 高度的表现并不在于行高,而是在于内容区域和行间距。

内容区域高度+行间距=行高

内容区域高度只与字体和字号有关系

 

取值

line-height的取值有四种类型:normal  <number>  <length>  <percentage>

normal取决于user-agent,与font-family有关系。一般情况下都会在reset.css里面重置line-height

<number>无单位数字,实际计算值=number*字体大小,首选方法。

<length>用于计算line box的高度

<percentage>与元素自身的字体大小有关,实际计算值=percentage*元素计算出的字体大小

inherit行高继承,input等元素默认行高值为normal, 通过使用inherit可以让文本框样式的可控性更强

细微差别

line-height=<number>所有可继承元素根据font-size重新计算行高

line-height=<percentage>/<length>当前元素根据font-size计算行高后继承给子元素

 

line-height与图片的那些事儿

如果消除图片底部间隙的方法:

1. 图片块状化,这样就没有基线对齐

2. 图片设置底线对齐,默认图片和文字是基线对齐baseline

3. 设置足够小的行高使得基线位置上移 line-height: 0;

应用:

1. 小图片,大文字(图片和文字中线对齐)

保留图片的inline特性,设置文字的字体大小及行高,同时设置图片的vertical-align特性来实现某些效果

如img{vertical-align: bottom;}图片和文字保持底部对齐

img{vertical-align: middle;}图片和文字保持中线对齐

 

2. 大小不固定的图片,多行文字垂直居中

a. 图片的水平居中:

图片外部容器设置 {line-height: <length>; text-align:center; }

img{ vertical-align:middle;} 图片近视居中,细微之处在于,有隐藏的文本,所以偏差与字体和字号有关。

 

b. 多行文本水平垂直居中

设置外部容器{ line-height, text-align:center;}

内部文本标签需要修改display转换成和图片一样inline-block,同时重置外部继承的text-align和line-height属性值{text-align:left; vertical-align:middle;}

必要时设置max-width:100%;

posted @ 2016-11-20 00:23  小碎石  阅读(3577)  评论(0编辑  收藏  举报