【问题标题】:I can't get IE8 to support :before我无法让 IE8 支持:之前
【发布时间】:2013-12-04 20:10:16
【问题描述】:

不知道为什么 :before 不起作用。我的 IE8 浏览器会在这个页面上正确显示:

http://quirksmode.org/css/selectors/beforeafter.html

但当我在此页面上执行此操作时不会:

http://africa.ie

【问题讨论】:

标签: html css


【解决方案1】:

删除 ::before::after 选择器似乎可以在 IE8 中使用:

p.test:before {
    padding-right: 5px;
    content: url(http://quirksmode.org/pix/logo_ppk.gif);
}
p.test:after {
    font-style: italic;
    content: " and some text after.";
}

【讨论】:

  • 酷 - 我怀疑这一点,但没有 IE8 可以测试。也许它也可以做p.test::before, p.test:before {}而不是相反的顺序。
  • 是的,但由于它们是等价的(::before 是 CSS3,:before 是 CSS2)这并不重要。 IE8 只支持:before,但现代浏览器两者都支持。
  • 理论上它不应该重要,但p.test:before, p.test::before {} 在 IE8 中引起了问题。我只是建议尝试反过来看看是否有帮助,如果 OP 想要同时包含两者。
  • 是的,我是说完全没有理由使用::before。 “在 CSS 3 中引入了 ::before 符号,以便区分伪类和伪元素。浏览器也接受在 CSS 2 中引入的符号 :before。” developer.mozilla.org/en-US/docs/Web/CSS/::before
  • 同意。但也许有一天浏览器不会接受 :before?或者,也许 OP 只是想把它放在那里。谁知道呢。
【解决方案2】:

IE8 确实支持:before

两种可能:

  1. IE 正在以兼容模式或怪癖模式呈现页面。

    这两种模式中的任何一种都会禁用此功能。添加有效的文档类型并将X-UA-Compatible 设置为IE=edge 以处理此问题。

  2. 您使用的是::before,而不是:before

    这是一个非常微妙的问题。正确的语法是双冒号,但在 IE8 发布时,它是单冒号;随后更改了官方语法。所有现代浏览器都将接受 ::before::after 的单冒号或双冒号以适应这一历史变化,但 IE8 只支持单冒号。

【讨论】:

  • 1.完毕。见africa.ie 2. 完成。我正在使用单冒号:之前。见africa.ie
  • @JuanCullen 不确定这是否有帮助,但可以尝试一起删除 ::before 吗?我看到您现在同时声明 :before 和 ::before。
【解决方案3】:

只要您不处于兼容模式,它就可以工作。如果您希望它支持更多,我可能会推荐以下内容:

<!--[if lt IE 9]>
   <script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
<![endif]-->

【讨论】:

  • 问题不是兼容模式,我可以确认它是在IE8标准下运行的。
  • 我试过了,但弹出警告“此页面正在访问不受其控制的信息。这会带来安全风险。你想继续吗?'
  • 然后下载文件,不要将其托管在 google 的 cdn 上。
猜你喜欢
  • 2012-12-07
  • 2015-06-14
  • 1970-01-01
  • 2013-05-30
  • 2013-08-03
  • 2014-02-13
  • 2016-10-28
  • 2012-12-29
  • 1970-01-01
相关资源
最近更新 更多