利用CSS变量实现炫酷的悬浮效果

摘要:
最近,我在Grover网站上发现了一个有趣的悬停动画。此动画将光标移动到订阅按钮上,并跟随光标以实现相应的颜色渐变。JS代码:文档。查询选择器。onmousemove==˃{constx=e.pageX-e.target.offsetLeftconsty=e.pageY-e.target.ooffsetTope.target.style.setProperty.target.style.setProperty}1.选择一个元素并等待用户将鼠标移到该元素上;2.计算相对于元件的位置;3.将坐标保存在CSS中的变量中。只有9行代码可以让您知道用户鼠标的位置。有了这些信息,您可以获得意想不到的结果。但让我们先完成CSS代码。对于动画渐变,我们首先将坐标存储在CSS变量中,以便随时使用它们。

最近,我从 Grover网站 上发现以一个好玩儿的悬停动画,这个动画是将鼠标移动到订阅按钮上移动光标,会跟随光标实现相应的彩色渐变。

这个想法很简单,但是它能使这个按钮脱颖而出,人们一下子就注意到它了,增加了点击的概率。

 利用CSS变量实现炫酷的悬浮效果第1张

怎样才能达到这个效果,使我们的网站脱颖而出呢?其实,它并不像我们想象的那么难!

追踪位置

我们要做的第一件事就是获取到鼠标的位置。

JS代码:

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);
     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、用 span 包裹文本,以避免显示在按钮的上方。

2、将 width 和 height 初始化为 0px ,当用户悬停在按钮上时,将其改为 400px 。不要忘了设置这种转换以使其像风一样瞬间出现;

3、利用坐标追踪鼠标位置;

4.在 background 属性上应用 radial-gradient ,使用 closest-side circle 。Closest-side 能够覆盖整个面。

结果

成功!将其加入到对应的HTML页面,你炫酷的按钮就可以使用啦!

免责声明:文章转载自《利用CSS变量实现炫酷的悬浮效果》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇面试官:说下什么是TCP 的粘包和拆包?大众点评Java开发实时应用监控平台-CAT下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

css背景透明字体不透明的解决方案

在设计中,我们经常看到有一定透明度深色背景搭配浅色字体的布局,我们一般设置 opacity: 0.3; background: #D8D8D8;color:#ffffff; 就会导致字体也有一定的透明度。 解决方案,用css颜色的rgba来解决,将背景色转化为对应的rgb值,然后加上透明度,如下所示: background: rgba(261,261...

Ansible主机清单Inventory文件hosts

Ansible主机清单Inventory文件hosts 发表于 2017-05-14 | 分类于 运维相关 , Ansible | | 阅读次数 4638| 字数统计 1,442 | 阅读时长预计 6 Ansible 通过读取默认的主机清单配置,可以同时连接到多个远程主机上执行任务组和主机之间的关系通过 inventory 文件配置. 默认的...

web前端学习笔记(CSS盒子的浮动)

      在标准流中,一个块级元素在水平方向会自动伸展,直到包含它的元素的边界;而在竖直方向和兄弟元素依次排列,不能并排。使用“浮动”方式后,块级元素的表现就会有所不同。      CSS中有一个float属性,默认为none,也就是标准流通常的情况。如果将float属性的值设置为left或right,元素就会向其父元素的左侧或右侧靠紧,同时默认情况下,...

Shell 编程

  Shell 是一门脚本语言(又称解释型语言),Shell 其实就是一个纯文本文件,通常以【#!/bin/bash】开始。脚本自上而下,从左至右分析并执行,其中【#】后面的为注释。脚本有以下几种运行方式:(1) 【bash shell.sh】 (2)【sh shell.sh】(3)【./shell.sh】当前目录下执行,用户必须有可执行权限 (4)【. ....

css 心形动画 爱心动画

1、PC 爱心动画(预览地址:http://www.yueqingfang.cn/heart/pc.html) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Red Heart</...

【CSS】position:relative和position:absolute

position:relative相对定位 1. 如何定位?每个元素在页面的普通流中会“占有”一个位置,这个位置可以理解为默认值,而相对定位就是将元素偏离元素的默认位置,但普通流中依然保持着原有的默认位置。(在父级节点的content-box区定位,父级节点有文字的话,元素的默认位置则是紧随文字)2. 不会改变行内元素的display属性。3. 并没有脱离...