当前位置: 首页 > news >正文

【js自定义鼠标样式】【js自定义鼠标动画】

文章目录

  • 前言
  • 一、效果图
  • 二、实现步骤
    • 1. 去除原有鼠标样式
    • 2. 自定义鼠标样式
    • 3. 使用
  • 总结


前言

自定义鼠标形状,自定义鼠标的动画,可以让我们的页面更加有设计感。
当前需求:吧鼠标自定义成一个正方形,鼠标的效果有:和页面的颜色做色差处理,例如当鼠标指到的颜色是白色,在鼠标的这块区域中显示的是黑色,另外,当鼠标指向特定区域时,正方形的鼠标放大三倍,并且以中心为圆点旋转。


一、效果图

鼠标放大之后的效果

在这里插入图片描述

鼠标没放大的效果

在这里插入图片描述

鼠标的色差

在这里插入图片描述在这里插入图片描述

二、实现步骤

1. 去除原有鼠标样式

body {cursor: none;
}

2. 自定义鼠标样式

代码如下(示例):

<div id="mouse" class="mouse"></div>
/* pointer-events: 取消它的鼠标事件,并指向它下面的元素。 */
/* mix-blend-mode: 设置图片元素与父容器背景(黄色)进行混合 */
.mouse {width: 30px;height: 30px;will-change: top, left; position: fixed;left: -200px;z-index: 10020;pointer-events: none;mix-blend-mode: difference;background-color: #fff;display: flex;align-items: center;justify-content: center;
}
/* 这是鼠标中的文字,可以不写 */
.mouse-text::after {content: "VIEW";
}

js如下

// 引用gsap做动画
import gsap from 'gsap';// 自定义鼠标样式
function setMouse() {const mouse = document.querySelector('.mouse');window.addEventListener('mousemove', function(event){    mouse.style.left = event.clientX - mouse.offsetWidth/2 + 'px';mouse.style.top = event.clientY - mouse.offsetHeight/2 + 'px';       })gsap.to("#mouse", {rotation: -30,});
}// 鼠标动画(放大,旋转)
var mouseTl;function setMouseChange1() {mouseTl = gsap.timeline();mouseTl.to("#mouse", {duration: .2,width: "150px",height: "150px"});mouseTl.fromTo("#mouse", {rotation: -30,},{duration: 7,repeat: -1,rotation: 330,ease: "none",});const mouseDiv = document.getElementById("mouse");mouseDiv.setAttribute("class", "mouse mouse-text");
}// (缩小,旋转到原位)
function setMouseChange2() {mouseTl.pause(0);const mouseDiv = document.getElementById("mouse");mouseDiv.setAttribute("class", "mouse");
}

3. 使用

代码如下(示例):

<div @mouseenter="bannerTextEnter" @mouseleave="bannerTextLeave">ANIMATION!</div>
// 鼠标移动到banner文字事件
function bannerTextEnter() {setMouseChange1();
}
function bannerTextLeave() {setMouseChange2()
}

总结

以上就是自定义鼠标样式,自定义鼠标动画的全部了,如有疑问,请评论区留言。

http://www.lryc.cn/news/269347.html

相关文章:

  • Linux开发工具——gdb篇
  • spring状态机
  • K8S异常处理
  • 【挑战全网最易懂】深度强化学习 --- 零基础指南
  • WPF RelativeSource
  • centos 安装 配置 zsh
  • git 常用基本命令, reset 回退撤销commit,解决gitignore无效,忽略记录或未记录远程仓库的文件,删除远程仓库文件
  • Vue Echarts 多折线图只有一条X轴(合并X轴数据并去重排序) - 附完整示例
  • WPF+Halcon 培训项目实战(6):目标匹配助手
  • Linux管理LVM逻辑卷
  • vue如何实现局部刷新?
  • C语言,指针链表详解解说及代码示例
  • 6、LLaVA
  • SpringMVC核心处理流程梳理
  • go 语言程序设计第2章--程序结构
  • JavaScript基础知识点总结:从零开始学习JavaScript(五)
  • Intel FPGA 技术开放日
  • 分享72个Python爬虫源码总有一个是你想要的
  • Mybatis 动态 SQL - foreach
  • 编程笔记 GOLANG基础 001 为什么要学习Go语言
  • OrientDB使用教程:全面了解图数据库
  • VMware安装笔记
  • MIT线性代数笔记-第27讲-复数矩阵,快速傅里叶变换
  • 三维点通用排序
  • [架构之路-265]:目标系统 - 设计方法 - 软件工程 - 软件设计 - 如何做好详细设计
  • java设计模式学习之【模板方法模式】
  • 篇章二 | Python 入门指南:深入理解基础数据类型
  • 循环冗余效验码的计算方法
  • 第P8周:YOLOv5-C3模块实现
  • Java中常见的日志包分析(Log4j、Logback、SLF4J等)