Code前端首页关于Code前端联系我们

CSS变量实现很酷的悬浮效果动画

terry 2年前 (2023-09-27) 阅读数 64 #数据结构与算法
在Grover网站上发现了一个不错的悬停动画,我自己也得到了一些灵​​感。该动画用于将鼠标悬停在订阅按钮上并移动光标以显示相应的颜色渐变。这个想法很简单,但它使按钮脱颖而出,人们立即注意到它,从而更有可能点击它。

CSS变量实现炫酷的悬浮效果动画

怎样才能达到这样的效果,让我们的网站脱颖而出呢?其实,并没有你想象的那么难!

跟踪位置

我们需要做的第一件事是确定鼠标的位置。

document.querySelector('.button').onmousemove = (e) => {

  const x = e.pageX - e.target.offsetLeft
  const y = e.pageY - e.target.offsetTop

  e.target.style.setProperty('--x', `${ x }px`)
  e.target.style.setProperty('--y', `${ y }px`)

}复制代码
  1. 选择元素并等待用户将鼠标悬停在其上;
  2. 计算相对于于元素的位置;
  3. 将坐标保存在 CSS 变量中。

是的,只需9行代码你就知道用户将鼠标放在哪里。有了这些信息,您就可以实现意想不到的效果,但首先让我们完成代码的 CSS 部分。

动画渐变

我们首先将坐标保存在 CSS 变量中,以便我们可以随时使用它们。

.button {
  position: relative;
  appearance: none;
  background: #f72359;
  padding: 1em 2em;
  border: none;
  color: white;
  font-size: 1.2em;
  cursor: pointer;
  outline: none;
  overflow: hidden;
  border-radius: 100px;

  span {
    position: relative;
  }

  &::before {
    --size: 0;  

    content: '';
    position: absolute;
    left: var(--x);
    top: var(--y);
    width: var(--size);
    height: var(--size);
    background: radial-gradient(circle closest-side, #4405f7, transparent);
    transform: translate(-50%, -50%);
    transition: width .2s ease, height .2s ease;
  }

  &:hover::before {
    --size: 400px;
  }
}复制代码
  1. 使用跨度包裹文本,以防止其出现在按钮上方。
  2. 将宽度和高度初始化为 0px,当用户将鼠标悬停在按钮上时,将其更改为 400px。别忘了把这个变换设置成风的样子吧?
  3. 使用坐标来追踪鼠标位置;
  4. 使用最近一侧的圆圈将径向gradi嫁接应用于背景属性。最近的一侧可以覆盖整个表面。

结果

祝你好运!将其添加到相应的 HTML 页面中,您的酷按钮就可以使用了!

作者:Jelly tfzwgd
链接:https://juejin.im/post/5cc17b7b6fb9a0322f7c8fcd
来源:掘金
版权归作者所有。商业转载请联系作者获得许可。非商业转载请注明出处。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门