js和CSS3自定义鼠标特效

news/2025/2/26 13:44:36/文章来源:https://www.cnblogs.com/liylllove/p/18564898

在线预览  下载

 

 

这是一款js和CSS3自定义鼠标特效。该特效中,使用一个DIV元素来自定义鼠标,通过CSS代码来构建鼠标的形状,并通过js代码来驱动鼠标的动画。

 使用方法

 HTML结构

基本的HTML结构如下。

<!--鼠标形状元素-->
<div id="cursorBlob"></div>
<!--页面内容-->
<div class="wrap">
 
</div>
 CSS样式

为鼠标元素添加一些基础的CSS样式。

#cursorBlob {
  width: 50px;
  height: 50px;
  background: linear-gradient(120deg, #FF1744, #E040FB, #2979FF, #00E5FF, #76FF03);
  background-size: 1600% 1600%;
  position: absolute;
  mix-blend-mode: difference;
  pointer-events: none;
  z-index: 1;
  transition: 0.15s linear;
  animation: blobRadius 5s ease infinite, blobBackground 15s ease infinite;
}
 
@keyframes blobRadius {
  0%, 100% {
    border-radius: 43% 77% 80% 40% / 40% 40% 80% 80%;
  }
  20% {
    border-radius: 47% 73% 61% 59% / 47% 75% 45% 73%;
  }
  40% {
    border-radius: 46% 74% 74% 46% / 74% 58% 62% 46%;
  }
  60% {
    border-radius: 47% 73% 61% 59% / 40% 40% 80% 80%;
  }
  80% {
    border-radius: 50% 70% 52% 68% / 51% 61% 59% 69%;
  }
}
@keyframes blobBackground {
  0%, 100% {
    background-position: 0% 50%;
  }
  50% {
    background-position: 100% 50%;
  }
}
 Javascript

最后通过下面的JS代码来在鼠标移动时,将制定的鼠标形状元素跟随鼠标一起移动。

const blobCursor = (() => {
const CURSOR = document.querySelector('#cursorBlob');
const LINKS = document.querySelectorAll('.nav__link');
const setCursorPos = e => {
const { pageX: posX, pageY: posY } = e;
CURSOR.style.top = `${posY - CURSOR.offsetHeight / 2}px`;
CURSOR.style.left = `${posX - CURSOR.offsetWidth / 2}px`;
};
document.addEventListener('mousemove', setCursorPos);
 
const setCursorHover = () => CURSOR.style.transform = 'scale(2.5)';
const removeCursorHover = () => CURSOR.style.transform = '';
LINKS.forEach(link => link.addEventListener('mouseover', setCursorHover));
LINKS.forEach(link => link.addEventListener('mouseleave', removeCursorHover));
 
})();          

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/839965.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ArcGIS填补面图层的细小空白并删除主体部分外的零散部分

本文介绍在ArcMap软件中,基于消除面部件(“Eliminate Polygon Part”)工具,对矢量面要素的零碎、空洞区域加以删除,同时将游离于要素主体之外的部分剔除的方法~本文介绍在ArcMap软件中,基于消除面部件(“Eliminate Polygon Part”)工具,对矢量面要素的零碎、空洞区域加…

JetBrains IDE 2024.3 (macOS, Linux, Windows) - 开发者工具

JetBrains IDE 2024.3 (macOS, Linux, Windows) - 开发者工具JetBrains IDE 2024.3 (macOS, Linux, Windows) - 开发者工具 Aqua, CLion, DataGrip, DataSpell, Fleet, GoLand, IntelliJ IDEA, PhpStorm, PyCharm, Rider, RubyMine, WebStorm 请访问原文链接:https://sysin.or…

OO4-6次作业作业总结

总结性博客:Java题目习题集4-6学习心得 一、前言 通过三次习题集的练习,我对面向对象编程(OOP)、集合框架和输入输出操作有了更加深刻的理解。这三次题目涵盖的内容主要包括以下几个方面:题目知识点: 第一次习题集:以Java的继承与多态为核心,强化对类与对象的理解,设计…

如何立项?Tita 项目审批管控

什么场景下企业需要「项目审批」? 如果你的企业不允许员工随意创建项目,项目的创建需要走「立项审批」,也不允许员工随意修改项目时间,或完成项目、删除项目等,你就可以使用「项目审批」,从而达到对项目的创建和修改进行严格管控的目的。 如何使用项目审批?第一步:在后…

《DNK210使用指南 -CanMV版 V1.0》第三十九章 YOLO2人脸检测实验

第三十九章 YOLO2人脸检测实验 1)实验平台:正点原子DNK210开发板 2)章节摘自【正点原子】DNK210使用指南 - CanMV版 V1.0 3)购买链接:https://detail.tmall.com/item.htm?&id=782801398750 4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k…

2024-2025-1 20241407《计算机基础与程序设计》第九周学习总结

作业信息这个作业属于哪个课程 2024-2025-1 计算机基础与程序设计这个作业要求在哪里 2024-2025-1 计算机基础与程序设计第九周作业这个作业的目标 操作系统责任,内存与进程管理,分时系统,CPU调度,文件、文件系统,文件保护,磁盘调度作业正文 本博客教材学习内容总结 《计…

pta4~6总结blog

一、前言 本次blog是针对发布题目集4~6的总结。 1、题目集4,总有三题。 1)第一题是用继承完成校园角色类设计。主要内容:角色Role分两类:学生Student和雇员Employee;雇员又分为教员Faculty和职员Staff。只需设计好每个类的父子关系,每个类的属性和方法就可以完成。 2)第…

docker通过运行中的容器构建镜像

docker commit web1 httpd:v1 docker run -d --name web5 -p 85:80 httpd:v1

【小记】 Matplotlib 中设置自定义中文字体的正确姿势

麻麻再也不用担心我的 matplotlib 渲染不出中文字符了!本笔记还简要地从源码角度介绍了一下实现原理。最近做实验涉及到用 Matplotlib 绘制图表,我希望相同的代码能不仅在本地运行,且还能在 Google Colab, Binder 这些线上平台运行。 问题就来了,为了在各个平台上都能绘制中…

南昌航空大学-22207107-胡优乐-Java第二次Blog大作业

前言在这段时间里,我们总共进行了三次大作业练习,基于这三次大作业的体量及设计的知识点,难度分布,我做了以下的总结:1.第四次大作业总共有三道题,分别是:1.校园角色类设计-1;2.设计一个学生类和它的子类-本科生类;3.答题判断程序-4;实际做下来的体会是:(1)第一题难…

团队作业5——测试与发布

团队作业5——测试与发布这个作业属于哪个课程 <计科22级34班>这个作业要求在哪里 <作业要求>这个作业的目标 完成连续七天的项目冲刺GitHub 链接 https://github.com/tangliweiwww/ChatGpt团队 1.团队名称:Elegance 2.团队成员姓名 班级 学号唐立伟(组长) 计科…

Java中定时任务实现方式及源码剖析

概述 在企业级应用开发场景中,定时任务占据着至关重要的地位。比如以下这些场景:用户4个小时以内没有进行任何操作,就自动清除用户会话。 每天晚上凌晨自动拉取另一个业务系统的某部分数据。 每隔15分钟,自动执行一段逻辑,更新某部分数据。类似的场景会频繁出现在我们的日…