收藏 | 點贊
小五最近做的項目,需要一個小效果,就是獲取用戶頭像以心形的形狀展現(xiàn)在頁面上,開始小五想的實現(xiàn)方式是canvas畫圖或CSS3的clip(剪切),發(fā)現(xiàn)都不理想,和設(shè)計稿里的圖形美觀度相差太大,而且實現(xiàn)起來太麻煩,后來,小五采用了一個CSS3的新增屬性完美的解決了這個問題,今天就來和大家分享一下。
首先來解釋一下遮罩、蒙版:和PS中的蒙版、Flash中的遮罩層很類似
遮罩:為了得到特殊的顯示效果,可以在遮罩層上創(chuàng)建一個任意形狀的“視窗”,遮罩層下方的對象可以通過該“視窗”顯示出來,而“視窗”之外的對象將不會顯示。mask便是創(chuàng)建這樣一個遮罩層。
一、Mask 的兼容性
以下是來自 caniuse 的統(tǒng)計:
ie/edge 全面不支持,Android 和 iOS Safari 陣營幾乎全線飄淺綠,意味著支持部分功能 。不過,Android 4.0 及以下版本的對 mask 的兼容性并不友好!多虧了近幾年智能手機市場的良性競爭,給移動前端制造了一個相對良好的環(huán)境,經(jīng)小五親測,主流機型基本上都支持這個屬性了。
二、Mask 的原理
蒙板可以是 CSS3 漸變或者半透明的PNG圖片,蒙板元素的alpha值為0的時候會覆蓋下面的元素,為1的時候會完全顯示下面的內(nèi)容。如下:
三、mask 的屬性
-webkit-mask-image:url | gradient /*可以使用圖片或漸變作為遮罩層*/ -webkit-mask-repeat:repeat | repeat-x | repeat-y | no-repeat -webkit-mask-position:x y; -webkit-mask-clip:border | padding | content -webkit-mask-origin:border | padding | contentPS:mask 的語法與 background 是相仿的。
四、實戰(zhàn)
原素材:
① 心形圖片實現(xiàn)
HTML:
CSS:
img{ position: absolute; width: 300px; height: 256px; left: 50%; top: 50%; margin-left: -150px; margin-top: -128px; -webkit-mask-image:url(images/mask1.png); }DEMO演示
② 漸變圖片實現(xiàn)
HTML:
CSS:
img{ position: absolute; width: 300px; height: 256px; left: 50%; top: 50%; margin-left: -150px; margin-top: -128px; -webkit-mask-image:url(images/mask2.png); }DEMO演示
或者是將漸變以代碼的形式進行設(shè)置
img{ position: absolute; width: 300px; height: 256px; left: 50%; top: 50%; margin-left: -150px; margin-top: -128px; -webkit-mask-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,1)),to(rgba(0,0,0,0))); }效果呈現(xiàn):
0 條評論