使用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对图片照片进行边缘模糊处理的实现
Aug 08 HTML / CSS
CSS3实现圆角、阴影、透明效果并兼容各大浏览器
Aug 08 HTML / CSS
一款CSS3实现多功能下拉菜单(带分享按)的教程
Nov 05 HTML / CSS
CSS3使用border-radius属性制作圆角
Dec 22 HTML / CSS
css3 transform及原生js实现鼠标拖动3D立方体旋转
Jun 20 HTML / CSS
CSS3实现缺角矩形,折角矩形以及缺角边框
Dec 20 HTML / CSS
html通过canvas转成base64的方法
Jul 18 HTML / CSS
html5使用canvas实现跟随光标跳动的火焰效果
Jan 07 HTML / CSS
HTML5事件方法全部汇总
May 12 HTML / CSS
html5录音功能实战示例
Mar 25 HTML / CSS
html5用video标签流式加载的实现
May 20 HTML / CSS
AmazeUI 模态窗口的实现代码
Aug 18 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
全国FM电台频率大全 - 12 安徽省
2020/03/11 无线电
在Windows版的PHP中使用ADO
2006/10/09 PHP
介绍几个array库的新函数 php
2006/12/29 PHP
完美实现GIF动画缩略图的php代码
2011/01/02 PHP
php 检查电子邮件函数(自写)
2014/01/16 PHP
php版银联支付接口开发简明教程
2016/10/14 PHP
jQuery在vs2008及js文件中的无智能提示的解决方法
2010/12/30 Javascript
json的前台操作和后台操作实现代码
2012/01/20 Javascript
利用javascript解决图片缩放及其优化的代码
2012/05/23 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
2013/05/03 Javascript
js实现广告漂浮效果的小例子
2013/07/02 Javascript
整理一下常见的IE错误
2016/11/18 Javascript
JavaScript从原型到原型链深入理解
2019/06/03 Javascript
小程序input数据双向绑定实现方法
2019/10/17 Javascript
vue-router 按需加载 component: () => import() 报错的解决
2020/09/22 Javascript
[00:48]DOTA2国际邀请赛公开赛报名开始 扫码开启逐梦之旅
2018/06/06 DOTA
python实现socket客户端和服务端简单示例
2014/02/24 Python
python读取json文件并将数据插入到mongodb的方法
2015/03/23 Python
利用Fn.py库在Python中进行函数式编程
2015/04/22 Python
python学习 流程控制语句详解
2016/06/01 Python
简介Python的collections模块中defaultdict类型的用法
2016/07/07 Python
python使用循环打印所有三位数水仙花数的实例
2018/11/13 Python
Django+Xadmin构建项目的方法步骤
2019/03/06 Python
PyTorch的深度学习入门教程之构建神经网络
2019/06/27 Python
Python实现一个简单的毕业生信息管理系统的示例代码
2020/06/08 Python
用python写爬虫简单吗
2020/07/28 Python
解决Django响应JsonResponse返回json格式数据报错问题
2020/08/09 Python
纯css3实现宠物小鸡实例代码
2018/10/08 HTML / CSS
Canvas 文本填充线性渐变的使用详解
2020/06/22 HTML / CSS
AmazeUI的JS表单验证框架实战示例分享
2020/08/21 HTML / CSS
BIBLOO波兰:捷克的一家在线服装店
2018/03/09 全球购物
工作散漫检讨书
2014/09/16 职场文书
转正申请报告格式
2015/05/15 职场文书
中学语文教学反思
2016/02/16 职场文书
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL
聊聊SpringBoot自动装配的魔力
2021/11/17 Java/Android