有人能解释这里发生了什么吗? 查看下面的代码,您可能希望这两个项目彼此对齐。 情况似乎并非如此。
HTML
<div class="BX"></div>
CSS
.BX{
position:absolute;
top:10px;
left:10px;
height:30px;
width:30px;
}
.BX:after{
content:"×";
position:absolute;
font-size:50px;
top:0;
left:0;
}
问题
我知道我可以很容易地破解代码来改变绝对偏移但是我更感兴趣的是了解后选择器从哪里派生出它的左上角位置?
答案 0 :(得分:4)
这是我的两分钱。首先,为了诊断问题,我将overflow:hidden
设置为父元素.BX
以研究问题。这就是我所看到的。子元素有明显的溢出,而overflow:hidden
则表明了这一点。但这仍然无法解释为什么&#34;推倒&#34;影响。让我们直观地了解font-size
和line-height
的关联方式。
子类继承父类&#39; line-height
我们必须过度写作。实际上默认使用line-height
计算font-size
。发生溢出,通过前线高度和后线高度阶段可视化,如上图所示。请记住,line-height
用于居中并不是最好的主意。请注意枢轴如何向上移动。
所以这里发生了什么。我们不会移动&#34; X&#34;在飞机上神奇地守卫,但我们只是转向相同的点,只是放置它的容器类来提升一步。这可以从&#34; X&#34;底部的距离看出。到结束轮廓线。
通常的做法是使用黄金比率值1.618
来计算完美线高,即line-height
= font-size
/ 1.618。如果你取50px的当前font-size
并计算line-height
= 50 / 1.618 = 30.你得到~30px。
默认line-height
的原因是由于公式line-height
= font-size
* 1.2,在我们的例子中等于60px
。 (l = 50*1.2)
如果您尝试通过明确点击CSS中的属性来重现line-height
,执行line-height:60px
,您将重现浏览器默认设置的line-height
。
答案 1 :(得分:3)
创建伪元素的顶部偏移量是因为应用了line-height
的默认font-size:50px;
它使伪元素59px变高并使其内容垂直居中。
您可以通过设置自定义line-height
DEMO
答案 2 :(得分:2)
你的伪元素比它的父元素大,这就是它溢出的原因。
为什么它更大?由于font-size
,根据这些min-height
给出了font-size
等于line-height
和默认50px
。
要查看它的实际操作,请将边框或背景颜色添加到伪:http://jsfiddle.net/793vk/2/
答案 3 :(得分:0)
答案 4 :(得分:-1)
答案 5 :(得分:-1)
:伪元素IS位于.BX
元素的左上角。
我在它上面放了一个边框来证明情况就是这样:
border: 1px solid red;
它看起来偏离中心的原因是伪元素高于.BX