如果body或h2具有行高,则链接高度大于父h2

时间:2012-07-17 11:20:25

标签: height css

Reduced test case here.

我试图理解为什么会这样。

如果<a>中有<h2>并在<body><h2>设置了行高,则链接高度大于<h2>

[更新澄清]问题是.title a的计算高度为58px,而其父h2.title的计算高度为50px。我希望它们都具有相同的计算高度。 [/更新]

我给他们两个底部边框以更好地说明问题。

[更新2]我已阅读line-height spec以尝试理解这一点。

从我对规范的阅读看来,块级元素a中的内联元素h2应该继承父行高。我已在h2上修改了我的示例here,其中包含更大的行高。给a显示内联块显然会使它适合,但它仍然不能完全删除行高(因此使用浏览器默认行高1.2)。

这可能不是问题,我只想了解这种行为。

[更新3]我意识到如果我将line-height的{​​{1}}更改为a h2框的整体高度{上面示例中的粉红色) 增加,因此h2继承a中的line-height。令人困惑的是,链接高度(可点击区域)和边框底部位置不会改变,而h2上的边框底部会随着线高移动。

4 个答案:

答案 0 :(得分:0)

我没有看到你的问题。在您提供的链接中,绝对没什么奇怪的。你有一个h2链接。所以链接的字体大小得到h2的字体大小。但是a远不及h2。

答案 1 :(得分:0)

这不是问题吗?

然而,将display:block;添加到您的锚点,它会更像您期望的行为

答案 2 :(得分:0)

你有一个包含链接的h2。

h2和链接的行高为1(继承)但链接的字体大小为3em。

这意味着,容器的字体大小会更大,这可能会导致不同浏览器的结果不同。

Firefox(版本13)中的

结果是,您在父容器(h2)的顶部和底部溢出。

答案 3 :(得分:0)

您是否尝试删除<H3>的边距?在大多数浏览器中,它的默认边距为0.5em。

如果这是问题,您可以阅读Reset CSS

修改
你有两种类型的容器,一个具有严格固定高度的褶皱块元件; 内联女巫有自动仇恨..和默认的边距和间距(想象一个链接作为段落的一部分......)。

要获得预期结果,您可以在display:inline-block上添加<a>。 因此它们都将被视为具有固定高度的盒子。

http://dabblet.com/gist/5219955