CSS背景色鏤空技術(shù)實際應(yīng)用及進階分享

其實在10年的時候,3年前我就介紹過背景色鏤空技術(shù),文章名為:“使用CSS實現(xiàn)Photoshop選區(qū)效果及應(yīng)用”。
實現(xiàn)的就是類似下面的效果。虛框是個gif動畫背景,水果圖片1像素鏤空,于是就有效果啦!

今天我翻墻逛twitter的時候,見到了這種技術(shù)更為實際的應(yīng)用。
看下圖所示的效果截圖:
問題:這些小圖標是如何實現(xiàn)的呢?
當下,我們一般的做法是,打開photoshop,把這些圖標摳出來,然后周邊透明,以用在各種背景上。
然而,twitter的上圖效果是相反的做法,圖標形狀區(qū)域是透明鏤空的,而周邊是實色的。
這種實現(xiàn)的優(yōu)點不言而喻,可以很自在得控制小圖標的顏色,而這個控制就是CSS的background-color
.
您可以狠狠地點擊這里:背景色鏤空技術(shù)與顏色可控圖標demo
Chrome瀏覽器下,有color
控件:
.icon {
display: inline-block;
width: 16px; height: 20px;
background-image: url(sprite_icons.png);
background-color: #34538b; /* 該顏色控制圖標的顏色 */
}
.icon1 { background-position: 0 0; }
.icon2 { background-position: -20px 0; }
.icon3 { background-position: -40px 0; }
.icon4 { background-position: -60px 0; }<i class="icon icon1"></i><a href="##" class="link">返回</a>
<i class="icon icon2"></i><a href="##" class="link">刷新</a>
<i class="icon icon3"></i><a href="##" class="link">收藏</a>
<i class="icon icon4"></i><a href="##" class="link">展開圖片</a>
三、該技術(shù)的局限性
局限性有兩點:
圖標所在的背景色純色,且不會經(jīng)常變化;
只能是純色或者漸變性質(zhì)的圖標可以使用該技術(shù)。
四、自己更進一步改進-color實現(xiàn)
以下為自己的嘗試,還沒有大規(guī)模測試,可能某些國家或某些設(shè)備會有問題,歡迎反饋。
通過background-color控制圖標顏色已經(jīng)非常靈活了,但是,還不是足夠靈活。舉個例子,我希望圖標的顏色直接與后面的文字一致,文字顏色(color)可以直接從父級繼承,但是圖標如果是background-color實現(xiàn),則不能繼承,那能不能使用color實現(xiàn)圖標效果呢?
答案是可以的!
思路如下,使用字符實現(xiàn)實色背景效果;然后,鏤空背景圖覆蓋在上面,于是效果實現(xiàn),over!
腦中常備很多奇怪字符,因此,第一反應(yīng)就是這廝:█,該字符連寫就是個塊狀區(qū)域。“老板,來個糖葫蘆”,██████
我們稍微讓這個字符字號大點,就可以撐滿圖標容器,于是,color實現(xiàn)的偽背景色效果就可以實現(xiàn)了!
一例頂千言,您可以狠狠地點擊這里:背景色鏤空技術(shù)之color屬性實現(xiàn)顏色可控圖標demo
上面為了單標簽實現(xiàn),所以使用了before與after偽元素,因此,IE8+瀏覽器支持,IE6/IE7瀏覽器醬油中……
目前百度瀏覽研究院的數(shù)據(jù)來看,IE6/IE7以外瀏覽器已超過80%+, 因此,條件允許,這兩個瀏覽器就可以忽略了。
相關(guān)CSS如下:
.icon {
display: inline-block;
width: 16px; height: 20px;
overflow: hidden;
position: relative;
}
.icon:before {
content: '█';
margin: -5px 0 0 -5px;
font-size: 30px;
position: absolute;
}
.icon:after {
content: '';
display: block;
width: 100%; height: 100%;
background-image: url(sprite_icons.png);
position: relative;
}
.icon1:after { background-position: 0 0; }
.icon2:after { background-position: -20px 0; }
.icon3:after { background-position: -40px 0; }
.icon4:after { background-position: -60px 0; }
.out { color: #34538b; /* 父標簽上的該顏色控制圖標的顏色 */}
如果您希望兼容IE6/IE7瀏覽器,也是可以的,需要多一層標簽,如下:
<p class="out">
<i class="icon icon1"><s></s>█</i><a href="##" class="link">返回</a>
<i class="icon icon2"><s></s>█</i><a href="##" class="link">刷新</a>
<i class="icon icon3"><s></s>█</i><a href="##" class="link">收藏</a>
<i class="icon icon4"><s></s>█</i><a href="##" class="link">展開圖片</a>
</p>
.icon {
display: inline-block;
width: 16px; height: 20px;
line-height: 20px;
font-size: 30px;
overflow: hidden;
position: relative;
}
.icon s {
width: 100%; height: 100%;
background-image: url(sprite_icons.png);
position: absolute; left: 0; top: 0;
}
.icon1 s { background-position: 0 0; }
.icon2 s { background-position: -20px 0; }
.icon3 s { background-position: -40px 0; }
.icon4 s { background-position: -60px 0; }
.out { color: #34538b; /* 父標簽上的該顏色控制圖標的顏色 */}
您可以狠狠地點擊這里:背景色鏤空+color屬性實現(xiàn)顏色可控圖標兼容IE6/IE7 demo
下圖為IE7瀏覽器下截圖:
轉(zhuǎn)載請注明來自張鑫旭-鑫空間-鑫生活
相關(guān)文章
- 這篇文章主要介紹了CSS實現(xiàn)鏤空遮罩效果,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-20
- 這篇文章主要介紹了用純CSS實現(xiàn)鏤空效果的示例代碼的相關(guān)資料,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-02-25
- 這篇文章主要介紹了CSS實現(xiàn)鏤空效果的示例代碼的相關(guān)資料,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-24
CSS3中文字鏤空、透明值、陰影效果設(shè)置示例小結(jié)
這篇文章主要介紹了CSS中文字鏤空、透明值、陰影效果設(shè)置示例小結(jié),其中通過text-stroke-color透明值的設(shè)置可以讓文字在某些程度上更加柔和,需要的朋友可以參考下2016-03-07- 這篇文章主要介紹了使用CSS實現(xiàn)中間鏤空的圖片遮罩效果的方法,文中同時附帶介紹了一個用CSS3實現(xiàn)的鏤空一個圓形的代碼示例,需要的朋友可以參考下2015-12-24
- 這篇文章主要介紹了css3遮罩層鏤空效果的多種實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學2020-05-11