龙空技术网

css 渐变跟随鼠标光标按钮动画

理想世界的梦 302

前言:

现时朋友们对“按钮箭头css”大体比较关注,我们都需要了解一些“按钮箭头css”的相关资讯。那么小编也在网摘上汇集了一些对于“按钮箭头css””的相关文章,希望看官们能喜欢,小伙伴们快快来了解一下吧!

如何使用css实现渐变跟随鼠标光标的悬停效果。如下图:

实现思路:

声明 --x 和- -y 两个 CSS 变量,用于跟踪鼠标在按钮上的位置。声明一个 --size 的 CSS 变量,用于修改背景渐变的尺寸大小。使用 background: radial-gradient(circle closest-side, pink, transparent) 创建按钮的径向渐变背景效果。使用document.querySelector()和EventTarget.addEventListener()给按钮绑定'mousemove'事件。使用element.getBoundingClientRect()和CSSStyleDeclaration.setProperty() 更新 --x 和--y 变量的值。

html:

<button class="mouse-cursor-gradient-tracking">  <span>Hover me</span></button>

css:

/*按钮基本样式*/.mouse-cursor-gradient-tracking {  position: relative;  background: #7983ff;  padding: 0.5rem 1rem;  font-size: 1.2rem;  border: none;  color: white;  cursor: pointer;  outline: none;  overflow: hidden;}.mouse-cursor-gradient-tracking span {  position: relative;}/*按钮渐变背景,这里使用伪类实现,并且使用transform动画*/.mouse-cursor-gradient-tracking:before {  --size: 0; /*渐变背景尺寸*/  content: '';  position: absolute;  left: var(--x);  top: var(--y);  width: var(--size);  height: var(--size);  /*背景渐变*/  background: radial-gradient(circle closest-side, pink, transparent);  /*动画效果*/  transform: translate(-50%, -50%);   transition: width 0.2s ease, height 0.2s ease;}/*鼠标经过按钮时*/.mouse-cursor-gradient-tracking:hover:before {  --size: 200px;}

javascript:

// 获取按钮元素let btn = document.querySelector('.mouse-cursor-gradient-tracking');// 绑定鼠标移动事件btn.addEventListener('mousemove', e => {  // 获取按钮的左,上,右和下分别相对浏览器视窗的位置  let rect = e.target.getBoundingClientRect();  // 计算鼠标坐标相对于按钮左、上的距离  let x = e.clientX - rect.left;  let y = e.clientY - rect.top;  // 更新背景渐变区域的坐标  btn.style.setProperty('--x', x + 'px');  btn.style.setProperty('--y', y + 'px');});

标签: #按钮箭头css