【发布时间】:2021-11-04 06:30:55
【问题描述】:
我有一个标准的 html5 范围输入(又名滑块),当滑块处于活动状态时,我使滑块拇指(手柄)变小。这在我需要支持的所有网络浏览器中都可以正常工作,iOS 上的 Safari 除外(仅在 iPhone 上尝试过)。
一旦我更改了 :active 类中的宽度和高度 css 属性,就很难抓住滑块句柄来更改值。它有时有效,但并非总是如此。滑块处于活动状态,因此大小发生变化,但滑块“卡住”。当我尝试滑动它时,它不跟随我的手指。
这是一个带有两个滑块的 CodePen,顶部的滑块完美无缺,底部的滑块有时难以在 Safari 上“抓取”https://codepen.io/tobbe_lundberg/pen/wvervQx
这是它的代码:
input[type="range"] {
-webkit-appearance: none;
width: 100%;
height: 32px;
margin-top: 40px;
}
input[type="range"]::-webkit-slider-runnable-track {
background: pink;
height: 4px;
}
input[type="range"]::-webkit-slider-thumb {
-webkit-appearance: none;
height: 56px;
width: 56px;
background: pink;
margin-top: -24px;
}
input[type="range"]:active::-webkit-slider-thumb {
height: 56px;
width: 56px;
margin-top: -24px;
}
input.resize[type="range"]:active::-webkit-slider-thumb {
height: 24px;
width: 24px;
margin-top: -10px;
}
<input type="range" min="0" max="100" step="1"/>
<input class="resize" type="range" min="0" max="100" step="1"/>
如何仅使用 CSS 使调整大小效果在 Safari 上也起作用?
【问题讨论】:
-
仅使用 CSS 是不可能的。为此,您需要在 JavaScript 或 jQuery 中添加
mousedown或touchstart。 -
@Hacker 为什么这么说?如果我不在 :active 中调整句柄大小,它工作正常。需要JS的resize是怎么回事?