我的目标是设计一个弧形滑块,看起来像这样
我的模板结构如下
<svg width="500" height="300">
<path id="track" stroke="lightgrey" fill="transparent" stroke-width="20" d="
M 50 50
A 90 90 0 0 0 300 50
"/>
<path id="trackFill" fill="cyan" stroke-width="20" d="
M 50 50
A 90 90 0 0 0 [some dynamic value?] [some dynamic value?]
"/>
<circle id="knob" fill="lightblue" cx="[dynamic, initial - 50]" cy="[dynamic, initial - 50]" r="25"/>
</svg>
knob
-用户应该拖动以更改值的控件track
-幻灯片的完整弧trackFill
-旋钮之前的滑块路径部分
当旋钮沿着滑块曲线拖动时,是否可以让trackFill
覆盖旋钮之前的滑块部分?如果可以,哪些API或CSS规则可以帮助我实现这样的结果?
3条答案
按热度按时间j8ag8udp1#
你在找这样的东西吗?
为了清晰起见,我保持了这段代码的简单性,但代价是一些限制。
它假设每个页面只有一个滑块。如果你需要更多的滑块,你将不得不保持特定于滑块的值(如sliderValue和isDragging)分开。你可以使用数据属性。你还需要从通过
id
属性访问SVG元素切换到另一种方式(如class
属性),因为id属性在页面上必须是唯一的。juud5qan2#
下面是一个简单的例子:
4nkexdtk3#
要标记进度,可以使用带有百分比的
stroke-dasharray
;例如这将显示40%的弧,隐藏60%的弧。
如果你需要使用两种颜色,例如整个弧线是灰色的,进度是黑色的,你需要使用两个相互重叠的弧线;底部的代码是您已经拥有的代码,顶部的代码有一个黑色笔划,并使用
stroke-dasharray
,如图所示。