【问题标题】::before and :after pseudo elements on html tag is wonky in Chrome:before 和 :after html 标签上的伪元素在 Chrome 中很不稳定
【发布时间】:2012-04-05 02:36:48
【问题描述】:

我正在尝试学习如何使用 :before 和 :after 伪元素。我正在尝试将黑色背景添加到页面底部作为粘性页脚,但它似乎无法正常工作。

基本上,我有一个重复的图像作为 HTML 元素的背景,然后我添加了一个位于底部的绝对 div,带有纯黑色背景。

我只想指出,这是一个学习实验,并不是我真正如何达到相同的效果,而是我正在尝试在 Firefox 中工作,而不是在 Chrome 中工作!

这是我的 CSS:

html {
    background-image: url('images/template/html-bg.jpg');
    background-position: top left;
    background-repeat: repeat-x;
    background-color: #0e0e0e;
    height: 100%;
    position: relative;
}

html:before {
    content: "";
    display: block;
    background-color: #000;
    width: 100%;
    height: 138px;
    bottom: 0px;
    position: absolute;
}

在 FF 中,页面按照我的预期呈现,但在 Chrome 中,整个页面是黑色的......有什么想法,我做错了吗?

【问题讨论】:

  • html 标签“之前”没有任何内容,除了 DOCTYPE,我认为这不是有效的 CSS。
  • 所以我应该只在body标签内的元素上使用这些伪元素?
  • 是在正文中使用而不是 HTML 标记
  • 有人想把它作为答案,这样我就可以结束这个问题了吗?
  • @Andres Ilich:1) 这些伪元素不是这样工作的。 2) DOCTYPE 与 CSS 有什么关系?这是完全有效的 CSS。

标签: css google-chrome pseudo-element


【解决方案1】:

您的 CSS 应该按预期工作,因为您的伪元素应该在 initial containing block(视口,由 html 元素表示)的上下文中绘制,这正是 Firefox 正在做的事情。

您的特定问题已报告为Chrome bug,但尚未解决。作为一种解决方法,您可以将伪元素应用于 body

body:before {
    content: "";
    display: block;
    background-color: #000;
    width: 100%;
    height: 138px;
    bottom: 0px;
    position: absolute;
}

根据您的布局,您可能需要保留 html 规则或将其更改为 body

【讨论】:

  • 就是这样!遇到 Chrome 错误,我感到很特别:P 感谢您的帮助!
  • 我不相信这本身就是一个错误。 HTML 应该有“内容”吗? HTML 是画布。如果浏览器会在除<body> 之外的HTML 元素中的所有元素上隐含地添加display:none,我不会感到惊讶。否则,在正文上方和下方的 DOM 树中总会有一些空白。
  • @Mr Lister:这是我的看法:html 是 DOM 中的根元素。 headbody 是它的子节点,它们也都表示为 DOM 节点。 :before:after 伪元素描述在元素的文档树内容之前或之后插入内容,因此它们应该html 元素一起使用,因为它的文档树内容由 @987654339 组成@ 和 body 元素。就像你说的,html 是“画布”,用于绘制视觉元素,而head 的初始样式确实是display: none
  • 我可以接受大部分内容,但不是你的妙语“头部确实有一种初始的显示风格:无论如何都没有。”这不可能是真的,因为带有display:none 的元素的子元素永远不会被绘制,永远不会! Here, "此行为不能通过设置后代的 'display' 属性来覆盖。" SeaMonkey 的 DOM Inspector 也告诉我这个页面的 HTML 元素有display:block
猜你喜欢
  • 1970-01-01
  • 2019-01-11
  • 2015-09-12
  • 2012-01-27
  • 2020-09-20
  • 1970-01-01
  • 2015-01-04
  • 2016-05-24
  • 1970-01-01
相关资源
最近更新 更多