mask-image实现聚光灯效果(1)

mask-image

====================================================================

属性值


none;

没有图片,设置了这个属性,其他的mask-* 属性自然没有用处了

url(jpg/png/svg);

这里我们看一下svg的效果

首先再阿里iconfont上复制一个svg 保存为mk.svg

然后来使用它:


#masked {

  width: 200px;

  height: 200px;

  background-color: #8cffa0;

  -webkit-mask-image: url(./mk.svg);

  -webkit-mask-repeat: no-repeat;

  -webkit-mask-origin:content-box;

  border: 10px solid #000;

}



<div id="masked"></div>



这里我们开始来分析:

首先:大家看到的淡黄色的边框是鼠标审查元素看到的,真正的是下面这样,并没有边框的

首先我们定义了背景颜色,淡绿色,mask是上面的svg,mask的起始位置是内容区域,最后定义了一个边框,最后从效果图中我们可以得出一下结论

1. mask-image 是对整个元素生效的(包括border)

2. mask-image 是mask透明背景显示,mask不透明背景看不见

3. 我们是无法看到mask本身的内容的,只能看到背景的内容。

渐变

-webkit-mask-image: linear-gradient(rgba(0, 0, 0, 1.0), transparent 50%);

mask-image: linear-gradient(rgba(0, 0, 0, 1.0), transparent);

image(url(mask.png), skyblue);

在最新版的谷歌和火狐中均无法识别。

有趣的例子-聚光灯


效果如下:

实现逻辑:

首先是一张作为背景图片的人物照

一个黑色的图片作为mask

使用动画来控制黑色mask的位置,就可以实现


    <style>

      @keyframes mask{

        0% {-webkit-mask-position:0px 60px;}

        15% { -webkit-mask-position:55px 50px;}

        30% {-webkit-mask-position:117px 0px;}

        45% { -webkit-mask-position:110px 110px; -webkit-mask-size:85px 85px;}

        60% { -webkit-mask-position: 173px 8px;-webkit-mask-size: 86px 85px;}

        75% { -webkit-mask-position: 193px 110px;-webkit-mask-size: 80px 80px;}

        90% {-webkit-mask-position: 270px 80px;-webkit-mask-size: 90px 65px;}

        100% {-webkit-mask-size:1000%;}

     }

      .mask {

        width: 300px;

        height: 200px;

        background: url(./哆啦a梦.png);

        -webkit-mask-repeat: no-repeat;

        -webkit-mask-image: url("./black.png");

        -webkit-mask-size:60px 70px;

        animation: mask 5s linear infinite forwards;

      }

    </style>

  </head>

  <body>

    <div class="mask"></div>

  </body>



附上照片,可以自己本地跑跑试试。

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

### 如何在CSS中定义mask-image的尺寸和比例 在CSS中,`mask-image` 属性用于指定遮罩图像,而 `mask-size` 属性则用于定义遮罩图像的尺寸和比例[^1]。`mask-size` 的值可以是具体的长度单位(如像素或百分比),也可以是关键字(如 `contain` 或 `cover`)。以下是对如何定义 `mask-image` 尺寸和比例的详细说明: #### 使用具体长度单位 可以通过设置具体的长度单位来定义遮罩图像的尺寸。例如: ```css .masked-element { mask-image: url('mask.png'); mask-size: 400px 600px; /* 定义遮罩图像为400px宽和600px高 */ } ``` 此代码将遮罩图像调整为固定的宽度和高度[^1]。 #### 使用百分比 通过百分比来定义遮罩图像的尺寸,相对于容器的大小进行调整。例如: ```css .masked-element { mask-image: url('mask.png'); mask-size: 50% 75%; /* 遮罩图像宽度为容器的50%,高度为容器的75% */ } ``` 这里的百分比表示遮罩图像相对于其包含块的尺寸比例[^2]。 #### 使用关键字 还可以使用关键字 `contain` 和 `cover` 来自动调整遮罩图像的尺寸: - **contain**:确保遮罩图像完全可见,同时保持其宽高比例。 - **cover**:确保遮罩图像覆盖整个元素区域,可能裁剪部分图像以保持比例。 示例代码如下: ```css .masked-element { mask-image: url('mask.png'); mask-size: contain; /* 确保遮罩图像完全显示 */ } ``` 或者: ```css .masked-element { mask-image: url('mask.png'); mask-size: cover; /* 确保遮罩图像覆盖整个元素 */ } ``` #### 结合其他属性 为了更精确地控制遮罩效果,可以结合其他相关属性,例如 `mask-repeat` 和 `mask-position`。例如: ```css .masked-element { mask-image: url('mask.png'); mask-size: 100% 100%; /* 完全填充元素 */ mask-repeat: no-repeat; /* 防止遮罩图像重复 */ mask-position: center; /* 将遮罩图像居中对齐 */ } ``` ### 示例代码 以下是一个完整的HTML和CSS示例,展示如何定义 `mask-image` 的尺寸和比例: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Mask Image Example</title> <style> .masked-element { width: 300px; height: 200px; background-image: url('background.jpg'); /* 原始图像 */ background-size: cover; -webkit-mask-image: url('mask.png'); /* Chrome, Safari, Opera */ mask-image: url('mask.png'); /* 标准浏览器 */ mask-size: contain; /* 自动调整遮罩图像尺寸 */ } </style> </head> <body> <div class="masked-element"></div> </body> </html> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值