【发布时间】:2013-05-03 23:16:21
【问题描述】:
我已经准备了一个示例 jsfiddle 来展示我当前在布局中遇到的问题:当我将内容动态插入到特定元素(砖块)中时,该元素与其父元素一起下沉超出了我对 HTML/CSS 的理解。当我删除内容时,原始布局会恢复,除非我使用的是 Chrome……然后它会保留其位置并在插入新内容时再次下降。
概念证明:http://jsfiddle.net/GADk9/
示例中的复选框只是切换块内的文本,仅此而已。我想知道上面的边距(是吗?)来自哪里。
这是一个完整的 HTML5 文档:
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='UTF-8'>
<title>HTML5 Falling Brick - What is this?</title>
<style>
#brick {
background-color: lightgray;
border: solid black medium;
border-radius: 1em;
color: red;
font-size: 2em;
height: 100%;
text-align: center;
}
#contrail { background-color: lightblue; width: 20em; }
#pit { display: table; }
#pit>* { display: table-cell; }
#pit>*>* { height: 4em; }
</style>
</head>
<body>
<div>
<label>Click me twice
<input onchange="document.getElementById('brick').innerHTML = this.checked ? 'FALL!!!' : ''" type='checkbox'></input>
</label>
</div>
<div id='pit'>
<div>
<div>
</div>
</div>
<div id='contrail'>
<div>
<div id='brick'></div>
</div>
</div>
</div>
</body>
</html>
更新
再次阅读我的问题后,我意识到这可能暗示了我真正想要完成的是修复一些 HTML 的错误印象。 为了明确强调这一点,我不需要在这里更改任何内容。砖块的例子只是我正在观察的问题的一个有趣的演示。 我真的很想了解在这样的排列中插入内容时导致元素位置改变的原因。
【问题讨论】:
-
这个 HTML5 怎么样? o_o
-
我不明白。小提琴、Firefox 和 Chrome 对我来说都是一样的。规则 #pit>*>* 也没有任何意义,因为您在 #pit 下的所有内容下都说了所有内容。
-
@Rob 我认为选择器 >* 不是递归的,所以
#pit>*只会查看其直接子代,而不是其孙子代。 -
@Rob 我认为
#pit *会选择#pit的每个后代,而#pit>*只会选择它的孩子 -
很明显……您正在使用一张桌子。而且桌子无法逃脱万有引力定律 :) en.wikipedia.org/wiki/Gravitation