我正在尝试制作一个自定义滑块,我已经找到了一个示例代码。我根据需要对其进行了一些定制,但无法适当地设置滑块范围元素的宽度。
em
使用 SCSS 以单位定义大小和转换计算。我可以$track-w
在 SCSS 中设置滑块的宽度,对于我的屏幕尺寸来说足够宽,但对于其他屏幕来说它会有所不同。下面是代码。
$track-w: 55em; //this width is not responsive
$track-h: .25em;
$thumb-d: 1.5em;
$dist: $track-w - $thumb-d;
@mixin track() {
box-sizing: border-box;
border: none;
width: $track-w;
height: $track-h;
}
.wrap {
display: flex;
align-items: center;
position: relative;
width: $track-w;
height: 3.5*$thumb-d;
font: 1em/1 arial, sans-serif
}
[type='range'] {
&, &::-webkit-slider-thumb {
-webkit-appearance: none
}
flex: 1;
margin: 0;
padding: 0;
min-height: $thumb-d;
background: transparent;
font: inherit;
&::-webkit-slider-runnable-track {
@include track()
}
&::-moz-range-track { @include track }
&::-ms-track { @include track }
&::-webkit-slider-thumb {
margin-top: .3*($track-h - $thumb-d);
}
&::-ms-thumb {
margin-top: 0;
}
&::-ms-tooltip { display: none }
~ output {
display: none;
.js & {
display: block;
position: absolute;
left: .5*$thumb-d; top: 0;
padding: .25em .5em;
border-radius: 3px;
transform: translate(calc((var(--val) - var(--min))/(var(--max) - var(--min))*#{$dist} - 50%));
background: #4285f4;
color: #eee;
}
}
}
这是 codepen 链接 - https://codepen.io/thebabydino/pen/WdeYMd用于示例输出和更多详细信息。如何使滑块响应?如果我可以提供更多详细信息,请告诉我。