html - 伪元素在 chrome 中消失但在 firefox 中不消失

标签 html css google-chrome firefox pseudo-element

我目前正在开展一个元素,该元素需要在元素的顶部和底部添加边框,并将其扩展到页面的边缘。我有一个 960px 宽的包装器,我将 overflow-x 设置为隐藏在 body 和 html 上。我正在使用以下样式。

#profile-page{
    position:relative;
    overflow:hidden;
}
#profile-page .bottom:after, #profile-page .bottom:before {
  content: "";
  position: absolute;
  left: 0px;
  right: 0px;
  height: 5px;
  background-image: -webkit-linear-gradient(0deg, #7ad100 95px, #00bce8 95px, #00bce8 190px, #ffde00 190px, #ffde00 285px, #ff5942 285px, #ff5942 380px);
  background-image: -ms-linear-gradient(0deg, #7ad100 95px, #00bce8 95px, #00bce8 190px, #ffde00 190px, #ffde00 285px, #ff5942 285px, #ff5942 380px);
  background-image: -moz-linear-gradient(0deg, #7ad100 95px, #00bce8 95px, #00bce8 190px, #ffde00 190px, #ffde00 285px, #ff5942 285px, #ff5942 380px);
  background-size: 380px;
}

#profile-page .bottom:before{
  top: -2px;
}
#profile-page .bottom:after{
  bottom: -2px;
}
#profile-page .bottom{
    padding-left:3000px;
    margin-left:-3000px;
    padding-right:3000px;
    margin-right:-3000px;
    position:relative;
    background: #ffffff;
}

样式在 firefox 中显示良好,在 chrome 或 ie9 中不显示(尚未测试其他)。我提供了屏幕截图,以便您可以看到实际输出。

如果我删除样式以使 .bottom 拉伸(stretch)到屏幕边缘,样式将以 chrome 显示。我无法确定是哪一部分样式干扰了我的伪元素,但希望这里有人知道。提前致谢。

编辑:只是想澄清一下,如果我删除以下规则,我将 REMOVE 放在出现的 psuedos 旁边。但是后来我的 div 不再到达屏幕边缘并包含在包装器中,这是不可能发生的

 #profile-page .bottom{
    padding-left:3000px; -REMOVE
    margin-left:-3000px; -REMOVE
    padding-right:3000px; -REMOVE
    margin-right:-3000px; -REMOVE
    position:relative;
    background: #ffffff;
}

CSS 是用 less 编写的,尝试删除任何 Less 快捷方式,但可能会遗漏一些,以防人们认为他们看到了错误。

编辑:根据要求,HTML 结构

<html>
<body id="profile-page">
  <div id="wrapper">
    <div class="top"></div>
    <div class="item bottom">
      <div id="profile-content">PROFILE LINKS</div>
    </div>
  </div>
</body>
</html>

Firefox

Chrome

顶部是 firefox,底部是 chrome

最佳答案

根据我的测试:Chrome 将伪元素 :before:after 的大小限制为 1900px(至少在这种情况下是这样): http://jsfiddle.net/xLF8r/4/

在您的情况下,您将 .bottom 上的填充/边距设置为 2900px/-2900px,以便可以看到主体边缘的渐变。如果将其更改为 950px/-950px,它们就会显示出来。如果将伪元素的宽度设置为 1900px,它们就会显示出来。如果您设置 right: -280%,它们就会显示(在本例中计算为 -1900px)。

如果您在 Firefox 中查看此 fiddle ,无论您将这些大小设置为多少,元素都会显示。

另一项测试:更改背景大小允许元素变大并保持可见:http://jsfiddle.net/xLF8r/6/

因此,如果您增加背景大小并更改渐变以通过添加更多色标来使其看起来像您拥有它,它应该可以工作。

从这些测试来看,chrome 似乎将伪元素的大小限制为仅比背景大小大 5 倍。 1900px/380px = 5 在第一次测试中; 1901px 使元素消失。第二次测试中 6900px/1380px = 5; 6901px 使元素消失。

为另一个测试和 future 引用而编辑 我很好奇,所以我创建了一个 Codepen 查看一些示例。在这里,我最多可以将背景尺寸放大 10 倍。将相同的代码放入 jsfiddle 中也表明 10 次有效。所以在你的代码中,有些东西将它减少到 5 倍。

我已经 reduced your code 来复制相同的行为,但我仍然只扩大了 5 倍而不是 10 倍。我很困惑为什么会这样。

关于html - 伪元素在 chrome 中消失但在 firefox 中不消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20383065/

相关文章:

html - col-md-2 最后一列不在同一行

javascript - Chrome 扩展程序,为每个新选项卡显示所选本地文件夹中的随机图片

css - 如何做一个 Chrome/Opera 特定的样式表?

javascript - chrome 扩展命令行通信

javascript - Chrome - 从 JS 加载时未加载图像

javascript - javascript中的验证表单,单独点击输入

html - Servlet 在连接 mysql 时没有任何响应

css - 在 Struts2 磁贴中单击时如何突出显示菜单中的事件元素?

javascript - 单击后如何隐藏按钮

javascript - 彩票玩家 : Is there any way to stop the animation after it loads?