这是下面的html代码:
<div class="container">
no Text
<span class="base">baseline align</span>
</div>
css代码:
div {
font-size: 20px;
line-height: 100px;
outline: 1px solid red;
}
span {
font-size: 40px;
display: inline-block;
background: wheat;
}
我的问题是为什么容器元素的高度是107px,而不是110px。
containerHeight = lineHeight + (spanFont - divFont)/2 = 100px + 10px = 110px
我的卡路里有什么问题吗?
答案 0 :(得分:0)
考虑下面转载的代码段,然后查看黄色的右手元素,其中包含font-size: 50px
和line-height: 36px
。请注意,即使字体大小为50px,字符(字形)占用的垂直空间也小于50px,更像是36px。字体的设计使得有一个包含字符的框,字形/字符位于该框内。
计算出的整体框高度实际上是行高(100px)加上差异是字形框的高度,这比字体大小的尺寸略小。
请注意,如果您将垂直对齐值设置为top
(或bottom
):
<span class="top">baseline span Text</span>
然后计算出的高度为100px,即指定的行高。
有关其原理的详细信息,请参阅CCS2规范:
http://www.w3.org/TR/CSS21/visudet.html#line-height
具体来说,关于领先和半领先的部分。
$(document).ready(function() {
var $container = $('.container');
var divHeight = $container.height();
$('.info').html('container is ' + divHeight + 'px');
})
&#13;
div {
font-size: 20px;
line-height: 100px;
outline: 1px solid red;
position: relative; /* for demo only */
}
span {
font-size: 40px;
line-height: 100px; /* this value is inherited, I show it explicitly */
display: inline-block;
background: wheat;
}
/* the following for demo purposes... */
.info {
font-size: 20px;
line-height: 1;
background-color: yellow;
}
.top {
vertical-align: top;
}
.base {
vertical-align: baseline;
}
.line-50 {
position: absolute;
border-top: 1px dashed blue;
outline: none;
top: 50%;
left: 0;
width: 100%;
}
.box-50 {
position: absolute;
outline: none;
bottom: 50%;
right: 0;
width: 100px;
background-color: yellow;
font-size: 50px;
line-height: 36px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="info">x</span>
<br>
<br>
<div class="container">
test text
<span class="base">baseline span Text</span>
<div class="line-50"></div>
<div class="box-50">Xey</div>
</div>
&#13;