使用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 用border写 空心三角箭头 (两种写法)
Sep 29 HTML / CSS
CSS3教程(8):CSS3透明度指南
Apr 02 HTML / CSS
css3发光搜索表单分享
Apr 11 HTML / CSS
实例讲解CSS3中的border-radius属性
Aug 18 HTML / CSS
纯CSS3实现扇形动画菜单(简化版)实例源码
Jan 17 HTML / CSS
css3类选择器之结合元素选择器和多类选择器用法
Mar 09 HTML / CSS
canvas使用注意点总结
Jul 19 HTML / CSS
HTML5梦幻之旅——炫丽的流星雨效果实现过程
Aug 06 HTML / CSS
HTML5 LocalStorage 本地存储详细概括(多图)
Aug 18 HTML / CSS
canvas实现按住鼠标移动绘制出轨迹的示例代码
Feb 05 HTML / CSS
五分钟学会HTML5的WebSocket协议
Nov 22 HTML / CSS
CSS极坐标的实例代码
Jun 03 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实现将字符串按照指定距离进行分割的方法
2015/03/14 PHP
PHP 等比例缩放图片详解及实例代码
2016/09/18 PHP
PHP创建自己的Composer包方法
2018/04/09 PHP
php 字符串中是否包含指定字符串的多种方法
2018/04/12 PHP
权威JavaScript 中的内存泄露模式
2007/08/13 Javascript
javascript 控制 html元素 显示/隐藏实现代码
2009/09/01 Javascript
超越Jquery_01_isPlainObject分析与重构
2010/10/20 Javascript
js获取网页可见区域、正文以及屏幕分辨率的高度
2014/05/15 Javascript
node.js中的fs.lchown方法使用说明
2014/12/16 Javascript
jQuery中scrollLeft()方法用法实例
2015/01/16 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
Vue.js实现的购物车功能详解
2019/01/27 Javascript
js事件触发操作实例分析
2019/06/21 Javascript
[03:44]2014DOTA2国际邀请赛 71专访:DK战队赛前讨论视频遭泄露
2014/07/13 DOTA
Python实现提取谷歌音乐搜索结果的方法
2015/07/10 Python
Python 查看文件的读写权限方法
2018/01/23 Python
python实现串口自动触发工作的示例
2019/07/02 Python
python文字转语音的实例代码分析
2019/11/12 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
2020/03/23 Python
简单了解python shutil模块原理及使用方法
2020/04/28 Python
python用opencv完成图像分割并进行目标物的提取
2020/05/25 Python
python3.7 openpyxl 在excel单元格中写入数据实例
2020/09/01 Python
社区版pycharm创建django项目的方法(pycharm的newproject左侧没有项目选项)
2020/09/23 Python
html5唤起app的方法
2017/11/30 HTML / CSS
工商管理专业应届生求职信
2013/11/04 职场文书
保安自我鉴定范文
2013/12/08 职场文书
《木笛》教学反思
2014/03/01 职场文书
报关员个人职业生涯规划书
2014/03/12 职场文书
《青蛙看海》教学反思
2014/04/23 职场文书
简易离婚协议书范本
2014/10/24 职场文书
党支部先进事迹材料
2014/12/24 职场文书
组织委员竞选稿
2015/11/21 职场文书
2016大一新生军训心得体会
2016/01/11 职场文书
小学生作文写作技巧100例,非常实用!
2019/07/08 职场文书
读《瓦尔登湖》有感:每个人都需要一个瓦尔登湖
2019/10/17 职场文书
postgresql无序uuid性能测试及对数据库的影响
2021/06/11 PostgreSQL