欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > CSS篇之炫酷框

CSS篇之炫酷框

2025/2/21 3:17:41 来源:https://blog.csdn.net/ae_pppppp/article/details/144914110  浏览:    关键词:CSS篇之炫酷框

加上背景之后就是下图:

 实现原理:div大小为20px 20px;那么伪元素大小要比div大出一圈,才能显示出边框;

在鼠标滑过的时候,动态更改伪元素的背景色位置

   <div id="b" class="b"></div>

*{--border: 4px;border:none;
}.b{width:200px;height:200px;border:1px solid black;box-sizing:border-box;position: relative;background:#999;
}
.b::after {content: "";display: block;width: calc(100% + var(--border) * 2);height: calc(100% + var(--border) * 2);position: absolute;z-index: -1;background-image: var(--bg);left:calc(var(--border) * -1);top:calc(var(--border) * -1);
}

 

  const b=document.getElementById('b');
b.addEventListener("mousemove", e=>{let rect = b.getBoundingClientRect();let x = e.pageX - rect.left;let y = e.pageY - rect.top;b.style.setProperty("--bg",`radial-gradient(100px at ${x}px ${y}px, rgba(186, 10, 244, 0.5), rgba(255, 255, 255, 0))`);
})

上面是一个dom情况,如果多个dom,可遍历dom,更改radial-gradient属性;一下是多个dom的效果展示:

 

 

多个dom的遍历代码:

window.addEventListener("mousemove", (e) => {let bt = document.querySelectorAll(".b");for (let i = 0; i < bt.length; i++) {let rect = bt[i].getBoundingClientRect();let x = e.pageX - rect.left;let y = e.pageY - rect.top;bt[i].style.setProperty("--afterBack",`radial-gradient(100px at ${x}px ${y}px, rgba(186, 10, 244, 0.5), rgba(255, 255, 255, 0))`);}
});

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词