如何用仅使用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 */
}
然后简单地使用添加和删除类来删除"元素"类
$(document).ready(function(){
$('.element').addClass('bg-gradient');
})
非IE浏览器不会呈现过滤器,因此为(IE 6-8除外)的所有浏览器添加或删除过滤器与仅为IE9添加或删除具有相同的效果。另外,我认为ie9支持多个后台属性,所以其他浏览器应该跳过第一个逗号分隔的值——理论上——我还没有测试过
.bg-gradient {background: filter: 0}
是。这在JavaScript中是"可能的"。但这需要在服务器端和客户端同时完成。
在客户端,您需要检测它是否是IE9,然后向服务器发送一个脚本(服务器端JavaScript)请求,该脚本解析CSS文件并替换所有出现的筛选器属性,并将其设置为filter:none
,然后将修改后的CSS文件提供给客户端。
PS:IMHO,这将是你能做的最糟糕的事情,我不建议这样做。这只是为了回答你好奇的问题,如果这"在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.ie9特定类别{}
对其他人来说,这将是
.specificClass{}
这将是一个干净的方法。
- 如何修复:当javascript更改DOM时,iOS会删除CSS文件
- 使用Javascript读取CSS文件并动态更改页面
- js和css文件-在publichtml外部或内部
- Google PageSpeed Insights与多个CSS文件
- Javascript:动态更改CSS文件+Cookie
- 没有在django项目中加载CSS文件
- 在企业应用程序框架中包含js/css文件的最佳实践是什么
- Chrome审核:在外部CSS文件之间的头中发现了1个内联脚本块&”;
- 使用新的 CSS 文件覆盖当前网站
- 多余的JS和CSS文件
- 快递.js无法获取我的 CSS 文件
- 无法查找元素'手动加载CSS文件时的CSS属性
- jquery移动应用程序无法使用jquryMobile框架JS和css文件的相对路径
- 不同的引导 CSS 文件
- 加载CSS文件并覆盖上一个文件
- 使用 JavaScript 动态加载 CSS 文件
- 如何使用谷歌页面速度CSS加载脚本延迟多个CSS文件
- 在 html 文件中包含无缓存元标记是否也会阻止缓存该 html 文件中链接的 js 和 css 文件
- Spring MVC 集成 js 和 css 文件
- 如何将 JavaScript 和 CSS 文件添加到 MagentoModule