请考虑以下 CSS。请注意,在这种情况下没有定义或生效的其他 CSS 规则:
* {
position: absolute;
color: red;
}
div {
position: static;
color: blue;
}
当我添加一个带有一点文本的 div 时,它是live here,div 中的文本不再遍历整个屏幕。就好像 div 的 width 属性设置为 10%。如果我从通配符中删除 position:absolute 声明,则 div 将恢复正常(文本一直穿过屏幕)。这让我很困惑,因为我已经用 position:static 声明定义了所有 div。我尝试了这个,有没有包含著名的“reset.css”样式表,我得到了相同的结果。
起初我认为也许通配符规则优先于 CSS 中的 div 规则。那很简单。但是,我将通配符规则的颜色属性设置为红色,将 div 规则的颜色属性设置为蓝色,文本显示为蓝色。所以答案不能简单地是通配符规则优先于 div 规则。
我认为可能相关的一件事:绝对定位的元素相对于它的第一个定位(非静态)祖先元素定位。在这种情况下,body 没有这样的祖先,因此这可能只是由于 body 设置为绝对定位但没有定位的祖先元素而导致的某种静默错误。
有谁知道这种奇怪行为的原因是什么?