svg完成鼠标样式并使用

news2024/11/15 17:34:42

        本次分享的是通过svg标签实现的鼠标样式,并在页面中进行使用的整个过程,最后还会分享快速制作svg的简单方式。

        如有改进的方法或者发现错误也可以在评论区留言啊。

一、鼠标的svg样式

1.小飞机型

    <svg width="32" height="32" xmlns="http://www.w3.org/2000/svg">
      <g>
        <title>Layer 1</title>
        <path id="svg_14" d="m343.99998,225.90477" opacity="NaN" stroke="#000" fill="none" />
        <path id="svg_18" d="m305.71414,270.95231" opacity="NaN" stroke="#000" fill="#d4aaff" />
        <path stroke="#000" id="svg_19"
          d="m227.24757,58.25095c-0.35356,0 -0.66812,0.13387 -0.93353,0.3767c-0.26518,0.24263 -0.48453,0.59029 -0.66705,1.02449c-0.365,0.86827 -0.58952,2.088 -0.71234,3.54874c-0.12257,1.45793 -0.14323,3.15554 -0.09231,4.97281c-4.36735,1.65257 -13.22515,5.06469 -13.93671,5.82654c-0.94736,1.01432 -0.64127,2.17679 -0.25951,2.94849l14.56196,-2.73373c0.30781,3.56252 0.74546,7.09101 1.12685,9.85586c-1.42407,0.38442 -4.08235,1.14348 -4.63105,1.61418c-0.75588,0.64843 -0.75588,2.74252 -0.75588,2.74252l5.95994,-0.4471c0.14037,0.90266 0.22815,1.42935 0.22815,1.42935l0.00871,0.04753l0.04703,0l0.10972,0l0.04702,0l0.00871,-0.04753c0,0 0.08762,-0.5267 0.22815,-1.42935l5.96168,0.4471c0,0 0.00001,-2.09409 -0.75588,-2.74252c-0.54891,-0.47088 -3.20913,-1.23166 -4.63279,-1.61595c0.3806,-2.75636 0.81748,-6.27135 1.12511,-9.82239l14.39128,2.70204c0.38175,-0.77169 0.68959,-1.93416 -0.25776,-2.94849c-0.70275,-0.75242 -9.34652,-4.08865 -13.76777,-5.76318c0.05283,-1.84082 0.03341,-3.56158 -0.09057,-5.03618l0,-0.00352c-0.12288,-1.45912 -0.34764,-2.67766 -0.71233,-3.54522c-0.18247,-0.43408 -0.40003,-0.78178 -0.66531,-1.02449c-0.26541,-0.24283 -0.57997,-0.3767 -0.93353,-0.3767l-0.00001,0z"
          fill="#d4aaff" />
        <path stroke="#000" id="svg_21"
          d="m15.02999,5.22579c-0.25031,0 -0.473,0.0975 -0.6609,0.27434c-0.18774,0.1767 -0.34302,0.42991 -0.47224,0.74613c-0.2584,0.63235 -0.41736,1.52067 -0.5043,2.58451c-0.08678,1.06179 -0.1014,2.29815 -0.06535,3.62165c-3.09189,1.20355 -9.36283,3.68856 -9.86658,4.24341c-0.67069,0.73872 -0.45399,1.58533 -0.18372,2.14735l10.30923,-1.99095c0.21791,2.59455 0.52776,5.16431 0.79776,7.17792c-1.00818,0.27997 -2.89013,0.83278 -3.27858,1.17559c-0.53513,0.47224 -0.53513,1.99735 -0.53513,1.99735l4.21937,-0.32562c0.09938,0.6574 0.16152,1.04098 0.16152,1.04098l0.00617,0.03461l0.03329,0l0.07768,0l0.03329,0l0.00617,-0.03461c0,0 0.06203,-0.38359 0.16152,-1.04098l4.22061,0.32562c0,0 0,-1.5251 -0.53513,-1.99735c-0.3886,-0.34294 -2.27192,-0.89701 -3.27982,-1.17688c0.26944,-2.00743 0.57874,-4.56736 0.79653,-7.15355l10.1884,1.96787c0.27027,-0.56202 0.4882,-1.40863 -0.18249,-2.14735c-0.49752,-0.54798 -6.61692,-2.97772 -9.74698,-4.19726c0.0374,-1.34065 0.02365,-2.59386 -0.06412,-3.6678l0,-0.00256c-0.08699,-1.06267 -0.24611,-1.95012 -0.5043,-2.58194c-0.12918,-0.31613 -0.28321,-0.56936 -0.47101,-0.74613c-0.1879,-0.17685 -0.41059,-0.27434 -0.66089,-0.27434l0,0z"
          fill="#d4aaff" />
      </g>
    </svg>

