使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法


Posted in Javascript onApril 07, 2011

如下

<div style="width:100px;height:100px;background:gold"></div>

用IE开发者工具,或IE8自带的开发者工具。结构如 图1 :

使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法

红色所圈之处可以看到给div添加的内联样式width,height,background都依次排列。正常!

但给该div添加filter:alpha(opacity=20)后,

<div style="filter:alpha(opacity=20);width:100px;height:100px;background:gold"> 
</div>

情况发生了变化,如 图2 :

使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法

红色所圈之处看到,width和filter挤在一行上了。正常的情况width应该另起一行。
有人也许会说这只是开发者工具没有正确显示,只要不影响页面元素正确渲染即可。
的确,在IE6/7/8/9 中该元素宽度、高度、背景色及透明度都能按设置所期望的渲染,显示。如图:

使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法

此外,将样式写在style标签内或css文件中也会出现以上现象。

再看下JS设置filter,情况稍有不同。代码如下:

<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>IE 6/7/8/9 中JS设置filter</title> 
</head> 
<body> 
<div id="d1" style="width:100px;height:100px;background:gold"></div> 
<script type="text/javascript"> 
var d1 = document.getElementById('d1'); 
d1.style.filter = 'alpha(opacity=20)'; 
</script> 
</body> 
</html>

IE中查看结构,效果如 图2 ,即filter和width在一行。

注意以上html中的最后一句js代码

d1.style.filter = 'alpha(opacity=20)';

右小括号后没有加分号。现在该句稍改下(的确是稍改,只加了个分号)
d1.style.filter = 'alpha(opacity=20);';

即在由小括号后加了个 分号 ";" 。 这时查看IE开发者工具如 图3 :

使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法

红色所圈之处看到四个css属性background、filter、height和width单独在一行显示。而没有像 图2 中filter和width在一行显示。

PS:很多流行JS库设置透明的方法没有加 alpha(opacity=20)后的分号。

Javascript 相关文章推荐
33种Javascript 表格排序控件收集
Dec 03 Javascript
JQuery Ajax通过Handler访问外部XML数据的代码
Jun 01 Javascript
jquery 插件学习(六)
Aug 06 Javascript
使用Math.floor与Math.random取随机整数的方法详解
May 07 Javascript
javascript生成随机数的方法
May 16 Javascript
JS如何实现文本框随文本的长度而增长
Jul 30 Javascript
深入浅析javascript立即执行函数
Oct 23 Javascript
基于node实现websocket协议
Apr 25 Javascript
微信小程序实现图片轮播及文件上传
Apr 07 Javascript
Vue父组件如何获取子组件中的变量
Jul 24 Javascript
vue data恢复初始化数据的实现方法
Oct 31 Javascript
JavaScript实现栈结构Stack过程详解
Mar 07 Javascript
javascript各浏览器中option元素的表现差异
Apr 07 #Javascript
IE6/7/8中Option元素未设value时Select将获取空字符串
Apr 07 #Javascript
我的javascript 函数链之演变
Apr 07 #Javascript
JavaScript中链式调用之研习
Apr 07 #Javascript
js中各浏览器中鼠标按键值的差异
Apr 07 #Javascript
javascript 单例/单体模式(Singleton)
Apr 07 #Javascript
Safari5中alert的无限循环BUG
Apr 07 #Javascript
You might like
apache+php完美解决301重定向的两种方法
2011/06/08 PHP
php中jQuery插件autocomplate的简单使用笔记
2012/06/14 PHP
mysqli扩展无法在PHP7下升级问题的解决
2019/09/10 PHP
用正则表达式 动态创建/增加css style script 兼容IE firefox
2009/03/10 Javascript
jQuery使用before()和after()在元素前后添加内容的方法
2015/03/26 Javascript
javascript实现完美拖拽效果
2015/05/06 Javascript
jquery实现通用的内容渐显Tab选项卡效果
2015/09/07 Javascript
JavaScript中各种引用类型的常用操作方法小结
2016/05/05 Javascript
jQuery实现磁力图片跟随效果完整示例
2016/09/16 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
2017/01/13 Javascript
angularjs指令之绑定策略(@、=、&amp;)
2017/04/13 Javascript
Vue原理剖析 实现双向绑定MVVM
2017/05/03 Javascript
Vue2 Vue-cli中使用Typescript的配置详解
2017/07/24 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
详解如何在项目中使用jest测试react native组件
2018/02/09 Javascript
详解Node.js 中使用 ECDSA 签名遇到的坑
2018/11/26 Javascript
Node.js原生api搭建web服务器的方法步骤
2019/02/15 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
Python中json格式数据的编码与解码方法详解
2016/07/01 Python
Python实现一个Git日志统计分析的小工具
2017/12/14 Python
教你使用python实现微信每天给女朋友说晚安
2018/03/23 Python
Python3非对称加密算法RSA实例详解
2018/12/06 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
在linux下实现 python 监控usb设备信号
2019/07/03 Python
python模拟实现斗地主发牌
2020/01/07 Python
深入了解Python 方法之类方法 &amp; 静态方法
2020/08/17 Python
Python爬取网页信息的示例
2020/09/24 Python
Python中Selenium模块的使用详解
2020/10/09 Python
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
Linux管理员面试经常问道的相关命令
2013/04/29 面试题
民用住房租房协议书
2014/10/29 职场文书
党小组推荐意见
2015/06/02 职场文书
如何判断微信付款码和支付宝付款码
2021/04/01 PHP
mysql sum(if())和count(if())的用法说明
2022/01/18 MySQL
Python+Selenium实现读取网易邮箱验证码
2022/03/13 Python
windows server 2012安装FTP并配置被动模式指定开放端口
2022/06/10 Servers