鼓勵此網誌:0
之前一直有個認知:非 IE 瀏覽器似乎不能套用透明度的 CSS,
但這是錯誤的,
實際原因是每個瀏覽器的 CSS 透明度語法不同(又是 browser issue...b)。
以前處理透明度都是這樣寫:
| filter: alpha(opacity=50); |
但這是 IE only。
有人可能看過
| -moz-opacity: 0.5; |
這樣的語法,
但這是 Mozilla Family only(好煩啊~~XD|||)。
標準的 CSS 規格其實是這樣
| opacity: 0.5; |
FF 1.5 也支援這這樣的寫法。
可以發現 Opera 並沒有相對應的語法,
沒錯,Opera 目前還有沒有支援透明度,
但它支援 PNG 的透明度,
所以目前權宜之計就是使用透明 PNG 圖片啦~~XD|||b
最後,我是採取這樣的寫法讓 IE 和 FF 都可以支援透明度:
filter:alpha(opacity=80); /* for IE */
opacity:0.8; /* CSS3 standard */ |
其他更進一步的資訊可以看下面的參考網頁。
【2009.12.01 補充】
今天修改一下 html 碼後赫然發現,原本可以用的透明度突然沒效用了???
同一段 CSS code,原本能用,之後不能用?
而且只有 IE 失去效用,FF 還是正常?
這是怎麼回事???=口="
上網查看看有沒有相關問題,發現了這篇:
在 IE8 底下要改用這樣的寫法: filter: 'alpha(opacity=30)' ... 但是,用單引號包起來後,在 IE6 和 IE7 卻變得無效喔,所以這時又要用到 hack 了: filter: 'alpha(opacity=30)'; 加了星號的 filter 在 IE6 和 IE7 有效,且會蓋掉先前的設定,這樣就可以同時相容 IE6~8 了... |
但我試了沒用,而且作者最後也有補充:
請注意:IE8 從 RC1 以後已經修正了透明色的問題,透明色用法與先前的版本 IE6, IE7 相同。 以上內容僅適用於 IE8 beta 版。 |
所以我又繼續找,終於找到這篇,
竟然是因為沒有指定 width 的關係?這是什麼鬼???=口="
| 大部分IE滤镜需要一个确切的宽度。 |
的確,先前的元件有指定 width,但後來修改的元件沒有,
所以我在 CSS 中指定「width: 10px」(讓元件的內容自動撐開)後,就行了?!
只能說 IE 真的很難搞.........~"~
- IE8 與 CSS 透明色 (opacity) (20090316更新) - 網頁設計 - jsGears.com 技術論壇
- 为什么在IE下有些元素的透明样式无效 - Html & XHtml & CSS 网页制作讨论版








