CSS mask 实现鼠标跟随镂空效果,阿里面试官必问

这篇具有很好参考价值的文章主要介绍了CSS mask 实现鼠标跟随镂空效果,阿里面试官必问。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

}`

效果如下:

CSS mask 实现鼠标跟随镂空效果,阿里面试官必问,2024年程序员学习,css,计算机外设,前端

已经全部都模糊了,只是圆形区域外暗一些。由于::before的尺寸占据整个容器,所以整个背后都变模糊了,圆形外部比较暗是因为半透明渐变的影响。

总之还是不能满足我们的需求,需要寻求新的解决方式。

五、CSS MASK 实现镂空


与其说是让圆形区域不模糊,还不如说是把那块区域给镂空了。就好比之前是一整块磨砂玻璃,然后通过 CSS MASK 打了一个圆孔,这样透过圆孔看到后面肯定是清晰的。

可以对第二个例子稍作修改,通过径向渐变绘制一个透明圆,剩余部分都是纯色的遮罩层,示意如下:

CSS mask 实现鼠标跟随镂空效果,阿里面试官必问,2024年程序员学习,css,计算机外设,前端

用代码实现就是

.wrap::before{

content: ‘’;

position: absolute;

width: 100%;

height: 100%;

left: 0;

top: 0;

-webkit-mask: radial-gradient( circle at calc(var(–x, .5) * 100% )  calc(var(–y, .5) * 100% ), transparent 50px, #000 51px);

background: rgba(0,0,0,.3);

backdrop-filter: blur(5px)

}

这样就实现了文章开头的效果:

CSS mask 实现鼠标跟随镂空效果,阿里面试官必问,2024年程序员学习,css,计算机外设,前端

完整代码可以查看:https://codepen.io/xboxyan/pen/porpoXJ

六、CSS MASK COMPOSITE 实现更丰富的镂空效果


除了使用径向渐变绘制遮罩层以外,还可以通过 CSS MASK COMPOSITE(遮罩合成)的方式来实现。

CSS MASK COMPOSITE 链接:https://developer.mozilla.org/en-US/docs/Web/CSS/mask-composite

标准关键值如下(firefox支持):

/* Keyword values */

mask-composite: add; /* 叠加(默认) */

mask-composite: subtract; /* 减去,排除掉上层的区域 */

mask-composite: intersect; /* 相交,只显示重合的地方 */

mask-composite: exclude; /* 排除,只显示不重合的地方 */

遮罩合成是什么意思呢?可以类比 photoshop 中的形状合成,几乎是一一对应的。

CSS mask 实现鼠标跟随镂空效果,阿里面试官必问,2024年程序员学习,css,计算机外设,前端

-webkit-mask-composite 与标准下的值有所不同,属性值非常多,如下(chorme 、safari 支持)

-webkit-mask-composite 链接:https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-mask-composite

-webkit-mask-composite: clear; /清除,不显示任何遮罩/

-webkit-mask-composite: copy; /只显示上方遮罩,不显示下方遮罩/

-webkit-mask-composite: source-over;

-webkit-mask-composite: source-in; /只显示重合的地方/

-webkit-mask-composite: source-out; /只显示上方遮罩,重合的地方不显示/

-webkit-mask-composite: source-atop;

-webkit-mask-composite: destination-over;

-webkit-mask-composite: destination-in; /只显示重合的地方/

-webkit-mask-composite: destination-out;/只显示下方遮罩,重合的地方不显示/

-webkit-mask-composite: destination-atop;

-webkit-mask-composite: xor; /只显示不重合的地方/

是不是一脸懵?这里做了一个对应的效果图,如果不太熟练,使用的时候知道有这样一个功能,然后对着找就行了。

CSS mask 实现鼠标跟随镂空效果,阿里面试官必问,2024年程序员学习,css,计算机外设,前端

回到这里,可以绘制一整块背景和一个圆形背景,然后通过遮罩合成排除(mask-composite: exclude)打一个孔就行了,实现如下:

.wrap::before{

content: ‘’;

position: absolute;

width: 100%;

height: 100%;

left: 0;

top: 0;

-webkit-mask: url(“data:image/svg+xml,%3Csvg width=“50” height=“50” viewBox=“0 0 50 50” fill=“none” xmlns=“http://www.w3.org/2000/svg”%3E%3Ccircle cx=“25” cy=“25” r=“25” fill=”%23C4C4C4"/%3E%3C/svg%3E"), linear-gradient(red, red);

-webkit-mask-size: 50px, 100%;

-webkit-mask-repeat: no-repeat;

-webkit-mask-position: calc(var(–x, .5) * 100% + var(–x, .5) * 100px - 50px )  calc(var(–y, .5) * 100% + var(–y, .5) * 100px - 50px ), 0;

-webkit-mask-composite: xor;   /只显示不重合的地方, chorem 、safari 支持/

mask-composite: exclude; /* 排除,只显示不重合的地方, firefox 支持 */

background: rgba(0,0,0,.3);

backdrop-filter: blur(5px)

}

需要注意-webkit-mask-position中的计算,这样也能很好的实现这个效果:

CSS mask 实现鼠标跟随镂空效果,阿里面试官必问,2024年程序员学习,css,计算机外设,前端

完整代码可以查看:https://codepen.io/xboxyan/pen/ExvMpQB

你可能已经发现,上述例子中的圆是通过 svg 绘制的,还用到了遮罩合成,看着好像更加繁琐了。其实呢,这是一种更加万能的解决方式,可以带来无限的可能性。比如我需要一个星星⭐️的镂空效果,很简单,先通过一个绘制软件画一个。

CSS mask 实现鼠标跟随镂空效果,阿里面试官必问,2024年程序员学习,css,计算机外设,前端

然后把这段 svg 代码转义一下,这里推荐使用张鑫旭老师的SVG在线压缩合并工具。

链接:https://www.zhangxinxu.com/sp/svgo/

CSS mask 实现鼠标跟随镂空效果,阿里面试官必问,2024年程序员学习,css,计算机外设,前端

替换到刚才的例子中就可以了。

.wrap::before{

content: ‘’;

position: absolute;

width: 100%;

height: 100%;

left: 0;

top: 0;

-webkit-mask: url(“data:image/svg+xml,%3Csvg width=“96” height=“91” viewBox=“0 0 96 91” fill=“none” xmlns=“http://www.w3.org/2000/svg”%3E%3Cpath d=“M48 0l11.226 34.55h36.327l-29.39 21.352L77.39 90.45 48 69.098 18.61 90.451 29.837 55.9.447 34.55h36.327L48 0z” fill=”%23C4C4C4"/%3E%3C/svg%3E"), linear-gradient(red, red);

-webkit-mask-size: 50px, 100%;

-webkit-mask-repeat: no-repeat;

-webkit-mask-position: calc(var(–x, .5) * 100% + var(–x, .5) * 100px - 50px )  calc(var(–y, .5) * 100% + var(–y, .5) * 100px - 50px ), 0;

-webkit-mask-composite: xor;   /只显示不重合的地方, chorem 、safari 支持/

mask-composite: exclude; /* 排除,只显示不重合的地方, firefox 支持 */

background: rgba(0,0,0,.3);

backdrop-filter: blur(5px)

}

星星镂空实现效果如下:

CSS mask 实现鼠标跟随镂空效果,阿里面试官必问,2024年程序员学习,css,计算机外设,前端

完整代码可以查看:https://codepen.io/xboxyan/pen/vYJPaVy

再比如一个心形❤,实现效果如下:

CSS mask 实现鼠标跟随镂空效果,阿里面试官必问,2024年程序员学习,css,计算机外设,前端

完整代码可以查看:https://codepen.io/xboxyan/pen/KKvEBjb

只有想不到,没有做不到


七、总结和说明


以上实现了一个鼠标跟随镂空的效果,从简单到复杂,从单一到通用,虽然借助了一点点 JS ,但是仅仅是“工具人”的角色,交互逻辑全部都由 CSS 完成,下面总结一下:

  1. 足够大的阴影是一个实现圆形镂空效果的小技巧

  2. CSS 渐变也能轻易的绘制出圆形镂空背景

  3. 借助 CSS 变量可以很方便的利用鼠标位置实现想要的效果

  4. backdrop-filter 可以想象成磨砂玻璃的功能

  5. CSS Mask 可以给磨砂玻璃打孔,实现镂空的效果

  6. 借助遮罩合成特性和SVG,可以实现任意形状的镂空效果

CSS MASK 还是非常强大的,有必要还是多掌握一下。最后,如果觉得还不错,对你有帮助的话,欢迎点赞、在看、收藏、转发。

作者:XboxYan

https://segmentfault.com/a/1190000040996523

推荐链接

  1. 纯 CSS 自定义多行省略:从原理到实现

  2. 前端程序员简历模板整理和下载

  3. 这才是前端该写的代码:CSS常见套路续

关注公众号 前端开发博客,回复“加群”,秒进群

加入我们一起学习,天天进步

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

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
CSS mask 实现鼠标跟随镂空效果,阿里面试官必问,2024年程序员学习,css,计算机外设,前端
CSS mask 实现鼠标跟随镂空效果,阿里面试官必问,2024年程序员学习,css,计算机外设,前端
CSS mask 实现鼠标跟随镂空效果,阿里面试官必问,2024年程序员学习,css,计算机外设,前端
CSS mask 实现鼠标跟随镂空效果,阿里面试官必问,2024年程序员学习,css,计算机外设,前端
CSS mask 实现鼠标跟随镂空效果,阿里面试官必问,2024年程序员学习,css,计算机外设,前端
CSS mask 实现鼠标跟随镂空效果,阿里面试官必问,2024年程序员学习,css,计算机外设,前端

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

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

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
CSS mask 实现鼠标跟随镂空效果,阿里面试官必问,2024年程序员学习,css,计算机外设,前端

最后

除了简历做到位,面试题也必不可少,整理了些题目,前面有117道汇总的面试到的题目,后面包括了HTML、CSS、JS、ES6、vue、微信小程序、项目类问题、笔试编程类题等专题。

  • CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

    CSS mask 实现鼠标跟随镂空效果,阿里面试官必问,2024年程序员学习,css,计算机外设,前端

CSS mask 实现鼠标跟随镂空效果,阿里面试官必问,2024年程序员学习,css,计算机外设,前端文章来源地址https://www.toymoban.com/news/detail-858118.html

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)**
[外链图片转存中…(img-ghVIgfon-1711732721729)]

最后

除了简历做到位,面试题也必不可少,整理了些题目,前面有117道汇总的面试到的题目,后面包括了HTML、CSS、JS、ES6、vue、微信小程序、项目类问题、笔试编程类题等专题。

  • CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

    CSS mask 实现鼠标跟随镂空效果,阿里面试官必问,2024年程序员学习,css,计算机外设,前端

CSS mask 实现鼠标跟随镂空效果,阿里面试官必问,2024年程序员学习,css,计算机外设,前端

到了这里,关于CSS mask 实现鼠标跟随镂空效果,阿里面试官必问的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Revit二次开发知识分享(二十四)实现鼠标可视化跟随动画效果

    背景:群友询问:怎样子实现在批量选择完管道,在点击放置标签时,想有一个可视化跟随的动画效果。然后研究了一番,下面提供了一个简易版的实行方案,大家可以参考学习。 源码 实现如下图所示的选择完管件后,鼠标动画跟随效果 其中Rectangle是当前视图边框投影到屏

    2024年02月10日
    浏览(73)
  • 图片跟随鼠标移动效果的抖动问题

    图片跟随鼠标移动效果的实现思路: 触发mousemove事件响应时,通过e.offsetX,e.offsetY获取到当前鼠标的位置。再修改图片的css样式中的top, left属性(图片采用绝对定位)。 代码如下: 分析问题原因 offset是相对于事件源而言的,即,鼠标在哪个元素上移动,事件的offset属性就是

    2024年02月09日
    浏览(78)
  • 【CSS】禁用元素鼠标事件(例如实现元素禁用效果)

    pointer-events 属性指定在什么情况下 (如果有) 某个特定的图形元素可以成为鼠标事件。 实际运用中可以通过对 auto 和 none 动态控制,来动态实现元素的禁用效果。 属性 描述 auto 与pointer-events属性未指定时的表现效果相同,对于 SVG 内容,该值与visiblePainted效果相同 none 元素永远

    2024年02月12日
    浏览(70)
  • 【HTML+CSS+JavaScript】实现鼠标点击烟花效果

    本文主要讲解三种烟花效果(爆炸型、心型、圆形),文章末尾附有完整的代码和图片获取链接。 效果图(一) - 心型 : 效果图(二) - 圆型 : 效果图(三) - 爆炸型 : (1) HTML部分代码 (2) CSS部分代码 (3) 内部的JavaScript部分代码 (1) HTML部分代码 (2) CSS部分代码 (3) 内部的JavaScript部分

    2024年02月01日
    浏览(91)
  • css实现鼠标滑动左下角弹框带动画效果

    代码 css代码 实现效果    

    2024年02月14日
    浏览(47)
  • 用HTML、CSS和JavaScript实现鼠标可交互的3D太阳和月亮切换效果

    部分数据来源: ChatGPT  引言         太阳和月亮对于我们来说是一种常见的对比,这篇文章将介绍一个使用HTML、CSS和JavaScript创建的网页场景,能够把太阳和月亮切换展示给用户。这个场景能够让用户使用鼠标和滚轮与场景互动,带来更多的趣味和体验。 这里展示了HT

    2024年02月07日
    浏览(75)
  • 两种方式实现css取消页面鼠标双击选中文字或单击拖动选中文字的效果

    我们知道浏览器页面上的文字正常情况下我们是可以双击选中、或者单击鼠标横向拖动也能选中的,选中以后可以右击出现面板然后去复制什么的。但是有的时候,这种效果我们并不想要的,比如用户点快了的时候,所以我们需要禁用这种效果,本文记录一下禁用选中效果的

    2024年02月11日
    浏览(73)
  • 【css面试题】 实现一个盒子的水平竖直居中对齐效果

    面试题里有时还会强调 子盒子宽高是否已知,要注意一下 失败,只能水平居中,垂直不可以!!!!!!! 原因 http://t.csdn.cn/AOMJ1 http://t.csdn.cn/cFsg6 margin:auto是具有强烈计算意味的,用来计算元素对应方向上应该获得的 剩余空间 大小。 行内元素margin:auto; 不能水平居

    2024年02月09日
    浏览(50)
  • css - 如何禁用 <a> 标签点击,让 <a> 标签实现 disabled 禁用效果(鼠标无法触发点击事件)

    我们知道a标签是没有disabled属性的,那么我们该如何实现a标签按钮的禁用呢? 给a标签设置 “禁用” 属性,如下代码所示: 这样 @click 点击事件就不会触发了。 使用 jquery:removerAttr() 或者 JS:removeAttribute() 移除 a 标签的 href 属性。 使用 jquery:unbind() 或者 JS:removeEventListe

    2024年01月16日
    浏览(65)
  • 【Unity实战篇 】| 游戏中实现镂空遮罩效果【矩形、圆形镂空遮罩】

    前言 本文来写一下怎样在Unity中完成一个 镂空遮罩 的效果。 镂空遮罩 比较常用的有两种ÿ

    2024年02月15日
    浏览(147)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包