黑色渐变遮罩html,巧用CSS遮罩

1. 用法

-webkit-mask样式是利用该属性指定的图片作为遮罩,利用这张图像的透明度来显示位于该遮罩图下方的图像。如果遮罩图某个像素点透明度为1则显示下方的图像,透明度为0则不显示,介于0-1之间则呈现相应的透明度。

详情参考 mask - CSS | MDN

可以看到,mask的语法基本上拷贝自background,可以设置遮罩的url, position, repeat, size等属性,但不能直接设置颜色(纯色的遮罩意味着用opacity就能实现)。-webkit-mask-url可以设置gradients的渐变图片,也可以设置base64编码的图片。

2. 利用mask实现图标变色

想让图标可以任意变色,常见的方案有:font-awesome, SVG等,甚至还有drop-shadow。其实可以利用background变色,而利用遮罩去绘制图标。遮罩透过的地方是图标的填色部分,而遮罩盖过的地方则没有颜色。

这种方法的优点就是转换成本极低,可以直接利用已有的图标PNG图。具体方法如下:

将图标保存为PNG图,注意非图标区域应该是透明的。如果原有图标是sprite图,没关系,不用变,因为mask支持position属性。原先输出的图标不是纯黑色的?也没关系,因为mask样式只认你图片的透明通道

设置图标的CSS,例如:

.m-mask{

width:141px;

height:141px;

-webkit-mask-image: url(mask.png);

background: #3f51b5;

}

这样就好了,效果如下

bVzMmu

完全可以把此时的background-color理解成Photoshop中的颜色叠加

bVzMl5

如果结合less sass,就可以做到自定义换肤了

3.利用mask修复圆角头像的毛边

在实际的开发过程中,发现在较高版本的Chrome浏览器中,我们的圆角头像出现了无法容忍的毛边,定位到问题的原因是这样的:外层div利用background设置了垫底的默认图,设置了border-radius:50%。而内层的img为实际头像图,也设置了border-radius:50%。理论上两个相等大小、相同圆角的元素,也未设置任何定位,那么应该是头像完整盖着默认图。但实际并未如此,而是头像略小于默认图,因而出现了毛边。

bVzMn5

因此我们可以为外层div添加一个样式

-webkit-mask-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAACnej3aAAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==')

url中设置的其实是1像素高宽的黑色图片,那么此时的遮罩就相当于外层div设置圆角区域后的一个不透明的圆形。此时就可以去掉img上的boder-radius了。最后效果如下,完美!

bVzMoq

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现CSS遮罩层的动画效果,可以使用CSS的transition属性和animation属性。transition属性可以控制元素在不同状态之间的平滑过渡,而animation属性可以创建元素的动画效果。 下面是一个示例代码,展示了如何使用CSS创建一个遮罩层的动画效果: HTML代码: ```html <div id="cover"> <span class="whirly-loader">Loading...</span> </div> ``` CSS代码: ```css #cover { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); display: none; opacity: 0; transition: opacity 0.5s; } #cover.active { display: block; opacity: 1; } .whirly-loader { display: inline-block; animation: spin 1s infinite linear; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } ``` 在上述代码中,通过给遮罩层的display属性设置为none,初始时将其隐藏起来。当需要显示遮罩层时,给它添一个active类,通过设置opacity属性和transition属性实现渐变显示的效果。 此外,还定义了一个名为spin的动画效果,通过设置transform属性和@keyframes规则来实现旋转的动画效果。通过给whirly-loader元素添animation属性,使其应用该动画效果。 使用上述代码,你可以在需要的时候通过JavaScript代码添或移除active类来控制遮罩层的显示和隐藏,并且遮罩层会有一个平滑的过渡效果和旋转的动画效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [css实现遮罩层动画](https://blog.csdn.net/weixin_42567389/article/details/103082984)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Q定制云印刷在线DIY定制系统 v5.0 - PHP在线DIY定制系统下载](https://download.csdn.net/download/weixin_36643308/88248678)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值