你如何解决IE不支持:之后?
-
03-07-2019 - |
题
我有一堆清单
<ul>
<li class="first">Item 1</li>
<li>Item 2</li>
<li class="last">Item 3</li>
</ul>
使用
设置样式li:after {
content: ' / ';
}
li.last:after {
content: '';
}
这必须是一种常见的问题。我想我可以弄乱html并放入包含该字符的中间<li>
,或者如果IE是加载浏览器的话我可以挂在javascript上将它们放在那里但是这样就不会没有人抓住了JavaScript的。 Iuno。我倾向于混淆HTML,但我想听听是否有一些意见。
解决方案
- 使用 IE7.js 黑客在伪元素支持后添加。
- 使用条件注释添加到标记以模拟该效果或删除一些现有样式,以便在没有分隔符的情况下更容易阅读 - 例如,让列表项堆叠在条件注释的样式表中
- 通过重新排列样式允许IE6优雅地降级,这样就不会发生这种情况,即使它在其他浏览器中看起来不同。 醇>
其他提示
Internet Explorer (IE)不支持:选择后,我们必须使用一些黑客,例如:
li { scrollbar-face-color: expression(!this.isInserted==true ? this.isInserted=(this.innerHTML = '' + this.innerHTML + 'xkcd150') : ''); }
QUOT <!>; <!> xkcd150 QUOT; - 每个<li>
后添加一个。
它是一个表达式,通常用于替换和修复一些IE错误。
所以,完整代码是:
li { scrollbar-face-color: expression(!this.isInserted==true ? this.isInserted=(this.innerHTML = '' + this.innerHTML + ' / ') : ''); }
li.last {
scrollbar-face-color: expression(!this.isInserted==true ? this.isInserted=(this.innerHTML = '' + this.innerHTML + '') : ''); }
第一行添加<!> quot; / <!> quot;,第二个用于添加任何内容。
所有代码都必须添加到您的css文件中。
这是一个你不喜欢的想法。 8-)将/符号作为背景图像放在<li>
s。
我只是在生成列表HTML时使用服务器端语言。我想这将被视为<!>“混乱HTML <!>”。
我使用javascript和条件评论。即使用jQuery。
<!--[if IE 6]>
<script type='text/javascript'>
$(document).ready( function() {
$('li').not('li.last').after('/');
});
</script>
<![endif]-->
使用单独的JS文件更好。
这也有一个缺点,你必须把所有内容写两次,因为你把它放在CSS中用于好的浏览器,再用javascript for IE6。
尝试使用类似jQuery的东西。
'$(函数(){
$( '礼')不是( ':最后子')。追加( '\'');
});`
它不会使HTML混乱。 另外,要使其仅适用于IE,请尝试使用jquery兼容性。
如果您的内容无意在运行时更改,则可以使用以下内容:
.icon-glass {
*zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
}
如果您的内容打算在运行时更改,您可以执行以下操作:
.icon-glass {
*top:expression(0, this.innerHTML = '');
}
不幸的是,这非常慢。虽然它可能会在IE6中显着降低您的性能,但如果您的页面上有太多图标,IE7可能会崩溃。所以除非你只使用很少的图标,否则你不会推荐第二种技术,你可以负担得起性能降低。
如果IE支持最后一个孩子,你不需要做class = <!> quot; last <!> quot; :P
IE支持已经并将继续是废话。 IE 8已经做了大量的改进:在之后和之前,正如你所期望的那样,IE 7也支持它们。只针对这两者,特别是因为微软正在通过Windows Update推出IE 8。