日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

背景半透明最佳实践

發(fā)布時(shí)間:2025/4/16 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 背景半透明最佳实践 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

透明作為一種效果增強(qiáng)的方案,被眾多視覺(jué)設(shè)計(jì)師喜歡。但因?yàn)?IE 的原因,透明,特別是半透明,已經(jīng)成為前端工程師最不愿意實(shí)現(xiàn)的東西?,F(xiàn)在有一個(gè)需求,需要對(duì)一個(gè)純色的層實(shí)現(xiàn)半透明效果。效果如下,邊框需要透明,透明度為 #000000 的 30%:

?

用各種瀏覽器打開(kāi)下面這個(gè) DEMO, IE9 有特殊顯示:

DEMO: 背景半透明最佳實(shí)踐 ?

一、使用 opacity + Alpha Filter

看起來(lái)手挺簡(jiǎn)單的吧?嗯。挺簡(jiǎn)單的… 希望你能很方便實(shí)現(xiàn)這個(gè)方案!其實(shí)見(jiàn)到這個(gè)的時(shí)候,我們的第一想法當(dāng)然是 background + opacity,在不支持 opacity 的 IE 使用 filter 的 alpha 濾鏡來(lái)實(shí)現(xiàn)。然后,我們得到這樣的效果:

.opacity{background:#000;opacity:0.3;filter: alpha(opacity=30); }

無(wú)一例外,最外層,最內(nèi)層和文字,都被設(shè)置了 opacity(alpha 也是使用 opacity ) 。當(dāng)然,我們可以給各層設(shè)置 opacity 變回來(lái)。但這是多麻煩的事(不信試一下)。

二、最佳實(shí)踐:rgba色彩 + Gradient Filter

其實(shí)我們可以選用 background-color: rgba() 來(lái)實(shí)現(xiàn),同樣可以實(shí)現(xiàn)透明效果,并且只應(yīng)用于當(dāng)前元素,不繼承。而 IE 的 filter 有很多濾鏡效果。其中的漸變?yōu)V鏡,只要變通一下,就可以實(shí)現(xiàn)我們想要的效果,并且這個(gè)濾鏡不會(huì)被下級(jí)元素繼承,這樣元素的內(nèi)容就不會(huì)被虛化。代碼如下:

/** filter 漸變?yōu)V鏡詳細(xì)用法,[]* StartColorStr 和 EndColorStr:* #4c000000 是 30% 透明度的 #000000 的意思* 組成: # + 透明度 + 顏色* 算法: Math.floor(0.6 * 255).toString(16);*/ .rgba{background:rgba(0, 0, 0, 0.3);filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr='#4c000000', EndColorStr='#4c000000'); }

?不過(guò),我們得到的效果是這樣的,IE9 的透明度竟然有 60%!! 這顯然不是我們想法的。原因是:IE9 也支持 filter,使得 filter 的結(jié)果和 background-color 疊加,所以是 60%。具體參見(jiàn) DEMO 和示例圖:

那么我們可以利用 IE 的 HACK,單獨(dú)把 IE9 的 filter 變成透明度為 0 即可。高級(jí)瀏覽器大部分支持 :root 偽類,但不支持 filter 屬性,而 IE 只有 IE9 支持,所以我們可以這樣寫(xiě)。代碼如下:

:root .rgba{filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr='#00000000', EndColorStr='#00000000'); }

?當(dāng)然,第二種方法可以應(yīng)用于 background,也可應(yīng)用于 border 上。整體的代碼可參見(jiàn) DEMO。最后,還是那句話,期待你更好的解決方案。

參考文獻(xiàn):

  • CSS background transparency without affecting child elements, through RGBa and filters
  • MSDN: Gradient Filter
  • MSDN: Alpha Filter
  • IE9 Only Hack

?

轉(zhuǎn)載于:https://blog.51cto.com/3465667/702966

總結(jié)

以上是生活随笔為你收集整理的背景半透明最佳实践的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。