好玩的谷歌浏览器插件-自定义谷歌浏览器光标皮肤插件-Chrome 的自定义光标

周末没有啥事 看到了一个非常有意思的插件 就是 在使用谷歌浏览器的时候,可以把鼠标的默认样式换一个皮肤。就像下面的这种样子。
在这里插入图片描述
实际谷歌浏览器插件开发对于有前端编程基础的小伙伴 还是比较容易的,实际也是写 html css js 。
所以这个插件使用的技术:
html css 和 js 实现。
先看一下 最终实现的样子
在这里插入图片描述
大概插件就是这样的,使用方式 在下面选择我们喜欢的图标,然后选中后,点击应用选择 。这个时候我们再使用浏览器的时候 发现我们的鼠标光标 就变了一个皮肤。

周末闲着没事,就简单的也写了一个类似的插件,正好也是练习一下自己的前端技术。 插件功能大概实现了 光标皮肤切换。写完后 简单的测试了一下 ,可以使用。

分享一下代码结构
在这里插入图片描述

<!-- 作者:json -->
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="自定义光标皮肤,让您的浏览体验更加个性化"><title>自定义光标皮肤</title><style>* {margin: 0;padding: 0;box-sizing: border-box;}:root {--primary-color: #3498db;--primary-dark: #2980b9;--danger-color: #e74c3c;--danger-dark: #c0392b;--text-color: #333;--text-light: #7f8c8d;--text-dark: #2c3e50;--bg-gradient: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);--card-bg: rgba(255, 255, 255, 0.8);--shadow: 0 4px 6px rgba(0, 0, 0, 0.1);--shadow-hover: 0 8px 15px rgba(0, 0, 0, 0.1);--border-radius: 10px;--transition: all 0.3s ease;}body {width: 360px;min-height: 480px;font-family: 'Microsoft YaHei', sans-serif;background: var(--bg-gradient);color: var(--text-color);padding: 20px;overflow-x: hidden;}.container {display: flex;flex-direction: column;height: 100%;}header {position: sticky;top: 0;z-index: 100;background: var(--bg-gradient);padding-bottom: 15px;margin-bottom: 20px;box-shadow: var(--shadow);border-radius: var(--border-radius);}.header-content {text-align: center;margin-bottom: 15px;}h1 {font-size: 24px;margin-bottom: 10px;color: var(--text-dark);text-shadow: 1px 1px 2px rgba(0,0,0,0.1);}.subtitle {font-size: 14px;color: var(--text-light);margin-bottom: 15px;}.actions {display: flex;justify-content: center;margin-bottom: 10px;}.status {text-align: center;font-size: 14px;color: #27ae60;height: 20px;margin-top: 5px;transition: var(--transition);}.cursor-grid {display: grid;grid-template-columns: repeat(3, 1fr);gap: 15px;margin-bottom: 20px;padding-top: 5px;}.cursor-item {background-color: var(--card-bg);border-radius: var(--border-radius);padding: 15px;cursor: pointer;transition: var(--transition);display: flex;flex-direction: column;align-items: center;box-shadow: var(--shadow);position: relative;height: 120px; /* 固定高度,确保所有项目大小一致 */justify-content: space-between; /* 确保内容均匀分布 */will-change: transform; /* 优化动画性能 */}.cursor-item:hover {transform: translateY(-5px);box-shadow: var(--shadow-hover);}.cursor-item.active {background-color: rgba(52, 152, 219, 0.2);border: 2px solid var(--primary-color);}.cursor-item.active::after {content: "✓";position: absolute;top: 5px;right: 5px;color: var(--primary-color);font-weight: bold;}.cursor-preview {width: 64px;height: 64px;margin-bottom: 10px;display: flex;align-items: center;justify-content: center;background-color: rgba(255, 255, 255, 0.5);border-radius: 8px;padding: 5px;position: relative;}.cursor-preview img {max-width: 32px; /* 限制最大宽度为32px */max-height: 32px; /* 限制最大高度为32px */width: auto; /* 保持宽高比 */height: auto; /* 保持宽高比 */object-fit: contain; /* 确保图片完全显示 */display: block; /* 消除底部间隙 */image-rendering: pixelated; /* 像素图片更清晰 */image-rendering: -moz-crisp-edges;image-rendering: crisp-edges;}/* 添加放大效果,方便用户查看小图标 */.cursor-preview:hover img {transform: scale(1.5);transition: transform 0.2s ease;}.cursor-name {font-size: 12px;text-align: center;color: var(--text-dark);width: 100%;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;}button {background-color: var(--primary-color);color: white;border: none;padding: 10px 20px;border-radius: 5px;cursor: pointer;font-size: 16px;transition: var(--transition);box-shadow: var(--shadow);}button:hover {background-color: var(--primary-dark);transform: translateY(-2px);box-shadow: var(--shadow-hover);}button:disabled {background-color: #bdc3c7;cursor: not-allowed;transform: none;box-shadow: none;}.reset-btn {background-color: var(--danger-color);margin-left: 10px;}.reset-btn:hover {background-color: var(--danger-dark);}.loading {display: none;text-align: center;margin: 20px 0;}.loading-spinner {border: 4px solid rgba(0, 0, 0, 0.1);border-left-color: var(--primary-color);border-radius: 50%;width: 30px;height: 30px;animation: spin 1s linear infinite;margin: 0 auto;}@keyframes spin {0% { transform: rotate(0deg); }100% { transform: rotate(360deg); }}.empty-state {text-align: center;padding: 40px 20px;color: var(--text-light);}.empty-state p {margin-bottom: 15px;}/* 添加响应式设计 */@media (max-width: 320px) {.cursor-grid {grid-template-columns: repeat(2, 1fr);}}/* 添加暗黑模式支持 */@media (prefers-color-scheme: dark) {:root {--card-bg: rgba(30, 39, 46, 0.8);--text-color: #f5f6fa;--text-light: #dcdde1;--text-dark: #f5f6fa;--bg-gradient: linear-gradient(135deg, #2f3640 0%, #1e272e 100%);--shadow: 0 4px 6px rgba(0, 0, 0, 0.3);--shadow-hover: 0 8px 15px rgba(0, 0, 0, 0.4);}.cursor-preview {background-color: rgba(0, 0, 0, 0.2);}button:disabled {background-color: #4b6584;}}/* 添加无障碍支持 */.sr-only {position: absolute;width: 1px;height: 1px;padding: 0;margin: -1px;overflow: hidden;clip: rect(0, 0, 0, 0);white-space: nowrap;border-width: 0;}/* 键盘导航焦点样式 */.cursor-item:focus-visible {outline: 3px solid var(--primary-color);outline-offset: 2px;}button:focus-visible {outline: 3px solid white;outline-offset: 2px;}</style>
</head>
<body><div class="container"><header><div class="header-content"><h1>自定义光标皮肤</h1><p class="subtitle">选择您喜欢的光标样式,让浏览体验更加个性化</p><p class="subtitle">更多资源:www.wwwoop.com</p></div><div class="actions"><button id="apply-btn" disabled>应用选择</button><button id="reset-btn" class="reset-btn">恢复默认</button></div><div id="status" class="status" aria-live="polite"></div></header><div id="loading" class="loading" aria-hidden="true"><div class="loading-spinner"></div><p class="sr-only">正在加载光标...</p></div><div id="cursor-grid" class="cursor-grid" role="listbox" aria-label="光标选项列表"><!-- 光标选项将通过JavaScript动态加载 --></div><div id="empty-state" class="empty-state" style="display: none;"><p>没有找到光标皮肤</p><p>请确保images文件夹中有光标图片</p></div></div><script src="popup.js"></script>
</body>
</html> 

以上就是 html 代码

插件写完后,也装到了自己的谷歌浏览器上测试了一下,可以正常使用。但是不保证是否还有细节性的bug。如果有小伙伴 对这个插件有兴趣,可以拿去玩一玩。
代码完全开源,因为是自己写的插件,所以没有上架到谷歌应用商店,大家拿到插件后,有开发能力的小伙伴可以自由发挥。直接安装使用也是可以的。
https://wwwoop.com/home/Index/projectInfo?goodsId=56&typeParam=1&subKey=0

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

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

相关文章

3.使用ElementUI搭建侧边栏及顶部栏

1. 安装ElementUI ElementUI是基于 Vue 2.0 的桌面端组件库。使用之前&#xff0c;需要在项目文件夹中安装ElementUI&#xff0c;在终端中输入以下命令&#xff0c;进行安装。 npm i element-ui -S并在main.js中引入ElementUI 2. 使用elmentUI组件进行页面布局 2.1 清空原…

调研:如何实现智能分析助手(Agent)(AutoCoder、FastGPT、AutoGen、DataCopilot)

文章目录 调研&#xff1a;如何实现智能分析助手&#xff08;Agent&#xff09;&#xff08;AutoCoder、FastGPT、AutoGen、DataCopilot&#xff09;一、交互流程二、数据流程三、架构分类四、开源产品4.1 AutoCoder&#xff08;知识库变体&#xff09;4.2 FastGPT&#xff08;…

matlab常见的配图代码实现1

1. 折线图 x linspace(0, 10, 100); y1 sin(x);y2 cos(x); figure; plot(x, y1, -o, LineWidth, 2, MarkerSize, 6, MarkerFaceColor, b); hold on;plot(x, y2, -s, LineWidth, 2, MarkerSize, 6, MarkerFaceColor, r); title(折线图); xlabel(X轴); ylabel(Y轴); legend(s…

【汇编语言】单片机程序执行过程

一、任务需求 指示灯LED4闪烁&#xff0c;亮0.5秒&#xff0c;灭0.5秒&#xff0c;无限循环 二、针对硬件的编程 1、确定原理图2、确定硬件的物理关系 三、设计步骤 1.用自己的语言描述工作流程 1.1指示灯LED4亮1.2延时0.5秒1.3指示灯LED4灭1.4延时0.5秒1.5跳转到1.1步 …

从零开始用react + tailwindcss + express + mongodb实现一个聊天程序(十二) socketio 消息处理

1.后端 在message.controller.js中 在sendMessage方法中 每当我们发送消息 需要socketio把这个消息转发给 接收人 加入转发逻辑 // 把消息发给指定的用户的socket const receiverSocketId getReceiverSocketId(receiverId); if(receiverSocketId) { io.to(receiverSocket…

【大模型】WPS 接入 DeepSeek-R1详解,打造全能AI办公助手

目录 一、前言 二、WPS接入AI工具优势​​​​​​​ 三、WPS接入AI工具两种方式 3.1 手动配置的方式 3.2 Office AI助手 四、WPS手动配置方式接入AI大模型 4.1 安装VBA插件 4.1.1 下载VBA插件并安装 4.2 配置WPS 4.3 WPS集成VB 4.4 AI助手效果测试 4.5 配置模板文…

SmolVLM2 - 将视频理解带到每个设备

本文翻译整理自&#xff1a;SmolVLM2: Bringing Video Understanding to Every Device https://huggingface.co/blog/smolvlm2 文章目录 TL;DR: SmolVLM 现在可以观看 &#x1f4fa; 并拥有更好的视觉理解一、关于 SmolVLM2二、 技术细节1、SmolVLM2 2.2B: 我们新的视觉和视频明…

Cocos Creator Shader入门实战(三):CCEffect参数配置讲解

引擎版本&#xff1a;3.8.5 您好&#xff0c;我是鹤九日&#xff01; 回顾 稍微回顾下前面两篇博客讲解的内容&#xff1a; 一、Cocos渲染效果的实现需要Material材质和Effect资源的互相配合。 二、Effect资源负责Shader片段的编写和属性配置&#xff0c;Material材质负责对E…

计算机毕业设计:公司烤箱配件质量信息追溯系统

超级管理员表创建语句如下&#xff1a; 公司烤箱配件质量信息追溯系统mysql数据库创建语句公司烤箱配件质量信息追溯系统oracle数据库创建语句公司烤箱配件质量信息追溯系统sqlserver数据库创建语句公司烤箱配件质量信息追溯系统springspringMVCmybatis框架对象(javaBean,pojo…

【移动WEB开发】rem适配布局

目录 1. rem基础 2.媒体查询 2.1 语法规范 2.2 媒体查询rem 2.3 引入资源&#xff08;理解&#xff09; 3. less基础 3.1 维护css的弊端 3.2 less介绍 3.3 less变量 3.4 less编译 3.5 less嵌套 3.6 less运算 4. rem适配方案 4.1 rem实际开发 4.2 技术使用 4.3 …

Java后端高频面经——计算机网络

TCP/IP四层模型&#xff1f;输入一个网址后发生了什么&#xff0c;以百度为例&#xff1f;&#xff08;美团&#xff09; &#xff08;1&#xff09;四层模型 应用层&#xff1a;支持 HTTP、SMTP 等最终用户进程传输层&#xff1a;处理主机到主机的通信&#xff08;TCP、UDP&am…

DeepSeek R1-32B医疗大模型的完整微调实战分析(全码版)

DeepSeek R1-32B微调实战指南 ├── 1. 环境准备 │ ├── 1.1 硬件配置 │ │ ├─ 全参数微调:4*A100 80GB │ │ └─ LoRA微调:单卡24GB │ ├── 1.2 软件依赖 │ │ ├─ PyTorch 2.1.2+CUDA │ │ └─ Unsloth/ColossalAI │ └── 1.3 模…

《Python实战进阶》No16: Plotly 交互式图表制作指南

No16: Plotly 交互式图表制作指南 Plotly是一款用来做数据分析和可视化的在线平台&#xff0c;功能真的是非常强大&#xff0c;它主要有以下特点&#xff1a; 图形多样化&#xff1a;在线绘制多种图形&#xff0c;比如柱状图、饼图、直方图、饼图、气泡图、桑基图、股票图、旭…

贪心算法--

1.柠檬水找零 link:860. 柠檬水找零 - 力扣&#xff08;LeetCode&#xff09; code class Solution { public:bool lemonadeChange(vector<int>& bills) {// 贪心算法&#xff0c; 优先花出大面额bill&#xff0c; 尽可能保护小面额billint five 0, ten 0;// 不…

基于策略模式的智能提示语生成器设计与实现——以Tkinter GUI开发为例

基于策略模式的智能提示语生成器设计与实现——以Tkinter GUI开发为例 一、引言&#xff1a;智能化时代的提示工程工具 在人工智能技术广泛应用的时代背景下&#xff0c;如何与AI模型进行有效交互已成为关键技能。本文介绍的"AI任务需求与提示语策略生成器"正是基于…

【MySQL】(4) 表的操作

一、创建表 语法&#xff1a; 示例&#xff1a; 生成的数据目录下的文件&#xff1a; 二、查看表结构 三、修改表 语法&#xff1a; 另一种改表名语法&#xff1a;rename table old_name1 to new_name1, old_name2 to new_name2; 示例&#xff1a; 四、删除表 语法&#xf…

基于STM32物联网水质监测系统的设计与实现/基于STM32的水产养殖云监控系统设计

1. 系统方案介绍 随着水质污染问题的日益严峻&#xff0c;实时监测水质变得尤为重要。水质监测系统能够通过采集水体中的各种数据&#xff0c;及时发现水质问题&#xff0c;保障饮用水安全。本文将介绍一款基于STM32单片机的物联网水质监测系统&#xff0c;该系统采用了ESP826…

装饰器模式--RequestWrapper、请求流request无法被重复读取

目录 前言一、场景二、原因分析三、解决四、更多 前言 曾经遇见这么一段代码&#xff0c;能看出来是把request又重新包装了一下&#xff0c;核心信息都不会改变 后面了解到这叫 装饰器模式&#xff08;Decorator Pattern&#xff09; &#xff1a;也称为包装模式(Wrapper Pat…

IO多路复用实现并发服务器

一.select函数 select 的调用注意事项 在使用 select 函数时&#xff0c;需要注意以下几个关键点&#xff1a; 1. 参数的修改与拷贝 readfds 等参数是结果参数 &#xff1a; select 函数会直接修改传入的 fd_set&#xff08;如 readfds、writefds 和 exceptfds&#xf…

解决火绒启动时,报安全服务异常,无法保障计算机安全

1.找到控制面板-安全和维护-更改用户账户控制设置 重启启动电脑解决。