JavaScript 选择自定义游标 (SVG)
javascript selecting a custom cursor (svg)
我在悬停时动态将光标更改为本地 svg
$(element).on('mouseover', function () {
$(this).css('cursor', 'url(svgs/pointer.svg) 9 30 auto');
};
这工作正常,但我想选择该 svg 来操作其填充颜色。
有没有办法做到这一点,这样我就不必用不同的填充制作一堆不同的 svg?
谢谢
您可以使用内联 SVG。只需使用文本编辑器打开SVG文件即可。复制 XML 并改用它。只需更改填充值并将其重新分配给元素即可。
cursor: url('data:image/svg+xml;utf8,<svg fill="%23FF0000" height="48" viewBox="0 0 24 24" width="48" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h24v24H0z" fill="none"/><path d="M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z"/></svg>') 24 24, auto;
使用此技术时,应转义数据中的特殊字符。有些人更喜欢 Base64 他们的图像,但对于 SVG,您不需要它。在上面的例子中,我只需要用%23
替换填充值中的#
。
button {
cursor: url('data:image/svg+xml;utf8,<svg fill="%23FF0000" height="48" viewBox="0 0 24 24" width="48" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h24v24H0z" fill="none"/><path d="M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z"/></svg>') 24 24, auto;
}
button { padding: 30px; }
<button>Hover<br>Here</button>
> 除了@Dara提供的答案外,我还想补充一点,根据 SVG 的大小,curosor 可能会也可能不会在不同的浏览器中工作
button {
padding: 30px;
}
#btnSmall {
cursor: url('data:image/svg+xml;utf8,<svg fill="%23FF0000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h24v24H0z" fill="none"/><path d="M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z"/></svg>') 24 24, auto;
background: mediumseagreen;
}
#btnLarge {
cursor: url('data:image/svg+xml;utf8,<svg fill="%23FF0000" height="40" viewBox="0 0 24 24" width="40" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h24v24H0z" fill="none"/><path d="M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z"/></svg>') 24 24, auto;
background: orange;
}
#flex {
display: flex;
gap: 20px;
text-align: center
}
#flex>div {
padding: 5px;
border: 1px solid darkgray;
border-radius: 5px;
}
<div id="flex">
<div>
<p>Small SVG icons work</p>
<button id="btnSmall">Hover<br>Here</button>
</div>
<div>
<p>Large SVG icons don't work in chrome</p>
<button id="btnLarge">Hover<br>Here</button>
</div>
</div>
引用:
- https://developer.mozilla.org/en-US/docs/Web/CSS/cursor#icon_size_limits
- https://stackoverflow.com/a/46707611/6908282
- https://stackoverflow.com/a/66428386/6908282
- https://stackoverflow.com/a/45966695/6908282
- https://stackoverflow.com/a/18551357/6908282
相关文章:
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何使用javascript从主svg对象动态创建svg视图框
- 如何更改<svg>标记为<img>用js标记
- 锚点元素不't使用svg时,请打开EDGE上的href
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- 使用onclick绘制SVG路径
- SVG/JavaScript:尝试选择和更改多边形点
- 顺时针旋转Svg元件
- 禁用SVG拖动
- 在select元素中显示highchart dashstyle(svg)
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- 缩放Raphael/SVG容器以适应所有内容
- JavaScript-动态SVG-onload属性-未触发事件
- 设置动画时,SVG/Raphael大圆圈会变形
- CSS中的游标属性似乎不适用于USB On The Go
- 使用SVG和JavaScript创建波浪动画
- 如何合并不同集合的游标并按日期排序
- Canvas+svg路径动画,在路径中的特定点暂停一段时间,然后继续
- D3.js生成有效的SVG,但不显示任何内容
- JavaScript 选择自定义游标 (SVG)