这是我尝试在 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/main.ts
关于为什么这样做有什么想法吗?
所提供的 Angular Stackblitz 中的圆形拇指拖动器的问题是由对描边-dashoffset 值的错误计算引起的。要解决此问题,您可以使用Stroke-dasharray值来确定圆形路径的长度,并根据拇指绕圆移动的距离更新Stroke-dashoffset