我們在做PC端項目的時候,常常會碰到背景透明,文字不透明的兼容處理的需求,但是透明度常常有會發(fā)生很多問題,特別是背景透明內容不透明,想要兼容所有瀏覽器實現起來就比較麻煩。
如何實現背景透明,文字不透明,兼容所有瀏覽器?
其實平時說的調整透明度,其實是在樣式中調整不透明度,如下圖:
打開ps,在圖層面板上,可以看到設置-圖層調整 不透明度的菜單,從 0% (完全透明)到 100%(不透明)
實現透明的css樣式通常有以下3種方式,以下是不透明度都為50%的寫法
· css3的opacity:value,value 的取值從 0 到 1,如opacity: 0.5
· css3的rgba(red, green, blue, alpha),alpha(透明度)的取值從 0 到 1,如rgba(255,255,255,0.5)
· IE專屬濾鏡 filter:Alpha(opacity=value),value 的取值從 0 到 100,如filter:Alpha(opacity=50)
下面我們來一個一個的解釋:
1、Css3的opacity
兼容:Css3的opacity不兼容IE低版本,IE6/7/8不支持,IE9以上都支持
opacity適用情況:設置opacity的元素,不光設置的元素透明,后代元素也會繼承opacity,一起也有透明效果,所以opacity一般用于調整個別圖片,或者部分模塊的的透明度
使用opacity后整個模塊都透明了,展現如下:
那么使用opacity實現(背景透明,文字不透明)是無法實現的。
2、css3的rgba
兼容性:IE6、7、8不支持,IE9及以上版本和標準瀏覽器都支持
使用說明:設置顏色的透明度,只要用到設置顏色都適用。
我們想要的效果
IE6、7、8rgba的錯誤顯示
所以rgba可以設置我們想要的效果,但是有兼容性,IE6、7、8設置rgba會錯誤顯示,識別不了,但是有IE專屬濾鏡 filter:Alpha(opacity=x),我們可以一起看看。
3、IE專屬濾鏡 filter:Alpha(opacity=x)
使用說明:IE瀏覽器專屬,問題多多,本文以設置背景透明為例子,如下:
· 僅支持IE6、7、8、9,在IE10版本被廢除
· 在IE6、7中,需要激活IE的haslayout屬性(如:*zoom:1或者*overflow:hidden),讓它讀懂filter:Alpha
· 在IE6、7、8中,設置了filter:Alpha的元素,父元素設置position:static(默認屬性),其子元素為相對定位,可讓子元素不透明
IE6、7、8的可以識別濾鏡 filter
在IE10版本被廢除,IE10和10以上不識別
4、透明度全兼容的方案
以上分析我們知道,設置透明背景內容不透明,可使用的屬性有rgba和IE的專屬濾鏡filter:Alpha
針對IE6、7、8瀏覽器,我們可以使用fiter濾鏡,針對標準瀏覽器我們使用rgba,那么問題來了,IE9瀏覽器2個屬性都支持,一起使用會重復降低不透明度,那么,如何只對IE6、7、8使用fiter:Alpha如何實現呢?我們可以通過CssHack,設置有IE的相關hack,找到只支持IE 6、7、8的方案的方法,
透明度所有問題都解決了,全部代碼如下:
更多關于前端培訓的問題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓服務經驗,采用全程面授高品質、高體驗培養(yǎng)模式,擁有國內一體化教學管理及學員服務,助力更多學員實現高薪夢想。
注:本文部分文字和圖片來源于網絡,如有侵權,請聯(lián)系刪除。版權歸原作者所有!