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性质是一样的。

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

mask-image

mask-mode

mask-repeat

mask-position

mask-clip

mask-origin

mask-size

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代码如下:

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

从上面这个最基本的案例,我们可以看出,所谓遮罩,就是原始图片只显示遮罩图片非透明的部分。例如本案例中,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代码如下:

最终的效果和上图相似。

上面是将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代码如下:

再使用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实现的代码:

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

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

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

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

mask属性是css3的吗_CSS mask-image属性详细介绍(小结)相关推荐

  1. mask属性是css3的吗_CSS遮罩——如何在CSS中使用遮罩

    大概一年前,我写过一篇文章介绍有关webkit中新的css技术--css滤镜,如果其他浏览器不能支持的话会,这是个麻烦. 有关于Webkit中的滤镜,大家要是感兴趣的话可以阅读<CSS3 Fil ...

  2. mask属性是css3的吗_CSS滤镜之Mask属性

    Mask属性为对象建立一个覆盖于表面的膜.它的表达式也很简单: Filter:Mask(Color=颜色) 只有一个Color参数,用来指定使用什么颜色作为掩膜. 同样,我们来看一下一幅图片在加上ma ...

  3. mask属性是css3的吗_CSS3 mask 遮罩的具体使用方法

    css的mask属性允许使用者通过部分或者完全隐藏一个元素的可见区域.这种效果可以通过遮罩或者裁切特定区域的图片. mask的简写会将 mask-border 设为初始值.使用mask的简写优于其他简 ...

  4. 浅谈CSS3中display属性的Flex布局,关于登陆页面属性框的设置

    声明:本文转发自三里屯柯南的浅谈CSS3中display属性的Flex布局http://www.cnblogs.com/xuyuntao/articles/6391728.html 基本概念 采用Fl ...

  5. css3动画模块transform transition animation属性解释

    首先来看下对各大浏览器的兼容性   IE Firefox Safari Chrome Opera CSS 2D Transform no 3.5 3.2 2.0 10.5 CSS 3D Transfo ...

  6. CSS3 Transform、Transition和Animation属性总结

    CSS3的三个与变形和动画啊相关的属性: Transform 浏览器支持情况: Internet Explorer 10.Firefox.Opera 支持 transform 属性. Internet ...

  7. CSS3简介、新增选择器、属性选择器、伪元素选择器、伪元素

    CSS3知识点: CSS3的相关属性不兼容低版本浏览器,IE9以下是不兼容的,在实际开发中要特别注意,移动端支持优于PC端,是在CSS2上新增的属性,关于兼容这里有两个名词需要了解: 渐进增强 :(针 ...

  8. CSS3 Flex布局子元素的属性

    弹性布局盒模型的核心,在于弹性容器中子元素的尺寸是弹性的,容器会根据布局的需要,自动调整子元素的尺寸和顺序,并以最佳方式填充所有可用空间. 当容器中有空白空间时,子元素可以扩展,以占据额外的空白空间: ...

  9. CSS3制作动画的三个属性

    CSS3属性中有关于制作动画的三个属性:Transform,Transition,Animation:我们一起学习完了Transform和Transition,让我们对元素实现了一些基本的动画效果,这 ...

最新文章

  1. 哀悼!华人著名计算机科学家刘炯朗逝世,图灵奖得主姚期智为其得意门生
  2. 访问HTTP网址的两种方式
  3. pythonurllib模块-Python3学习笔记(urllib模块的使用)
  4. Python的enumerater
  5. 刷新纪录 | 74.7 秒训练完 ImageNet!2048 GPU 暴力出奇迹
  6. JS 处理十六进制颜色渐变算法-输入颜色,输出渐变rgb数组
  7. (五)HTML5本地存储——Web Storage
  8. 领域应用 | 从数据到智慧,知识图谱如何推动金融更智能?
  9. 统计学中p值计算公式_不得不学的统计学基础知识(二)
  10. beyond company30天到期
  11. 100%在CSS中是什么意思?
  12. 如何离线下载Chrome的安装包
  13. 一款超漂亮的简历生成器,金三银四的你一定用得上
  14. 解决richedit的内容不能超过64k的方法
  15. @RequestBody、 @RequestParam 、 @PathVariable 和 @Vaild 注解的使用及区别
  16. Windows10永久关闭Windows Defender
  17. pandas随机抽取1000行
  18. Docker概述及使用
  19. 搭建高性能计算环境(四)、应用软件的安装之VASP
  20. 刷爆朋友圈!前百度总裁陆奇最新AI重磅演讲:我的大模型世界观

热门文章

  1. 数据统计之日活跃用户统计
  2. python之进程和线程的对比
  3. pandas对缺失值NaN处理
  4. 整理对应_JSP第二版课后习题答案【侵权联系我删除】
  5. JSP复习题【侵权联系我删除】
  6. OpenCV4 部署DeepLabv3+模型
  7. Java如何执行操作系统的CMD命令行
  8. java项目的逻辑结构
  9. 任何社区,只要能影响他人成长的人,都可以成为敏捷个人的荣誉会员
  10. [C#反射]C#中的反射解析及使用.