CSS mask 实现鼠标跟随镂空效果,这些面试官常问的开发面试题你都掌握好了吗

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

可能一开始无从下手,不要急,可以先从简单的、类似的效果开始,一步一步尝试,一起看看吧。

一、普通半透明的效果


比如平时开发中碰到更多的可能是一个半透明的效果,有点类似于探照灯(鼠标外面的地方是半透明遮罩,看起来会暗一点)。如下:

CSS mask 实现鼠标跟随镂空效果,这些面试官常问的开发面试题你都掌握好了吗,2024年程序员学习,css,计算机外设,前端

那先从这种效果开始吧,假设有这样一个布局:

那么如何绘制一个镂空的圆呢?先介绍一种方法。

其实很简单,只需要一个足够大的投影就可以了,原理如下:

CSS mask 实现鼠标跟随镂空效果,这些面试官常问的开发面试题你都掌握好了吗,2024年程序员学习,css,计算机外设,前端

这里可以用伪元素::before来绘制,结构更加精简。用代码实现就是:

.wrap::before{

content:‘’;

position: absolute;

width: 100px;

height: 100px;

border-radius: 50%;

left: 50%;

top: 50%;

transform: translate(-50%,-50%); /默认居中/

box-shadow: 0 0 0 999vw rgba(0, 0, 0, .5); /足够大的投影/

}

可以得到这样的效果:

CSS mask 实现鼠标跟随镂空效果,这些面试官常问的开发面试题你都掌握好了吗,2024年程序员学习,css,计算机外设,前端

二、借助 CSS 变量传递鼠标位置


按照以往的经验,可能会在 js 中直接修改元素的 style 属性,类似这样

img.addEventListener(‘mousemove’, (ev) => {

img.style.left = ‘…’;

img.style.top = ‘…’;

})

但是这样交互与业务逻辑混杂在一起,不利于后期维护。其实,我们只需要鼠标的坐标,在 CSS 中也能完全实现跟随的效果。

这里借助 CSS 变量,那一切就好办了!假设鼠标的坐标是 [–x,–y](范围是[0, 1]),那么遮罩的坐标就可以使用 calc计算了。

.wrap::before{

left: calc(var(–x) * 100%);

top: calc(var(–y) * 100%);

}

然后鼠标坐标的获取可以使用 JS 来计算,也比较容易,如下:

img.addEventListener(‘mousemove’, (ev) => {

img.style.setProperty(‘–x’, ev.offsetX / ev.target.offsetWidth);

img.style.setProperty(‘–y’, ev.offsetY / ev.target.offsetHeight);

})

这样,半透明效果的镂空效果就完成了。

CSS mask 实现鼠标跟随镂空效果,这些面试官常问的开发面试题你都掌握好了吗,2024年程序员学习,css,计算机外设,前端

完整代码可以访问:https://codepen.io/xboxyan/pen/VwzRaNZ

三、渐变也能实现半透明的效果


除了上述阴影扩展的方式,CSS 径向渐变也能实现这样的效果。

绘制一个从透明到半透明的渐变,如下:

.wrap::before{

content: ‘’;

position: absolute;

width: 100%;

height: 100%;

left: 0;

top: 0;

background: radial-gradient( circle at center, transparent 50px, rgba(0,0,0,.5) 51px);

}

可以得到这样的效果:

CSS mask 实现鼠标跟随镂空效果,这些面试官常问的开发面试题你都掌握好了吗,2024年程序员学习,css,计算机外设,前端

然后,把鼠标坐标映射上去就可以了。从这里就可以看出 CSS 变量的好处,无需修改 JS,只需要在CSS中修改渐变中心点的位置就可以实现了

.wrap::before{

background: radial-gradient( circle at calc(var(–x) * 100% )  calc(var(–y) * 100% ), transparent 50px, rgba(0,0,0,.5) 51px);

}

CSS mask 实现鼠标跟随镂空效果,这些面试官常问的开发面试题你都掌握好了吗,2024年程序员学习,css,计算机外设,前端

四、背景模糊的效果尝试


CSS 中有一个专门针对背景(元素后面区域)的属性:backdrop-filter。

backdrop-filter链接:https://developer.mozilla.org/zh-CN/docs/Web/CSS/backdrop-filter

使用方式和 filter完全一致!

backdrop-filter: blur(10px);

下面是 MDN 中的一个示意效果:

CSS mask 实现鼠标跟随镂空效果,这些面试官常问的开发面试题你都掌握好了吗,2024年程序员学习,css,计算机外设,前端

backdrop-filter是让当前元素所在区域后面的内容模糊,要想看到效果,需要元素本身半透明或者完全透明;而filter是让当前元素自身模糊。

