《CSS世界》学习篇--D1

169 阅读3分钟

page-119(line-height)

为什么line-height可以让内联元素“垂直居中”?
误区:
  1. 要让单行文字垂直居中,只需要line-height这个属性就可以,与height一点儿关系都没有。(无需设置line-height大小和height一样);
  2. 行高控制文字垂直居中,不仅适用于单行,多行也是可以得。line-height可以让单行或者多行元素近似垂直居中。文字字形的垂直居中位置普遍要比真正的“行框盒子”的垂直中线位置低。多行文本或者替换元素的垂直居中实现原理和单行文本不一样,需要line-height属性的好朋友vertical-align属性帮助才可以。
line-height的各类属性值?100%/1.5/20px
(line-height*font-size)/2=上下行距

如果使用数值作为line-height的属性值,那么所有的子元素继承的都是这个值;但是,如果使用百分比值或者长度值作为属性值,那么所有的子元素继承的事最终的计算值。(ps:行高值一定不要向下舍入,而要向上舍入)

内敛元素line-height的“大值特性”

无论内联元素line-height如何设置,最终父级元素的高度都是由数值大的那个line-height决定的。内联元素是支持line-height的元素上的line-height也确实覆盖了.box元素,但是,在内联盒模型中,存在“幽灵空白节点”。只要有“内联盒子”在,就一定会有“行框盒子”,就是每一行内联元素外面包裹的一层看不见的盒子。然后,在每个“行框盒子”前面有一个宽度为0的具有该元素的字体和行高属性的看不见的“幽灵空白节点”。行框盒子的高度是由高度最高的那个“内联盒子”决定的,给行框盒子设置更大的值,则“幽灵空白点”则会用这个值撑起来,如果是内联元素设置更大的值,行框盒子会被内联元素的行高值撑起来。故无论是给内联元素还是行框盒子设置更大的行高,都会最终展示最大的行高。

page-127(vertical-align)

属性值:
  1. 线类,如baseline、top
  2. 文本类,如text-top
  3. 上标下标类,如sub
  4. 数值百分比类,如20px、2em、20%
vertical-align的数值属性值优点:
  1. 兼容性非常好;
  2. 可以精确控制内敛元素的垂直对齐位置 tips:middle控制的垂直位置,不是真正意义上的垂直居中,因此还是会有像素级别的误差,误差大小与字体和字号均有关。(负值-往下偏移,正值-往上偏移,数值大小都是相对基线记性计算的) 在css中,凡是百分比值,均是需要一个相对计算的值,例如,margin和padding是相对宽度计算的,line-height是相对font-size计算的,而这里的vertical-align属性的百分比值是相对于line-height的计算值计算的。