前端开发 -- 自定义鼠标指针样式

server/2024/12/30 16:51:31/

html" title=前端>前端开发 – 自定义鼠标指针样式

一:效果展示

由于我使用的图片是JPEG格式,所以显得很突兀。大家使用使用矢量图形SVG格式就会显得很正常

在这里插入图片描述

二:源码分享

html"><!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>自定义鼠标样式</title><style>html" title=css>css">body {margin: 0;height: 100vh;display: flex;justify-content: center;align-items: center;text-align: center;cursor: none;background-color: #130f0f;overflow: hidden;}.container {position: relative;z-index: 1;}.custom-cursor {width: 50px;height: 50px;position: absolute;pointer-events: none; z-index: 0; transform: translate(-50%, -50%); }.cursor-style-1 { background-image: url('111.jpg'); }.cursor-style-2 { background-image: url('222.jpg'); }.cursor-style-3 { background-image: url('333.jpg'); }.cursor-style-4 { background-image: url('444.jpg'); }.cursor-style-5 { background-image: url('555.jpg'); }.cursor-style-6 { background-image: url('666.jpg'); }.cursor-style-1, .cursor-style-2, .cursor-style-3, .cursor-style-4, .cursor-style-5, .cursor-style-6 {background-size: cover;background-position: center center;}.button-container {display: flex;flex-wrap: wrap;gap: 10px;}.style-button {width: 60px;height: 60px;background-size: cover;background-position: center;border: none;cursor: pointer; outline: none;opacity: 0.8;transition: opacity 0.3s;}.style-button:hover {opacity: 1;}.style-button.active {border: 2px solid #000;}</style>
</head>
<body><div class="container"><div class="button-container"><button class="style-button active" onclick="javascript language-javascript">setCursorStyle('cursor-style-1')" style="html" title=css>css language-html" title=css>css">background-image: url('111.jpg');"></button><button class="style-button" onclick="javascript language-javascript">setCursorStyle('cursor-style-2')" style="html" title=css>css language-html" title=css>css">background-image: url('222.jpg');"></button><button class="style-button" onclick="javascript language-javascript">setCursorStyle('cursor-style-3')" style="html" title=css>css language-html" title=css>css">background-image: url('333.jpg');"></button><button class="style-button" onclick="javascript language-javascript">setCursorStyle('cursor-style-4')" style="html" title=css>css language-html" title=css>css">background-image: url('444.jpg');"></button><button class="style-button" onclick="javascript language-javascript">setCursorStyle('cursor-style-5')" style="html" title=css>css language-html" title=css>css">background-image: url('555.jpg');"></button><button class="style-button" onclick="javascript language-javascript">setCursorStyle('cursor-style-6')" style="html" title=css>css language-html" title=css>css">background-image: url('666.jpg');"></button></div></div><script>javascript">document.addEventListener('DOMContentLoaded', () => {const cursor = document.createElement('div');cursor.classList.add('custom-cursor', 'cursor-style-1'); document.body.appendChild(cursor);document.addEventListener('mousemove', (e) => {cursor.style.left = `${e.clientX}px`;cursor.style.top = `${e.clientY}px`;});const buttons = document.querySelectorAll('.style-button');window.setCursorStyle = function(style) {cursor.classList.remove('cursor-style-1', 'cursor-style-2', 'cursor-style-3', 'cursor-style-4', 'cursor-style-5', 'cursor-style-6');cursor.classList.add(style); buttons.forEach(button => button.classList.remove('active'));document.querySelector(`.style-button[onclick*="${style}"]`).classList.add('active');};});</script>
</body>
</html>

三:代码解析

