gpt4 book ai didi

javascript - 动态更改 SVG 光标

转载 作者:行者123 更新时间:2023-11-29 20:48:21 25 4
gpt4 key购买 nike

我已经创建了 SVG 光标,我想在鼠标滚动时动态更改光标半径,放大增加半径,缩小减少半径。

CSS SVG 光标,这有效:

.brushCursor {
cursor: url('data:image/svg+xml;utf8,<svg id="svg" xmlns="http://www.w3.org/2000/svg" version="1.1" width="32" height="32"><circle cx="10" cy="10" r="5" stroke-width="2" style="stroke: black; fill: red;"/></svg>') 10 10, pointer;
}

但我想动态更改 SVG 的半径。半径应该在 1 到 10 的范围内。到目前为止我做了这个但是光标没有更新:

const brush = document.querySelector('.brush');
const radius = 5;

brush.style.cursor = `url('data:image/svg+xml;utf8,<svg id="svg" xmlns="http://www.w3.org/2000/svg" version="1.1" width="32" height="32"><circle cx="10" cy="10" r=${radius} stroke-width="2" style="stroke: black; fill: red;"/></svg>')`;

最佳答案

我正在创建一个新的 <style>元素 s我正在为此添加规则。

input type='range'用于改变半径。

let r = 3;
let s = document.createElement("style");
document.head.appendChild(s);
changeCursor(r)

test.addEventListener("input", ()=>{
r = test.value;
changeCursor(r)
})

function changeCursor(r){
let rule = `cursor: url('data:image/svg+xml;utf8,<svg id="svg" xmlns="http://www.w3.org/2000/svg" version="1.1" width="32" height="32"><circle cx="10" cy="10" r="${r}" stroke-width="2" style="stroke: black; fill: red;"/></svg>') 10 10, pointer;`

s.textContent = `.brushCursor { ${rule} }`;

}
.brushCursor {
height:100vh;
/*cursor: url('data:image/svg+xml;utf8,<svg id="svg" xmlns="http://www.w3.org/2000/svg" version="1.1" width="32" height="32"><circle cx="10" cy="10" r="3" stroke-width="2" style="stroke: black; fill: red;"/></svg>') 10 10, pointer;*/
}
#test{position:absolute; top:1em;}
<div class="brushCursor"></div>
<input id="test" type="range" min="2" max="7" value="3" />

为了在滚动条上更改它,我需要了解更多。我正在使用的输入有一个 max = 7。也许 8 会做;然而,更大的半径会给你一个可爱的圆。您想如何在滚动上扩大您的圈子。页面也有不同的高度。是“滚动”还是“滚动”您计划使用的事件?

关于javascript - 动态更改 SVG 光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53285114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com