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