HTML5中无法直接用CSS设置图片光标,需通过cursor: url()实现,但仅支持.cur格式、需设热点与回退关键词,且移动端无效。
HTML5本身

cursor 属性仍沿用CSS2.1规范。所谓“HTML5设置图片光标”,实际是通过CSS的 cursor: url(...) 实现,但浏览器支持和行为有明显限制。
cursor: url() 加载自定义光标图片这是唯一可行方式,但必须注意格式、尺寸和回退机制:
.cur(Windows原生光标格式),部分浏览器支持 .png,但 Safari 完全不支持 PNG 光标32×32 像素;超过 128×128 在 Chrome/Firefox 中会被缩放或拒绝加载cursor: url("hand.cur"), pointer; —— 逗号后必须跟一个标准关键词,否则整个声明失效url() 不支持跨域资源(会静默失败)button {
cursor: url("assets/click.cur"), pointer;
}
光标不显示?大概率是以下某个环节出问题:
Failed to load resource: net::ERR_FAILED → 检查 url() 路径是否 404 或跨域.cur 文件损坏(可用 Windows 自带 pinocchio.exe 验证).cur 中指定热点(hotspot),需用专业工具(如 RealWorld Cursor Editor)设置 X/Y 坐标.cur,且要求文件含完整头部信息(不能用 PNG 重命名成 .cur)iOS / Android 完全忽略 cursor: url(),且触摸设备无“光标”概念。若目标是提升交互反馈,应转向:
:active 伪类缩放/变色元素:button:active { transform: scale(0.96); }
touchstart / mousedown 动态加 class真正需要自定义光标的场景极少,多数时候是设计过度。优先用语义化 HTML + 标准 cursor 关键词(pointer、grab、move)更稳妥。