Dies ist eine statische Demonstration des kreisförmigen Daumenziehers, den ich in Angular erstellen möchte. Es funktioniert wie erwartet mit rinkle-dashoffset="-260"
设置将拇指/拖动器定位在靠近拇指后面的圆形路径的末端,可以看出 -260
negativem Offset.
<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>
Wenn ich in diesem Angular Stackblitz denselben Code verwende, funktioniert rinkle-dashoffset="-260"
anders.
Dies ist eine Live-Dragger-Demo. Wenn Sie versuchen, Ihren Daumen zu ziehen, wird das Ziehen „beschleunigt“ und Ihr Daumen wird immer weiter weggedrückt. Beachten Sie, dass der der Offset-Berechnung entsprechende Wert und der durch Klicken oder Ziehen dargestellte Grad aufgezeichnet werden.
https://stackblitz.com/edit/angular-ptzvsm?file=src%2Fmain.ts
Irgendwelche Ideen, warum das so gemacht wird?
所提供的 Angular Stackblitz 中的圆形拇指拖动器的问题是由对描边-dashoffset 值的错误计算引起的。要解决此问题,您可以使用Stroke-dasharray值来确定圆形路径的长度,并根据拇指绕圆移动的距离更新Stroke-dashoffset