9.6 strut元素与IFC完整示意图
strut是IFC模型的核心之一。注:strut与struct非常相似,struct指结构,strut指支柱。
9.6.1 IFC模型完整示意图
IFC布局模型内部对象(续)。
(4)第4级对象bounds。每个line box内部包括多个bounds,每个inline元素对应一个bounds。
(5)假想strut bounds。以虚线框标记,属于抽象对象,它用于描述与理解IFC规则,包括对齐规则与line box高度计算规则。
(6)line box高度计算。line box高度不一定等于父div的line-height值,可能因为内部bounds大小或对齐使line box高度超过line-height。
9.6.2 strut定义与line box规则
strut定义:每个line box内部有一个假想的宽度为0但具有高度的空元素,称为strut支柱。“假想”的实质:通过这个假想概念方便表达与理解行盒line box内的排版规则,所以学习的重点是行盒内的排版规则,strut是理解它们的工具。
strut特点包括如下:
特点1。每个line box的开头有一个strut。
特点2。strut继承父div的字体三属性(font-family、font-size、line-height)。
特点3。宽度为0但具有高度,strut高度值即父div设置的line-height。
特点4。strut作为bounds具有基线,不只是参与垂直对齐,更是其它元素进行基线对齐的基准。
特点5。参与line box的高度计算。
strut存在证明(本质是规则说明)。
(1)line box的初始高度是strut高度。当一个行盒的所有span元素都设置成字体比父div小的多的字体大小时,行盒高度仍然等于line-height。因为“存在”strut元素。
(2)line box的基线是strut的基线。其它元素的基线对齐是与strut元素的基线对齐。
示例代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>小步教程</title>
<style>
.div1{
font-family: Arial;
font-size: 30px;
line-height: 50px;
}
.span1{
font-size: 12px;
line-height: 20px;
}
</style>
</head>
<body>
<div class="div1">
<!-- <span>x</span> -->
<span class="span1">xiaobuteach.com</span>
</div>
<div>第2行 小步教程</div>
</body>
</html>
div1内部添加span(取消注释代码),运行效果对比如下。
line box的高度不随内部inline元素的字体变小而变小,所以line-height属性也叫做line box的最小高度,line box高度不小于父div的line-height值。而且垂直对齐也是以strut bounds的基线为基准进行对齐。