博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用 CSS 变量实现令人震惊的悬浮效果
阅读量:6296 次
发布时间:2019-06-22

本文共 1252 字,大约阅读时间需要 4 分钟。

最近,我从 Grover网站上发现以一个好玩儿的悬停动画,也有了些自己的灵感。这个动画是将鼠标移动到订阅按钮上移动光标会显示相应的彩色渐变。这个想法很简单,但是它能使这个按钮脱颖而出,人们一下子就注意到它了,增加了点击的概率。

640?wx_fmt=gif

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

追踪位置

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

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 {

  positionrelative;

  appearancenone;

  background#f72359;

  padding1em 2em;

  bordernone;

  colorwhite;

  font-size1.2em;

  cursorpointer;

  outlinenone;

  overflowhidden;

  border-radius100px;

 

  span {

    positionrelative;

  }

 

  &::before {

    --size0;  

 

    content'';

    positionabsolute;

    leftvar(--x);

    topvar(--y);

    widthvar(--size);

    heightvar(--size);

    backgroundradial-gradient(circle closest-side, #4405f7, transparent);

    transformtranslate(-50%, -50%);

    transitionwidth .2s ease, height .2s ease;

  }

 

  &:hover::before {

    --size400px;

  }

}

  1. 用span包裹文本,以避免显示在按钮的上方。

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

本文作者:程序员观察
本文发布时间:2018年05月11日
本文来自云栖社区合作伙伴 ,了解相关信息可以关注csdn.net网站。

转载地址:http://amvta.baihongyu.com/

你可能感兴趣的文章
Web基础架构:负载均衡和LVS
查看>>
Linux下c/c++相对路径动态库的生成与使用
查看>>
SHELL实现跳板机,只允许用户执行少量允许的命令
查看>>
SpringBoot 整合Redis
查看>>
2014上半年大片早知道
查看>>
Android 6.0指纹识别App开发案例
查看>>
正文提取算法
查看>>
轻松学PHP
查看>>
Linux中的网络监控命令
查看>>
this的用法
查看>>
windows下安装redis
查看>>
CentOS7 yum 安装git
查看>>
启动日志中频繁出现以下信息
查看>>
httpd – 对Apache的DFOREGROUND感到困惑
查看>>
分布式锁的一点理解
查看>>
idea的maven项目,install下载重复下载本地库中已有的jar包,而且下载后jar包都是lastupdated问题...
查看>>
2019测试指南-web应用程序安全测试(二)指纹Web服务器
查看>>
树莓派3链接wifi
查看>>
js面向对象编程
查看>>
Ruby中类 模块 单例方法 总结
查看>>