样式:

2.小三角型

            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
                <path class="inner"
                      d="M25,30a5.82,5.82,0,0,1-1.09-.17l-.2-.07-7.36-3.48a.72.72,0,0,0-.35-.08.78.78,0,0,0-.33.07L8.24,29.54a.66.66,0,0,1-.2.06,5.17,5.17,0,0,1-1,.15,3.6,3.6,0,0,1-3.29-5L12.68,4.2a3.59,3.59,0,0,1,6.58,0l9,20.74A3.6,3.6,0,0,1,25,30Z"
                      fill="#F2F5F8"/>
                <path class="outer"
                      d="M16,3A2.59,2.59,0,0,1,18.34,4.6l9,20.74A2.59,2.59,0,0,1,25,29a5.42,5.42,0,0,1-.86-.15l-7.37-3.48a1.84,1.84,0,0,0-.77-.17,1.69,1.69,0,0,0-.73.16l-7.4,3.31a5.89,5.89,0,0,1-.79.12,2.59,2.59,0,0,1-2.37-3.62L13.6,4.6A2.58,2.58,0,0,1,16,3m0-2h0A4.58,4.58,0,0,0,11.76,3.8L2.84,24.33A4.58,4.58,0,0,0,7,30.75a6.08,6.08,0,0,0,1.21-.17,1.87,1.87,0,0,0,.4-.13L16,27.18l7.29,3.44a1.64,1.64,0,0,0,.39.14A6.37,6.37,0,0,0,25,31a4.59,4.59,0,0,0,4.21-6.41l-9-20.75A4.62,4.62,0,0,0,16,1Z"
                      fill="#111920"/>
            </svg>

样式:

二、鼠标样式的使用

1.HTML部分(可以更换自己的svg图标,但需要注意修改大小)

这里以小三角举例

  <div class="pointer">
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
      <path class="inner"
        d="M25,30a5.82,5.82,0,0,1-1.09-.17l-.2-.07-7.36-3.48a.72.72,0,0,0-.35-.08.78.78,0,0,0-.33.07L8.24,29.54a.66.66,0,0,1-.2.06,5.17,5.17,0,0,1-1,.15,3.6,3.6,0,0,1-3.29-5L12.68,4.2a3.59,3.59,0,0,1,6.58,0l9,20.74A3.6,3.6,0,0,1,25,30Z"
        fill="#F2F5F8" />
      <path class="outer"
        d="M16,3A2.59,2.59,0,0,1,18.34,4.6l9,20.74A2.59,2.59,0,0,1,25,29a5.42,5.42,0,0,1-.86-.15l-7.37-3.48a1.84,1.84,0,0,0-.77-.17,1.69,1.69,0,0,0-.73.16l-7.4,3.31a5.89,5.89,0,0,1-.79.12,2.59,2.59,0,0,1-2.37-3.62L13.6,4.6A2.58,2.58,0,0,1,16,3m0-2h0A4.58,4.58,0,0,0,11.76,3.8L2.84,24.33A4.58,4.58,0,0,0,7,30.75a6.08,6.08,0,0,0,1.21-.17,1.87,1.87,0,0,0,.4-.13L16,27.18l7.29,3.44a1.64,1.64,0,0,0,.39.14A6.37,6.37,0,0,0,25,31a4.59,4.59,0,0,0,4.21-6.41l-9-20.75A4.62,4.62,0,0,0,16,1Z"
        fill="#111920" />
    </svg>  </div>

2.CSS部分

简单的修改以下大小以及鼠标的隐藏

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html {
  cursor: none;
}

.pointer {
  width: 32px;
  height: 32px;
  position: fixed;
  margin-left: -16px;
  transform-origin: center top;
}

3.JS部分

// 获取DOM元素
const pointer = document.querySelector('.pointer');

// 鼠标移动的相对角度
let rad = 0;

// 添加鼠标移动事件
window.onmousemove = (e) => {
  // 获取移动距离
  const x = e.clientX;
  const y = e.clientY;

  // 获取移动的相对距离
  const mx = e.movementX;
  const my = e.movementY;

  // 如果相对移动距离过小则不修改鼠标的角度
  if (Math.abs(mx) + Math.abs(my) < 5) return;

  // 否则修改
  rad = Math.atan2(mx, -my);
  pointer.style.transform = `translate(${x}px, ${y}px) rotate(${rad}rad)`;
};

