有没有办法欺骗IE7使用伪元素:之后和:之前?

时间:2011-01-07 17:31:53

标签: css pseudo-element

我的页面页脚中有一个导航栏,除了当然在IE7中,所有内容都已设置好。 我使用:after伪元素放置管道“|”在导航栏中的每个<li>之后,但在IE7中,它不会显示。 这不是一件大事,它不是那么丑陋,但我似乎无法找到任何东西来捣乱它或诱骗IE7使其发挥作用。

4 个答案:

答案 0 :(得分:4)

截至2012-01-03,此脚本仅支持:在IE8之前和之后:http://code.google.com/p/ie7-js/

截至2012-01-03,提到here的Selectivizr没有:之前和之后。

截至2012-01-03,这看起来并不准备(尽管可能是这样):https://github.com/kevindees/ie7_pseudo_elements

我一直在寻找一种方法让这些假元素在IE7上运行,但看起来无法完成。

答案 1 :(得分:2)

就个人而言,我可能会使用jQuery添加<span>|</span> :before:after。如果你只需要它来处理这个简单的问题,它可能比整个库更轻量级(当然,这只有在你已经使用jQuery时才有意义。

$('.element-with-after-class').append('<span class="ie-safe-pseudo-after>|</span>');

$('.element-with-before-class').prepend('<span class="ie-safe-pseudo-before>|</span>');

$('.element-with-after-class:not(.element-with-after-class:last-child)').append('<span class="ie-safe-pseudo-after>|</span>');

答案 2 :(得分:2)

这是您正在使用的IE7代码:

<强> HTML

<ul>
    <li>link</li>
    <li>link</li>
    <li>link</li>
    <li>link</li>
</ul>​

<强> CSS

li {display: inline;}
li {*zoom: expression( this.runtimeStyle.zoom="1", this.insertBefore( document.createElement("i"), this.firstChild).className="ie-before" );}
li .ie-before {*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '|');}​

答案 3 :(得分:0)

我自己没试过。

但我现在有一个书签了。

检查出来:http://forabeautifulweb.com/blog/about/enable_css_pseudo-element_selectors_in_internet_explorer_with_ie-css3.js/

编辑:

确保您还阅读了包含一些有用信息的评论(例如jQuery)