html中圖片背景的透明度如何設計 html怎么把圖片背景設置為透明



文章插圖
html中圖片背景的透明度如何設計 html怎么把圖片背景設置為透明

文章插圖
我們在做PC端項目的時候,常常會碰到透明背景和透明圖片的的需求,但是透明度常常有會發生很多問題,特別是背景透明內容不透明,想要兼容所有瀏覽器實現起來就比較麻煩 。
如何實現背景透明,文字不透明,兼容所有瀏覽器?
其實平時說的調整透明度,其實是在樣式中調整不透明度,如下圖:
打開ps,在圖層面板上,可以看到設置-圖層調整 不透明度的菜單,從 0% (完全透明)到 100%(不透明)
實現透明的css樣式通常有以下3種方式,以下是不透明度都為50%的寫法
css3的opacity:value,value 的取值從 0 到 1,如opacity: 0.5css3的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一般用于調整個別圖片,或者部分模塊的的透明度
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title><style>*{padding:0;margin: 0;}.content{width: 200px;height: 100px;padding: 50px 50px;background-color: red;opacity: 0.5;/* 設置不透明度50% */}p{width: 100px;height: 100px;background: green;}</style></head><body><div class="content"><p>背景透明,內容也透明</p></div></body></html>使用opacity后整個模塊都透明了,展現如下:
那么使用opacity實現(背景透明,文字不透明)是無法實現的 。
2、css3的rgba
兼容性:IE6、7、8不支持,IE9及以上版本和標準瀏覽器都支持
使用說明:設置顏色的透明度,只要用到設置顏色都適用 。
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title><style>*{padding:0;margin: 0;}.content{width: 200px;height: 100px;padding: 50px 50px;background-color: rgba(255, 0, 0, 0.5);/* 用rgba設置背景透明,內容不會受影響 */}p{width: 100px;height: 100px;background: green;}</style></head><body><div class="content"><p>背景透明,內容也透明</p></div></body></html>
我們想要的效果
我們想要的效果
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(默認屬性),其子元素為相對定位,可讓子元素不透明
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title><style>*{padding:0;margin: 0;}.content{width: 200px;height: 100px;padding: 50px 50px;background-color: red;filter:Alpha(opacity=50);/* 只支持IE6、7、8、9 */position:static;/* IE6、7、8只能設置position:static(默認屬性),否則會導致子元素繼承Alpha值 */*zoom:1;/* 激活IE6、7的haslayout屬性,讓它讀懂Alpha */}p{width: 100px;height: 100px;background: green;position: relative;}</style></head><body><div class="content"><p>背景透明,內容也透明</p></div></body></html>
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的方案的方法,
/* 只支持IE6、7、8 */ @media screen,screen9 {...}透明度所有問題都解決了,全部代碼如下:
【html中圖片背景的透明度如何設計 html怎么把圖片背景設置為透明】<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title><style>*{padding:0;margin: 0;}.content{width: 200px;height: 100px;padding: 50px 50px;background-color: rgba(255, 0, 0, 0.5);}p{width: 100px;height: 100px;background: green;}@media screen,screen9 {/* 只支持IE6、7、8 */.content{background-color:red;filter:Alpha(opacity=50);position:static;/* IE6、7、8只能設置position:static(默認屬性),否則會導致子元素繼承Alpha值 */*zoom:1;/* 激活IE6、7的haslayout屬性,讓它讀懂Alpha */}.content p{position: relative;/* 設置子元素為相對定位,可讓子元素不繼承Alpha值 */}}</style></head><body><div class="content"><p>背景透明,內容也透明</p></div></body></html>