在webkit中无法崩溃?

时间:2011-03-10 15:32:52

标签: css cross-browser

如本jsfiddle所示:http://jsfiddle.net/qrbhb/

如果你拿这个标记:

<div>There should be no gap between us</div>
<br />
<div>There should be no gap between us</div>

和这个css:

div {
    background: #999;
}

br {
    clear: both;
    display: block;
    overflow: hidden;
    visibility: hidden;
    width: 0;
    height: 0;
}

所有基于webkit的浏览器都会显示一个等于父元素行高的间隙,而firefox和IE则不会显示间隙。我不知道谁在这里遵循规范,但我不能为我的生活得到这个在所有浏览器中显示相同,这让我发疯。有什么想法吗?

编辑:对不起伙计们,我正在看一个相当复杂的布局,错误地认为某些元素是浮动的,而不是。浮动元素的行为符合预期。

2 个答案:

答案 0 :(得分:1)

使用display:none;

http://jsfiddle.net/qrbhb/13/

答案 1 :(得分:1)

奇。我可以看到正在发生的事情的一些逻辑。它似乎使用前一个元素的行高作为高度。例如,如果你在<br />之前添加它,如下所示:

<div class="weird" /><br />

...然后设置其行高:

div.weird {
    line-height: 0;
}

(jsFiddle here

...然后<br />失去了它的高度。

所以,我猜测换行符“继承” - 尽管这是一个错误的词 - 前一段文本的高度。我不确定这是真的发生了什么,但它最能让我想到的解释。

但是,真的,我和其他所有人在一起 - 如果你不想在行之间休息,不要使用换行符。无论如何,如果你要用一些非语义来清除内容,我只会使用它并使用<div>;网络社区的实际元素将理解并原谅你:)