三、优缺点

1.优点

代码量很少,并且简单易懂,可直接使用。

2.缺点

也是因为代码过少的原因,考虑不够全面,当鼠标移动较慢时会有明显的卡顿,不适用上线界面。

四、svg制作教程

只需这个网站:SVG 教程 | 菜鸟教程 (runoob.com)  中的svg在线编辑器,编辑好导出svg代码即可。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[行业原型] 汽车供应链多地分销一站式云端解决方案

互联网改变了企业经营模式、竞争环境&#xff0c;同时还在改变企业的交易方式&#xff0c;影响着企业间的协作。 全球化电子商务环境下&#xff0c;传统的供应链管理模式不能适应新环境下供应链管理要求&#xff0c;新的供应链管理模式—eSCM。 eSCM是将分销管理、客户资源管理…

Xilinx RFSOC 47DR 8收8发 信号处理板卡

系统资源如图所示&#xff1a;  FPGA采用XCZU47DR 1156芯片&#xff0c;PS端搭载一组64Bit DDR4,容量为4GB,最高支持速率&#xff1a;2400MT/s;  PS端挂载两片QSPI X4 FLASH&#xff1b;  PS支持一路NVME存储&#xff1b;  PS端挂载SD接口&#xff0c;用于存储程序&…

Django ORM深度游:探索多对一、一对一与多对多数据关系的奥秘与实践

系列文章目录 Django入门全攻略&#xff1a;从零搭建你的第一个Web项目Django ORM入门指南&#xff1a;从概念到实践&#xff0c;掌握模型创建、迁移与视图操作Django ORM实战&#xff1a;模型字段与元选项配置&#xff0c;以及链式过滤与QF查询详解Django ORM深度游&#xff…

Mac 苹果电脑下载安装《植物大战僵尸杂交版2.0.88》详细指南教程(含已损坏打不开等问题解决)

最近植物大战僵尸杂交版可是非常的火爆&#xff0c;各大主播都在玩&#xff0c;可是该游戏作者只发布了win版本&#xff0c;我只有一台 Macbook 一直都很想玩&#xff0c;经过一番折腾终于在Mac上成功安装运行了该游戏&#xff0c;并整理好了&#xff0c;大家想要在 Mac 上安装…

win11通过网线分享网络到Ubuntu工控机

1.条件&#xff1a;一个能无线联网的win11&#xff0c;一根网线&#xff0c;一台Ubuntu工控机&#xff0c;并且使用网线连接两者 2.在win11电脑上 2.1 打开控制面板的网络和Internet 2.2 进入网络和共享中心&#xff0c;在左侧进入 更改适配器设置 2.3 在WLAN上右键&#xff0…

客户案例 | 思腾合力助力国内某自动化研究所算力平台建设

国内某自动化研究所&#xff0c;其主要研究方向是机器人、智能制造与光电信息技术。其所着眼于国民经济和国家安全重大战略需求&#xff0c;凝练研究方向&#xff0c;在机器人与智能制造领域着重开展创新研究&#xff0c;在机器人学、工业机器人、水下机器人、空间机器人及自动…

“新高考”下分班怎么分?

来自安徽的张女士告诉我&#xff1a;上一年孩子升入了高中&#xff0c;但没想到才高一&#xff0c;孩子就面临了一个困难的挑选&#xff1a;312”分班&#xff01; 什么是312”分班呢&#xff1f;许多人或许不明白&#xff0c;便是要求学生在高一入学时&#xff0c;针对于3门必…

1882java密室逃脱管理系统 Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java密室逃脱管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助采用了java设计&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统采用web模式&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&…

Linux服务器扩容及磁盘分区(LVM和非LVM)

Linux扩容及磁盘分区&#xff08;LVM和非LVM&#xff09; 本文主要介绍了阿里云服务器centos的扩容方法&#xff1a;非LVM分区扩容方法&#xff08;系统盘&#xff09;&#xff0c;以及磁盘改LVM并分区&#xff08;数据盘&#xff09;。主要是ext4文件系统及xfs磁盘scsi MBR分…

GD32/STM32系列GPIO工作模式