1.HTML代码解析
html"><!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>自定义鼠标样式</title><!-- 引入CSS样式 --><style>html" title=css>css">/* CSS样式在这里定义 */</style>
</head>
<body><div class="container"><!-- 按钮容器,包含多个用于切换鼠标样式的按钮 --><div class="button-container"><!-- 每个按钮通过onclick事件调用setCursorStyle函数来切换鼠标样式 --><button class="style-button active" onclick="javascript language-javascript">setCursorStyle('cursor-style-1')" style="html" title=css>css language-html" title=css>css">background-image: url('111.jpg');"></button><button class="style-button" onclick="javascript language-javascript">setCursorStyle('cursor-style-2')" style="html" title=css>css language-html" title=css>css">background-image: url('222.jpg');"></button><button class="style-button" onclick="javascript language-javascript">setCursorStyle('cursor-style-3')" style="html" title=css>css language-html" title=css>css">background-image: url('333.jpg');"></button><button class="style-button" onclick="javascript language-javascript">setCursorStyle('cursor-style-4')" style="html" title=css>css language-html" title=css>css">background-image: url('444.jpg');"></button><button class="style-button" onclick="javascript language-javascript">setCursorStyle('cursor-style-5')" style="html" title=css>css language-html" title=css>css">background-image: url('555.jpg');"></button><button class="style-button" onclick="javascript language-javascript">setCursorStyle('cursor-style-6')" style="html" title=css>css language-html" title=css>css">background-image: url('666.jpg');"></button></div></div><!-- JavaScript脚本,用于处理鼠标样式的切换逻辑 --><script>javascript">/* JavaScript代码在这里定义 */</script>
</body>
</html>
2.CSS代码解析
html" title=css>css"><style>body {margin: 0; /* 移除body的默认外边距 */height: 100vh; /* 使body的高度等于视口高度 */display: flex; /* 使用Flexbox布局 */justify-content: center; /* 水平居中 */align-items: center; /* 垂直居中 */text-align: center; /* 文本居中 */cursor: none; /* 隐藏浏览器的默认鼠标指针 */background-color: #130f0f; /* 设置背景颜色 */overflow: hidden; /* 防止页面滚动 */}.container {position: relative; /* 设置相对定位,以便子元素(如自定义光标)可以相对于此定位 */z-index: 1; /* 确保容器及其内容(如按钮)位于自定义光标之上 */}.custom-cursor {width: 50px; /* 自定义光标的宽度 */height: 50px; /* 自定义光标的高度 */position: absolute; /* 设置绝对定位,以便能够自由移动光标 */pointer-events: none; /* 使自定义光标不影响页面上的点击事件 */z-index: 0; /* 确保自定义光标位于其他内容之下 */transform: translate(-50%, -50%); /* 使光标的中心对准鼠标位置 */}/* 定义6种不同的光标样式,通过背景图片实现 */.cursor-style-1 { background-image: url('111.jpg'); }.cursor-style-2 { background-image: url('222.jpg'); }.cursor-style-3 { background-image: url('333.jpg'); }.cursor-style-4 { background-image: url('444.jpg'); }.cursor-style-5 { background-image: url('555.jpg'); }.cursor-style-6 { background-image: url('666.jpg'); }.cursor-style-1, .cursor-style-2, .cursor-style-3, .cursor-style-4, .cursor-style-5, .cursor-style-6 {    /* 为所有光标样式设置了共同的背景图片属性 */background-size: cover; /* 背景图片覆盖整个元素 */background-position: center center; /* 背景图片居中显示 */}.button-container {    /* 该类用于包裹所有按钮,使按钮能够灵活布局并保持间距 */display: flex; /* 使用Flexbox布局 */flex-wrap: wrap; /* 允许按钮换行 */gap: 10px; /* 按钮之间的间距 */}.style-button {		   /* 定义了按钮的基本样式,包括大小、背景图片、边框、透明度过渡等 */width: 60px; /* 按钮宽度 */height: 60px; /* 按钮高度 */background-size: cover; /* 背景图片覆盖整个按钮 */background-position: center; /* 背景图片居中显示 */border: none; /* 移除按钮边框 */cursor: pointer; /* 尽管设置了,但因为body的cursor为none,所以不会影响自定义光标 */outline: none; /* 移除按钮聚焦时的轮廓线 */opacity: 0.8; /* 按钮初始透明度 */transition: opacity 0.3s; /* 按钮透明度的过渡效果,持续0.3秒 */}.style-button:hover {opacity: 1; /* 鼠标悬停时按钮完全不透明 */}.style-button.active {border: 2px solid #000; /* 当前激活的按钮显示边框 */}
</style>
3.JavaScript代码解析
<script>document.addEventListener('DOMContentLoaded', () => {// 创建一个div元素作为自定义光标const cursor = document.createElement('div');cursor.classList.add('custom-cursor', 'cursor-style-1'); // 默认光标样式document.body.appendChild(cursor);// 监听鼠标移动事件,更新自定义光标的位置document.addEventListener('mousemove', (e) => {cursor.style.left = `${e.clientX}px`;cursor.style.top = `${e.clientY}px`;});// 获取所有样式按钮const buttons = document.querySelectorAll('.style-button');// 定义全局函数,用于切换光标样式window.setCursorStyle = function(style) {// 移除自定义光标上的所有样式类cursor.classList.remove('cursor-style-1', 'cursor-style-2', 'cursor-style-3', 'cursor-style-4', 'cursor-style-5', 'cursor-style-6');cursor.classList.add(style); // 添加新的样式类// 移除所有按钮的active类buttons.forEach(button => button.classList.remove('active'));// 给当前点击的按钮添加active类document.querySelector(`.style-button[onclick*="${style}"]`).classList.add('active');};});
</script>

http://www.ppmy.cn/server/154206.html

相关文章

Spark和Hadoop之间的区别

1 、 Hadoop Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构。 用户可以在不了解分布式底层细节的情况下&#xff0c;开发分布式程序。充分利用集群的威力进行高速运算和存储。 Hadoop 实现了一个分布式文件系统&#xff08;Hadoop Distributed File System &…

soular使用教程

用 soular 配置你的组织&#xff0c;工作更高效&#xff01;以下是快速上手的简单步骤&#xff1a; &#xfeff; 1. 账号管理 可以对账号信息进行多方面管理&#xff0c;包括分配不同的部门、用户组等&#xff0c;从而确保账号权限和职责的清晰分配。 &#xfeff; 1.1 用…

普通的树形数据primevue的treetable组件的treetable[ ]

1&#xff0c;核心思想就是缺什么属性加什么属性 1.原始数据 原始数据本身就是树状&#xff0c;只是不是TreeNode类型的数组&#xff0c;这样的数据&#xff0c;primevue的treetable组件是展示不出来的&#xff0c;自己把这个数组转成node类型的&#xff0c;会有一个难解决的…

【论文复现】农作物病害分类(Web端实现)

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀ 农作物病害分类 概述演示效果核心逻辑使用方式部署方式 概述 农作物病害是国家粮食安全的一个主要威胁&#xff0c;是决定农作物产量和质量的…

乐乐音乐Flutter版

简介 乐乐音乐Flutter版主要是基于Flutter Desktop框架开发的音乐播放器&#xff0c;它支持lrc歌词和动感歌词(ksc歌词、krc歌词、trc歌词、zrce歌词和hrc歌词等)、多种格式歌词转换器及制作动感歌词、翻译歌词和音译歌词。 编译环境 Flutter:ideaIU-2024.1.4 参考地址 多…

Web3 生态全景:创新与发展之路

随着区块链技术的成熟&#xff0c;Web3作为互联网的下一代形态&#xff0c;逐渐进入公众视野。它不仅代表了技术的革新&#xff0c;更是对现有互联网体系的一种挑战&#xff0c;预示着未来数字世界的巨大变革。Web3的核心理念在于去中心化&#xff0c;力求打破传统互联网模式中…

Faster R-CNN

文章目录 摘要Abstract1. 引言2. 框架2.1 RPN2.1.1 网络结构2.1.2 损失函数2.1.3 训练细节 2.2 训练过程 3. 创新点和不足3.1 创新点3.2 不足 参考总结 摘要 Faster R-CNN是针对Fast R-CNN缺点改进的目标检测模型。为了解决候选区域生成耗时长的问题&#xff0c;Faster R-CNN提…

如何强制关闭mac卡死的进程

在 macOS 上&#xff0c;如果某个进程卡死了&#xff0c;你可以通过以下方法强制关闭它&#xff1a; 方法 1&#xff1a;通过“强制退出”窗口 快捷键&#xff1a;按下 Command (⌘) Option (⌥) Esc。在弹出的“强制退出应用程序”窗口中&#xff0c;选择卡死的应用程序。点…