搜尋
首頁web前端css教學CSS的mask-image屬性詳解

這次帶給大家CSS的mask-image屬性詳解,使用CSS的mask-image屬性注意事項有哪些,下面就是實戰案例,一起來看一下。

CSS mask遮罩屬性的歷史非常久遠了,遠到比CSS3 border-radius等屬性還要久遠,最早是出現在Safari瀏覽器上的,差不多可以追溯到09年。

不過那時候,遮罩只能作為實驗性的屬性,做一些特效使用。畢竟那個年代還是IE瀏覽器的時代,屬性雖好,但價值有限。

但是如今情況卻大有變化,除了IE和Edge瀏覽器不支持,Firefox,Chrome以及移動端等都已經全線支持,其實際應用價值已不可同日而語。特別是Firefox瀏覽器,從版本55開始,已經全面支援了CSS3 mask屬性。而mask屬性規範已經進入候選推薦規範之列,會說以後進入既定規範標準已經是板上釘釘的事情,大家可以放心學習,將來必有用處。

在過去,CSS mask屬性在使用的時候就是mask: xxx,但是現在隨著這個屬性的規範化,mask屬性實際上已經成為了諸多mask-*的縮寫,這和background, border性質是一樣的。

具體是哪些屬性的縮寫呢,可以參考下面的列表:

  1. #mask-image

  2. ##mask-mode

  3. mask-repeat

  4. mask-
  5. position

  6. mask- clip

  7. mask-origin

  8. #mask-size

  9. mask-type

#mask-composite

下面我們先來介紹mask-image 屬性的用法。 mask-image指遮罩使用的

圖片

資源,預設值是none,也就是無遮罩圖片。因此,和border屬性中的

border-style

屬性類似,是想要有效果就必須設定的屬性值。

mask-image遮罩所支援的圖片類型非常的廣泛,可以是url()靜態圖片資源,格式包括JPG,PNG以及SVG等都是支援的;也可以是動態產生的圖片,例如使用各種CSS3漸層繪製的圖片。語法上支援CSS3各類漸變,以及url()功能符,image()功能符,甚至element()功能符。同時也支援多背景,因此理論上,使用mask-image我們可以遮罩出任意我們想要的圖形,非常強大。

眼見為實,我們透過大量案例來展示mask-image的強大之處。

首先,以下所有案例使用原始圖如下:

我們先來一個最基礎的png圖片遮罩展示。

CSS程式碼如下:

.mask-image {
    width: 250px; height: 187.5px;
    -webkit-mask-image: url(loading.png);
    mask-image: url(loading.png);
}

HTML程式碼如下:

<img  class="mask-image lazy" src="/static/imghwm/default1.png" data-src="ps1.jpg" alt="CSS的mask-image屬性詳解" >
最後的效果,如下圖所示:

從上面這個最基本的案例,我們可以看出,所謂遮罩,就是原始圖片只顯示遮罩圖片非透明的部分。例如本案例中,loading圓環有顏色部分就是外面一圈圓環,於是最後我們看到效果是原始圖片,只露出了一個一個的圈圈環。且半透明區域也準確遮罩顯示了。

因此,我們很少使用jpg圖片來作為遮罩圖片的,因為jpg圖片一定是完全不透明的,最終的效果就是原圖什麼也看不見。

另外,如果loading.png載入失敗,則Firefox,Chrome瀏覽器下直接原始圖不顯示。

接著我們再來看一個SVG圖形遮罩效果展示。

###css程式碼如下:###
.mask-image {
    width: 250px; height: 187.5px;
    -webkit-mask-image: url(star.svg);
    mask-image: url(star.svg);
}
###html程式碼如下:###
<img  class="mask-image lazy" src="/static/imghwm/default1.png" data-src="ps1.jpg" alt="CSS的mask-image屬性詳解" >

最终的效果和上图相似。

上面是将svg作为背景图来实现的,现在我们再使用SVG图形中元素作为遮罩元素来实现它。

CSS 代码如下:

.mask-image {
    width: 250px; height: 187.5px;
    -webkit-mask-image: url(#mask);
    mask-image: url(#mask);
    /* Firefox外链也支持 */
    /* mask-image: url(ellipse-rect.svg#mask); */
}

html代码如下:


       
        
            
            
            
            
            
            
        
       

<img  class="mask-image lazy" src="/static/imghwm/default1.png" data-src="ps1.jpg" alt="CSS的mask-image屬性詳解" >

再使用SVG元素内联SVG的,看下面的实现。

CSS 代码:

.mask-image {
    width: 250px; height: 187.5px;
    -webkit-mask-image: url(#mask);
    mask: url(#mask);
    mask-image: url(#mask);
    /* Firefox外链也支持 */
    /* mask-image: url(ellipse-rect.svg#mask); */
}

SVG实现的代码:

<svg>
    <defs>   
        <mask>
            <!-- 柔化边缘 www.xttblog.com-->
            <ellipse></ellipse>
            <rect></rect>
            <!-- 主体遮罩 -->
            <ellipse></ellipse>
            <rect></rect>
        </mask>
    </defs>   
</svg>
<svg>
    <image></image>
</svg>

无论是clip-path还是这里的mask,外链SVG特性的支持一定是比内联SVG弱的。既然Chrome浏览器连普通HTML的内联SVG的都不支持,自然肯定不支持这里的外链SVG文件元素的遮罩支持。

那之前表现良好的Firefox浏览器呢?

比较幸运,Firefox浏览器最近支持了任意元素外链SVG文件的,为什么说最近呢?我看了下我现在的Firefox,显示最新版,版本是56,然后Firefox支持任意元素可以使用外链SVG 元素作为遮罩是版本55开始了。

至于上面的,任意元素内联SVG 的支持,Firefox很早就已经支持。

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

hover选择器如何使用

css3的新单位使用详解

CSS做出图片背景填充的六边形

以上是CSS的mask-image屬性詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
什麼是CSS網格?什麼是CSS網格?Apr 30, 2025 pm 03:21 PM

CSS網格是創建複雜,響應式Web佈局的強大工具。它簡化了設計,提高可訪問性並提供了比舊方法更多的控制權。

什麼是CSS Flexbox?什麼是CSS Flexbox?Apr 30, 2025 pm 03:20 PM

文章討論了CSS FlexBox,這是一種佈局方法,用於有效地對齊和分佈響應設計中的空間。它說明了FlexBox用法,將其與CSS網格進行了比較,並詳細瀏覽了瀏覽器支持。

我們如何使用CSS使網站迅速響應?我們如何使用CSS使網站迅速響應?Apr 30, 2025 pm 03:19 PM

本文討論了使用CSS創建響應網站的技術,包括視口元標籤,靈活的網格,流體媒體,媒體查詢和相對單元。它還涵蓋了使用CSS網格和Flexbox一起使用,並推薦CSS框架

CSS盒裝屬性有什麼作用?CSS盒裝屬性有什麼作用?Apr 30, 2025 pm 03:18 PM

本文討論了CSS盒裝屬性,該屬性控制了元素維度的計算方式。它解釋了諸如Content-Box,Border-Box和Padding-Box之類的值,以及它們對佈局設計和形式對齊的影響。

我們如何使用CSS動畫?我們如何使用CSS動畫?Apr 30, 2025 pm 03:17 PM

文章討論使用CSS,關鍵屬性並與JavaScript結合創建動畫。主要問題是瀏覽器兼容性。

我們可以使用CSS向我們的項目添加3D轉換嗎?我們可以使用CSS向我們的項目添加3D轉換嗎?Apr 30, 2025 pm 03:16 PM

文章討論了Web項目的3D轉換,關鍵屬性,瀏覽器兼容性和性能注意事項的討論。 (角色計數:159)

我們如何在CSS中添加梯度?我們如何在CSS中添加梯度?Apr 30, 2025 pm 03:15 PM

文章討論了使用CSS梯度(線性,徑向,重複)來增強網站視覺效果,添加深度,焦點和現代美學。

CSS中的偽元素是什麼?CSS中的偽元素是什麼?Apr 30, 2025 pm 03:14 PM

文章討論了CSS中的偽元素,它們在增強HTML樣式方面的使用以及與偽級的差異。提供實用的例子。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。