使用濾鏡設定透明導致 IE 6/7/8/9 解析異常的解決方案

來源:互聯網
上載者:User

如下
複製代碼 代碼如下:
<div style="width:100px;height:100px;background:gold"></div>

用IE開發人員工具,或IE8內建的開發人員工具。結構如 圖1 :

紅色所圈之處可以看到給div添加的內聯樣式width,height,background都依次排列。正常!

但給該div添加filter:alpha(opacity=20)後,
複製代碼 代碼如下:
<div style="filter:alpha(opacity=20);width:100px;height:100px;background:gold">
</div>

情況發生了變化,如 圖2 :

紅色所圈之處看到,width和filter擠在一行上了。正常的情況width應該另起一行。
有人也許會說這隻是開發人員工具沒有正確顯示,只要不影響頁面元素正確渲染即可。
的確,在IE6/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 :

紅色所圈之處看到四個css屬性background、filter、height和width單獨在一行顯示。而沒有像 圖2 中filter和width在一行顯示。

PS:很多流行JS庫設定透明的方法沒有加 alpha(opacity=20)後的分號。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.