繁体   English   中英

如何仅使用javascript用IE8和更低版本的CSS文件替换或删除任何特定的CSS属性?

[英]How to replace or remove any specific CSS property with css file for IE8 and lower only using javascript?

这是我只想要IE8及更低版本的 CSS代码

background: filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1e5799', endColorstr='#7db9e8',GradientType=0 ); / IE6-8 */

但是,如果用户使用的是IE9,我要么想从CSS文件中删除此属性,要么要替换为filter:none

是否可以使用javascript,jquery? 我知道我可以为IE使用单独的样式表,但只是想知道是否可以使用javascript。

编辑:

是否有可能像在javascript或jquery中一样

// If browser is IE9 

然后更换

filter: progid:DXImageTransform.Microsoft.gradient(values)

filter:none

我认为最简单的方法是使用条件代码在HTML元素上放置“ IE”类……我想我最初是从HTML5样板http://html5boilerplate.com/获得的

<!doctype html>

<!--[if lt IE 7 ]> <html class="no-js ie" lang="en"> <![endif]-->
<!--[if IE 7 ]>    <html class="no-js ie" lang="en"> <![endif]-->
<!--[if IE 8 ]>    <html class="no-js ie" lang="en"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--> <html class="no-js" lang="en"> <!--<![endif]-->

.bg-gradient {background: filter: 0, #999}

.ie .bg-gradient {  
    background: filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1e5799', endColorstr='#7db9e8',GradientType=0 ); / IE6-8 */
}

然后只需使用add和remove类删除'element'类

$(document).ready(function(){
    $('.element').addClass('bg-gradient');
})

非IE浏览器不会呈现过滤器,因此为IE 6-8 以外的所有浏览器添加或删除过滤器将具有与仅针对IE9进行过滤相同的效果。 我也相信ie9支持多种背景属性,因此其他浏览器应该跳过第一个逗号分隔的值-从理论上讲,我还没有测试过。 如果没有,请使用常规的css2语法:

.bg-gradient {background: filter: 0}

是。 它在JavaScript中是“可能的” 但是,它需要在服务器端和客户端都进行。

在客户端,您需要检测它是否为IE9,然后向服务器发送请求以请求脚本(服务器端JavaScript),该脚本解析CSS文件并替换所有出现的过滤器属性并将其设置为filter:none ,然后将修改后的CSS文件提供给客户端。

PS: 恕我直言,这将是您有史以来最糟糕的事情,我不建议这样做。 这只是为了回答您的好奇问题,如果这是“ JavaScript中可能的”。

$(document).ready(function(){
    if ($.browser.msie && $.browser.version < 9) {
         $("#element").css("filter", "progid:DXImageTransform.Microsoft.gradient( startColorstr='#1e5799', endColorstr='#7db9e8',GradientType=0 );")
    }
})

使用条件注释并为IE8和更低版本添加一个CSS文件
这是一个教程

编辑:使用jQuery的浏览器检查并使用JavaScript应用CSS
使用jQuery.browser.version您可以获得版本

我看到这里有不同的答案,但我个人将建议以下方法。

有两个CSS类-一个包含IE9的样式,另一个包含所有其他浏览器的样式。

如以上答案之一所述,请使用jQuery.browser API确定浏览器类型。 我建议您将字符串“ msie9”或“ msie8”作为类添加到“ body”或“ html”元素中。

完成此操作后,您的IE9样式将为

body.msie9 .ie9specificclass {}

对于其他人来说

.specificClass {}

这将是一个干净的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM