广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >CSS中mask-image属性的示例分析
  • 281
分享到

CSS中mask-image属性的示例分析

2024-04-02 19:04:59 281人浏览 八月长安
摘要

这篇文章给大家分享的是有关CSS中mask-image属性的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。CSS mask遮罩属性的历史非常久远了,远到比css3 bor

这篇文章给大家分享的是有关CSS中mask-image属性的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

CSS mask遮罩属性的历史非常久远了,远到比css3 border-radius等属性还要久远,最早是出现在Safari浏览器上的,差不多可以追溯到09年。

不过那个时候,遮罩只能作为实验性的属性,做一些特效使用。毕竟那个年代还是IE浏览器的时代,属性虽好,但价值有限。

但是如今情况却大有变化,除了IE和Edge浏览器不支持,Firefox,Chrome以及移动端等都已经全线支持,其实际应用价值已不可同日而语。尤其Firefox浏览器,从版本55开始,已经全面支持了CSS3 mask属性。并且mask属性规范已经进入候选推荐规范之列,会说以后进入既定规范标准已经是板上钉钉的事情,大家可以放心学习,将来必有用处。

CSS中mask-image属性的示例分析

在过去,CSS mask属性在使用的时候就是mask: xxx,但是现在随着这个属性的规范化,mask属性实际上已经成为了诸多mask-*的缩写,这和background, border性质是一样的。

具体是哪些属性的缩写呢,可以参见下面的列表:

  1. mask-image

  2. mask-mode

  3. mask-repeat

  4. mask-position

  5. mask-clip

  6. mask-origin

  7. mask-size

  8. mask-type

  9. 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的强大之处。

首先,下面所有案例使用原始图如下:

CSS中mask-image属性的示例分析

我们先来一个最基础的png图片遮罩展示。

CSS代码如下:

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

html代码如下:

<img src="ps1.jpg" class="mask-image">

最后的效果,如下图所示:

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 src="ps1.jpg" class="mask-image">

最终的效果和上图相似。

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

CSS 代码如下:

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

html代码如下:

<svg>
    <defs>   
        <mask id="mask" maskContentUnits="objectBoundingBox">
            <!-- 柔化边缘 -->
            <ellipse cx=".5" cy=".5" rx=".48" ry=".28" fill="black"></ellipse>
            <rect x=".2" y="0" width=".6" height="1" rx=".1" ry=".1" fill="black"></rect>
            <!-- 主体遮罩 www.xttblog.com -->
            <ellipse cx=".5" cy=".5" rx=".4" ry=".2" fill="white"></ellipse>
            <rect x=".3" y=".1" width=".4" height=".8" rx=".1" ry=".1" fill="white"></rect>
        </mask>
    </defs>   
</svg>
<img src="ps1.jpg" class="mask-image">

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

CSS 代码:

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

SVG实现的代码:

<svg>
    <defs>   
        <mask id="mask" maskContentUnits="objectBoundingBox">
            <!-- 柔化边缘 www.xttblog.com-->
            <ellipse cx=".5" cy=".5" rx=".48" ry=".28" fill="black"></ellipse>
            <rect x=".2" y="0" width=".6" height="1" rx=".1" ry=".1" fill="black"></rect>
            <!-- 主体遮罩 -->
            <ellipse cx=".5" cy=".5" rx=".4" ry=".2" fill="white"></ellipse>
            <rect x=".3" y=".1" width=".4" height=".8" rx=".1" ry=".1" fill="white"></rect>
        </mask>
    </defs>   
</svg>
<svg width="250" height="186">
    <image xlink:href="ps1.jpg" class="mask-image" width="250" height="186"></image>
</svg>

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

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

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

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

相信不久的版本,Chrome浏览器也会对其进行支持的,可以耐心等待。

感谢各位的阅读!关于“CSS中mask-image属性的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: CSS中mask-image属性的示例分析

本文链接: https://www.lsjlt.com/news/76634.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • CSS中mask-image属性的示例分析
    这篇文章给大家分享的是有关CSS中mask-image属性的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。CSS mask遮罩属性的历史非常久远了,远到比CSS3 bor...
    99+
    2022-10-19
  • CSS属性MASK的示例分析
    小编给大家分享一下CSS属性MASK的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!顾名思义,mask 译为遮罩。在 CSS 中,mask 属性允许使用者通过遮罩或者裁切特定区域的图片的方式来隐藏一个元素的部分或者...
    99+
    2023-06-08
  • css中will-change属性的示例分析
    这篇文章主要介绍了css中will-change属性的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。will-changeCSS 属...
    99+
    2022-10-19
  • CSS中position属性sticky的示例分析
    这篇文章主要介绍了CSS中position属性sticky的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在开发移动端app时,经常会碰到需要这样一种情况 &...
    99+
    2023-06-08
  • CSS属性之定位属性的示例分析
    小编给大家分享一下CSS属性之定位属性的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!CSS的定位属性有三种,分别是绝对定位、相对定位、固定定位。posi...
    99+
    2023-06-08
  • CSS属性text-overflow的示例分析
    这篇文章主要为大家展示了“CSS属性text-overflow的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“CSS属性text-overflow的示例...
    99+
    2022-10-19
  • CSS定位属性的示例分析
    这篇文章给大家分享的是有关CSS定位属性的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   1.定位的专业解释   (1)语法   position:static...
    99+
    2022-10-19
  • CSS列表属性的示例分析
    这篇文章主要介绍了CSS列表属性的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 CSS 列表 从某种含意上讲,不是描摹性的文本...
    99+
    2022-10-19
  • css中font不同属性的示例分析
    这篇文章给大家分享的是有关css中font不同属性的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   简写顺序:style-variant-weight-size/l...
    99+
    2022-10-19
  • Css技术中height属性的示例分析
    这篇文章主要介绍了Css技术中height属性的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、height1、height:10...
    99+
    2022-10-19
  • css中属性值继承的示例分析
    这篇文章主要介绍了css中属性值继承的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。继承:html元素可以从父元素那里继承一部分cs...
    99+
    2022-10-19
  • css中counter相关属性的示例分析
    小编给大家分享一下css中counter相关属性的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!COUNTER-RESET明译为计数器重置。形如: cou...
    99+
    2023-06-08
  • CSS定位position属性的示例分析
    这篇文章主要为大家展示了“CSS定位position属性的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“CSS定位position属性的示例分析”这篇文...
    99+
    2022-10-19
  • CSS属性选择器的示例分析
    这篇文章主要介绍CSS属性选择器的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具有特定属性的HTML元素样式具有特定属性的HTML元素样式不仅仅是class和id。注意:I...
    99+
    2022-10-19
  • CSS自定义属性的示例分析
    这篇文章主要为大家展示了“CSS自定义属性的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“CSS自定义属性的示例分析”这篇文章吧。 兼容性 第一个问...
    99+
    2022-10-19
  • css文字样式中属性的示例分析
    小编给大家分享一下css文字样式中属性的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!   1、设置文字字体&mdash;&mdash;font-family ...
    99+
    2022-10-19
  • CSS定位中四个属性的示例分析
    这篇文章给大家分享的是有关CSS定位中四个属性的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   CSSposition属性   总共有四个属性:   stati...
    99+
    2022-10-19
  • CSS中线性渐变linear-gradient属性的示例分析
    小编给大家分享一下CSS中线性渐变linear-gradient属性的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ...
    99+
    2022-10-19
  • Css个别属性应用的示例分析
    小编给大家分享一下Css个别属性应用的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!CSS的继承性CSS内部元素将继承外...
    99+
    2022-10-19
  • CSS中flex容器与flex属性的示例分析
    小编给大家分享一下CSS中flex容器与flex属性的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!flex conta...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作