有兴趣的可以查看这篇文章:CSS backdrop-filter简介与苹果iOS毛玻璃效果 « 张鑫旭-鑫空间-鑫生活 (zhangxinxu.com)

文章链接:https://www.zhangxinxu.com/wordpress/2019/11/css-backdrop-filter/

需要注意的是,这种模糊与背景的半透明度没有任何关系,哪怕元素本身是透明的,仍然会有效果。例如下面是去除背景后的效果 ,整块都是模糊的。

CSS mask 实现鼠标跟随镂空效果,这些面试官常问的开发面试题你都掌握好了吗,2024年程序员学习,css,计算机外设,前端

如果直接运用到上面的例子会怎么样呢?

1. 阴影实现

在上面第一个例子中添加 backdrop-filter

.wrap::before{

content:‘’;

position: absolute;

width: 100px;

height: 100px;

border-radius: 50%;

left: 50%;

top: 50%;

transform: translate(-50%,-50%); /默认居中/

box-shadow: 0 0 0 999vw rgba(0, 0, 0, .5); /足够大的投影/

backdrop-filter: blur(5px)

}

得到效果如下:

CSS mask 实现鼠标跟随镂空效果,这些面试官常问的开发面试题你都掌握好了吗,2024年程序员学习,css,计算机外设,前端

可以看到圆形区域是模糊的,正好和希望的效果相反。其实也好理解,只有圆形区域才是真实的结构,外面都是阴影,所以最后作用的范围也只有圆形部分。

2. 渐变实现

现在在第二个例子中添加 backdrop-filter

.wrap::before{

content: ‘’;

position: absolute;

width: 100%;

height: 100%;

left: 0;

top: 0;

background: radial-gradient( circle at calc(var(–x) * 100% )  calc(var(–y) * 100% ), transparent 50px, rgba(0,0,0,.5) 51px);

backdrop-filter: blur(5px)

}`

效果如下:

CSS mask 实现鼠标跟随镂空效果,这些面试官常问的开发面试题你都掌握好了吗,2024年程序员学习,css,计算机外设,前端

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

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

五、CSS MASK 实现镂空

自我介绍一下,小编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,计算机外设,前端

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

CSS mask 实现鼠标跟随镂空效果,这些面试官常问的开发面试题你都掌握好了吗,2024年程序员学习,css,计算机外设,前端
CSS mask 实现鼠标跟随镂空效果,这些面试官常问的开发面试题你都掌握好了吗,2024年程序员学习,css,计算机外设,前端

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V:vip1024c 备注前端获取(资料价值较高,非无偿)
CSS mask 实现鼠标跟随镂空效果,这些面试官常问的开发面试题你都掌握好了吗,2024年程序员学习,css,计算机外设,前端

最后

在面试前我花了三个月时间刷了很多大厂面试题,最近做了一个整理并分类,主要内容包括html,css,JavaScript,ES6,计算机网络,浏览器,工程化,模块化,Node.js,框架,数据结构,性能优化,项目等等。

包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。

  • HTML5新特性,语义化

  • 浏览器的标准模式和怪异模式

  • xhtml和html的区别

  • 使用data-的好处

  • meta标签

  • canvas

  • HTML废弃的标签

  • IE6 bug,和一些定位写法

  • css js放置位置和原因

  • 什么是渐进式渲染

  • html模板语言

  • meta viewport原理

CSS mask 实现鼠标跟随镂空效果,这些面试官常问的开发面试题你都掌握好了吗,2024年程序员学习,css,计算机外设,前端

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

CSS mask 实现鼠标跟随镂空效果,这些面试官常问的开发面试题你都掌握好了吗,2024年程序员学习,css,计算机外设,前端文章来源地址https://www.toymoban.com/news/detail-860522.html

术点。

  • HTML5新特性,语义化

  • 浏览器的标准模式和怪异模式

  • xhtml和html的区别

  • 使用data-的好处

  • meta标签

  • canvas

  • HTML废弃的标签

  • IE6 bug,和一些定位写法

  • css js放置位置和原因

  • 什么是渐进式渲染

  • html模板语言

  • meta viewport原理

CSS mask 实现鼠标跟随镂空效果,这些面试官常问的开发面试题你都掌握好了吗,2024年程序员学习,css,计算机外设,前端

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

CSS mask 实现鼠标跟随镂空效果,这些面试官常问的开发面试题你都掌握好了吗,2024年程序员学习,css,计算机外设,前端

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

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

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

相关文章

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

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

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

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

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

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

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

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

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

    代码 css代码 实现效果    

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

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

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

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

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

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

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

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

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

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

    2024年02月15日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包