知不足而奋进 望远山而前行 目录 文章目录 前言 浮空输入 上拉输入 下拉输入 模拟输入 推挽输出 开漏输出 复用推挽输出 复用开漏输出 附录(了解) 总结 前言 在嵌入式系统开发中&#xff0c;对于GPIO&#xff08;通用输入输出端口&#xff09;的配置和使用是至关重…

各大AI模型训练成本大比拼

像OpenAI的ChatGPT、谷歌的Gemini Ultra这样的高级AI模型&#xff0c;训练它们通常需要数百万美元的费用&#xff0c;且该成本还在迅速上升。随着计算需求的增加&#xff0c;训练它们所需的计算能力的费用也在飙升。为此&#xff0c;AI公司正在重新考虑如何训练这些生成式AI系统…

定制高温隧道炉,如何判断质量好坏

在现代工业生产中&#xff0c;高温隧道炉扮演着不可或缺的角色。对于特定工艺要求&#xff0c;如陶瓷烧制、金属热处理等&#xff0c;定制化的高温隧道炉更是不可或缺。然而&#xff0c;面对市场上琳琅满目的产品&#xff0c;如何判断高温隧道炉的质量好坏成为了企业决策者面临…

灵动岛动效:打造沉浸式用户体验

灵动岛是专属于 iPhone 14 Pro 系列交互UI&#xff0c;通过通知消息的展示和状态的查看与硬件相结合&#xff0c;让 iPhone 14 Pro 系列的前置摄像头和传感器的“感叹号”&#xff0c;发生不同形状的变化。这样做的好处是让虚拟软件和硬件的交互变得更为流畅&#xff0c;以便让…

Git 版本控制系统详解

目录 Git 版本控制系统详解一、Git 的作用1. 版本控制2. 分支管理3. 分布式开发4. 协作开发 二、Git 的安装和基本使用1. 安装 Git1.1 Windows1.2 macOS1.3 Linux 2. 配置 Git3. 创建和克隆仓库3.1 创建本地仓库3.2 克隆远程仓库 4. 基本操作4.1 添加文件到暂存区4.2 提交更改4…

【C++修行之道】类和对象(五)日期类的实现、const成员、取地址及const取地址操作符重载

目录 一、 日期类的实现 Date.h 1.1 GetMonthDay函数&#xff08;获取某年某月的天数&#xff09; 问&#xff1a;这个函数为什么不和其他的函数一样放在Date.cpp文件中实现呢&#xff1f; 1.2 CheckDate函数&#xff08;检查日期有效性&#xff09;、Print函数&#xff08;打…

JAVA小案例-输出100-150中能被3整除的数,每5个换行

JAVA小案例-输出100-150中能被3整除的数&#xff0c;每5个换行 代码如下&#xff1a; public class Continue {/*** continue练习&#xff0c;输出100-150中能被3整除的数&#xff0c;每5个换行* param args*/public static void main(String[] args) {int count 0;//计数器…

Mysql root用户远程连接失败解决方案

最近&#xff0c;踩坑云服务器通过root用户远程连接Mysql数据库失败&#xff0c;Mysql 版本为 5.7.44&#xff0c;原因如下&#xff0c;因为root用户权限过大&#xff0c;可能会有风险操作&#xff0c;可以新增其他用户来解决此问题&#xff0c;如果一定要用root用户&#xff0…

【Vue】工程化开发和脚手架

一、开发Vue的两种方式 核心包传统开发模式&#xff1a;基于 html / css / js 文件&#xff0c;直接引入核心包&#xff0c;开发 Vue。工程化开发模式&#xff1a;基于构建工具&#xff08;例如&#xff1a;webpack&#xff09;的环境中开发Vue。 工程化开发模式优点&#xff…

你会用Nginx的第三方模块吗?

你好&#xff0c;我是赵兴晨&#xff0c;97年文科程序员。 你使用过Nginx的第三方模块吗&#xff1f;今天咱们来聊聊Nginx的第三方模块。 在深入了解Nginx的高性能与灵活性的过程中&#xff0c;我们不可避免地会接触到第三方模块。 这些模块是对Nginx原生功能的有力扩展&…

618哪些品牌好入手?四款主流数码产品,必看!

随着618购物狂欢节的钟声逐渐敲响&#xff0c;你是否在面对繁多的商品时感到一丝迷茫&#xff0c;想要找到那些既引领潮流又极具实用价值的商品&#xff1f;团团精心为你准备了一份个人实测后的好物推荐清单。这些商品不仅紧跟时尚潮流&#xff0c;更是你生活中的得力助手&…