分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

用CSS变量实现鼠标悬停动效

发布时间:2023-09-06 02:02责任编辑:董明明关键词:CSS鼠标悬停

先放两张效果图。

前两天在微信公众号JavaScript里看到一篇文章 --- 《利用CSS变量实现令人震惊的悬浮效果》,觉得好好看好好玩,就自己动手写了一下。

  

页面DOM。

1 <div class="button"><span>Hover me I‘m awesome</span></div>

鼠标悬停动效,顾名思义,跟鼠标是有很大关系的。首先,我们得 知道鼠标的位置

1 document.querySelector(‘.button‘).onmousemove = (e) => {2   const x = e.pageX - e.target.offsetLeft;3   const y = e.pageY - e.target.offsetTop;4   e.target.style.setProperty(‘--x‘, `${ x }px`);5   e.target.style.setProperty(‘--y‘, `${ y }px`);6 }

1、监听元素的鼠标移动事件;

2、计算鼠标相对元素的位置;

3、将鼠标位置存入css变量中(--x,--y)。

利用css实现动效 

 1 .button{ 2     position: relative; 3     appearance: none; 4     background: #fe1251; 5     padding: 1em 2em; 6     border: none; 7     color: white; 8     font-size: 1.2em; 9     cursor: pointer;10     outline: none;11     overflow: hidden;12     border-radius: 100px;13     transition: all .15s ease,transform .2s ease-in-out;14   }15   .button >span{16     position: relative;17     pointer-events: none;18     /*文字禁止选中*/19     -webkit-user-select: none;20   }21   .button::before {22     --size: 0;23     content: ‘ ‘;24     position: absolute;25     left: var(--x);26     top: var(--y);27     width: var(--size);28     height: var(--size);29     background: radial-gradient(circle closest-side, #402bf2, transparent);30     transform: translate(-50%, -50%);31     transition: width .2s ease, height .2s ease;32   }33   .button:hover::before {34     --size: 400px;35   }36   .button:hover{37     box-shadow: 0 5px 45px rgba(0,0,0,.4);38     transform: scale(1.03);39   }

好啦,图一炫酷的动画效果出现啦~~~

图二是用 css3 transform 的3D效果实现的。主要css代码是

transform: rotateX(var(--y)) rotateY(var(--x)) translateZ(var(--z));

需注意的是使用 translateZ 或其它css 3D效果,需要为3D元素的父容器设置perspective属性,用来指定视距。

css3 3D transform变换  可以看看https://www.zhangxinxu.com/wordpress/2012/09/css3-3d-transform-perspective-animate-transition/

用CSS变量实现鼠标悬停动效

原文地址:https://www.cnblogs.com/stronggirlyao/p/9257858.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved