2

我遇到了一些奇怪的 CSS 行为。但是,它在 Firefox、Chrome 和 IE (9) 上的工作方式完全相同,所以我怀疑它是 CSS 标准的一部分,但是,我找不到任何关于为什么会这样的参考。

我有一个 div,里面有一些文字。当我设置font-size大于line-height时,div的高度是用line-height计算的,但是内容要大很多。也就是说,框中的文本比框本身大得多。我对这里的情况有一个 jsfiddle:

http://jsfiddle.net/RVgzV/4/

如果将鼠标移动到边界框上方,您可以看到悬停 css 在您进入 div 之前激活。同样,单击靠近但仍在框外会激活 javascript 单击事件。在这里查看内容框的位置稍微容易一些:

http://jsfiddle.net/RVgzV/5/

当 div 上的 display 属性设置为 inline 时,高度计算正确(由于各种样式原因,我不能这样做)。另外,如果我将溢出属性设置为隐藏,问题就解决了。对我来说,这表明内容大于其包含框,但我不知道为什么。特别是我想知道为什么对象的“高度”css框模型属性小于页面上显示的实际高度。

我查看了 CSS 规范,但我没有在那里看到我的答案,但我怀疑那里可能有我遗漏的东西。

编辑

我找到了以下链接,其中提到了我遇到的问题,但我不知道它们的来源是什么,或者为什么会这样。

另外,为了回应我收到的一些答案,我不是在寻找如何修复我的 css 以使悬停问题不再出现,我首先在寻找它为什么会发生。

再次编辑 显然,框的任何内容,无论是否在框的边界内都会调用框上的悬停。(请参阅 Lister 先生对This answer的评论。我真正想知道的是规范中这种行为的来源。它在那里?还是所有浏览器都同意的实现?

4

2 回答 2

1

使用 overflow:hidden 隐藏 div 之外的任何内容。

它可以正确地作为子元素存在并且可以悬停在元素的块区域之外。

这种技术经常用于通过使用负边距/填充/绝对定位等来移动块元素的内部片段。但这些片段将始终保持父级的悬停能力。

于 2012-04-10T17:49:53.893 回答
0

div 的大小不正确。这是正常行为。您错误地使用了 CSS。div-height 由其中的行数定义。您给出了比行高更大的字体大小,这意味着只能使用最大行高来定义所需的行数。

顺便说一句,定义字体占用大于行高有什么意义?

于 2012-04-10T17:28:59.893 回答