使用CSS变量实现炫酷惊人的悬浮效果


Posted in HTML / CSS onApril 26, 2019

最近,我从 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. 用span包裹文本,以避免显示在按钮的上方。
  2. 将 width和height初始化为0px,当用户悬停在按钮上时,将其改为400px。不要忘了设置这种转换以使其像风一样:dash:瞬间出现;
  3. 利用坐标追踪鼠标位置;
  4. 在background 属性上应用 radial-gradient,使用closest-side circle。Closest-side能够覆盖整个面。

总结
 

以上所述是小编给大家介绍的使用CSS变量实现炫酷惊人的悬浮效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

HTML / CSS 相关文章推荐
基于CSS3实现的几个小loading效果
Sep 27 HTML / CSS
CSS中越界问题的经典解决方案【推荐】
Apr 19 HTML / CSS
CSS3的常见transformation图形变化用法小结
May 13 HTML / CSS
HTML+CSS3模拟心的跳动实例代码
Sep 05 HTML / CSS
HTML5中通过li-canvas轻松实现单图、多图、圆角图绘制,单行文字、多行文字等
Nov 30 HTML / CSS
Html5实现二维码扫描并解析
Jan 20 HTML / CSS
HTML块级标签汇总(小篇)
Jul 13 HTML / CSS
HTML5 移动页面自适应手机屏幕四类方法总结
Aug 17 HTML / CSS
canvas环形倒计时组件的示例代码
Jun 14 HTML / CSS
html5写一个BUI折叠菜单插件的实现方法
Sep 11 HTML / CSS
使用Html5 Stream开发实时监控系统
Jun 02 HTML / CSS
纯CSS打字动画的实现示例
Aug 05 HTML / CSS
详解CSS3中的box-sizing(content-box与border-box)
Apr 19 #HTML / CSS
CSS3 transforms应用于背景图像的解决方法
Apr 16 #HTML / CSS
CSS3实现王者荣耀匹配人员加载页面的方法
Apr 16 #HTML / CSS
CSS3实现王者匹配时的粒子动画效果
Apr 12 #HTML / CSS
CSS3解析抖音LOGO制作的方法步骤
Apr 11 #HTML / CSS
浅谈CSS3 box-sizing 属性 有趣的盒模型
Apr 02 #HTML / CSS
CSS3 3D酷炫立方体变换动画的实现
Mar 26 #HTML / CSS
You might like
php url地址栏传中文乱码解决方法集合
2010/06/25 PHP
php获取本周开始日期和结束日期的方法
2015/03/09 PHP
Javascript学习笔记9 prototype封装继承
2010/01/11 Javascript
屏蔽F1~F12的快捷键的js函数
2010/05/06 Javascript
JavaScript中关于indexOf的使用方法与问题小结
2010/08/05 Javascript
jQuery中json对象的复制方式介绍(数组及对象)
2013/06/08 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
浅谈Node.js中的定时器
2015/06/18 Javascript
基于jQuery实现选项卡效果
2017/01/04 Javascript
jQuery多选框选择数量限制方法
2017/02/08 Javascript
支持移动端原生js轮播图
2017/02/16 Javascript
基于Bootstrap table组件实现多层表头的实例代码
2017/09/07 Javascript
vue+jquery+lodash实现滑动时顶部悬浮固定效果
2018/04/28 jQuery
解决vue 绑定对象内点击事件失效问题
2018/09/05 Javascript
vue动画打包后失效问题的解决方法
2018/09/18 Javascript
js实现鼠标拖拽div左右滑动
2020/01/15 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
2020/07/27 Javascript
通过实例解析JavaScript常用排序算法
2020/09/02 Javascript
[01:05:36]VP vs TNC Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
利用Python的Django框架生成PDF文件的教程
2015/07/22 Python
Python实现矩阵加法和乘法的方法分析
2017/12/19 Python
基于python requests库中的代理实例讲解
2018/05/07 Python
python K近邻算法的kd树实现
2018/09/06 Python
django中账号密码验证登陆功能的实现方法
2019/07/15 Python
Python基于Tensor FLow的图像处理操作详解
2020/01/15 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
2020/03/03 Python
python从PDF中提取数据的示例
2020/10/30 Python
阿迪达斯墨西哥官方网站:adidas墨西哥
2017/11/03 全球购物
英国领先的男装设计师服装独立零售商:Repertoire Fashion
2020/10/19 全球购物
Linux如何压缩可执行文件
2013/10/21 面试题
信息技术专业个人自我评价
2013/12/11 职场文书
服装创业计划书范文
2014/02/05 职场文书
宣传稿格式范文
2015/07/23 职场文书
喜迎建国70周年:有关爱国的名言名句
2019/09/24 职场文书
2019年亲子运动会口号
2019/10/11 职场文书
python用字节处理文件实例讲解
2021/04/13 Python