这是我尝试在 Angular 中创建的圆形拇指拖动器的静态演示。它使用 rinkle-dashoffset="-260" 设置将拇指/拖动器定位在靠近拇指后面的圆形路径的末端,可以看出 -260 负偏移按预期工作。
<body style="width: 200px; height: 200px;">
<svg
(mousedown)="onMouseDown($event)"
#svgRoot
id="svgclick"
version="1.1"
viewBox="0 0 79.375 79.375"
xmlns="http://www.w3.org/2000/svg"
>
<path
transform="rotate(90)"
d="m64.961-15.355a34.984 34.412 0 0 1-49.474 1e-6 34.984 34.412 0 0 1-1e-6 -48.666 34.984 34.412 0 0 1 49.474-2e-6"
fill="none"
stroke="#000"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="10.583"
/>
<path
#thumb
transform="rotate(90)"
d="m64.961-15.355a34.984 34.412 0 0 1-49.474 1e-6 34.984 34.412 0 0 1-1e-6 -48.666 34.984 34.412 0 0 1 49.474-2e-6"
fill="none"
stroke-linecap="round"
stroke-linejoin="round"
stroke="#F66"
stroke-width="18"
pathlength="270"
stroke-dasharray="0 270"
stroke-dashoffset="-260"
id="thumb"
/>
</svg>
</body>
当我在此 Angular Stackblitz 中使用相同的代码时,rinkle-dashoffset="-260" 的工作方式不同。
这是一个实时拖动器演示。如果您尝试拖动拇指,拖动会“加速”并将拇指推得越来越远。请注意,会记录与偏移计算相对应的值以及单击或拖动所代表的度数。
https://stackblitz.com/edit/angular-ptzvsm?file=src%2Fmain.ts
关于为什么这样做有什么想法吗?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
所提供的 Angular Stackblitz 中的圆形拇指拖动器的问题是由对描边-dashoffset 值的错误计算引起的。要解决此问题,您可以使用Stroke-dasharray值来确定圆形路径的长度,并根据拇指绕圆移动的距离更新Stroke-dashoffset