html range 样式,美化 input range 控制条

本文介绍了如何使用HTML5的input range元素创建进度条,并详细讲解了如何在Chrome、Safari、Firefox和IE等浏览器中定制样式,包括设置轨道、滑块和高亮选中区域的颜色及形状,以及实现垂直方向的控制条。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

平常我们使用制作进度条的时候都是想的用 div 去模拟,在 html5 后,我们可以使用 input range 来实现这样的效果。

默认的效果如图:

22d659e935068c0c44d5528028a66492.png

你可以设置它的值得范围(min, max) 以及它的步长(step)。

这里的重点是设置它的样式啦:

取消掉默认的样式

在 chrome 和 safari 下我们可以通过声明:

-webkit-appearance: none;

取消掉默认的样式,这时候效果如图:

b925ef3a13ccf0095ad22913a5cc1010.png

这个时候我们可以设置它的 border 或者 background 等信息。

如果是 chrome 或者 safari 浏览器,以及其他支持设置 设置控制条轨迹的样式的浏览器可以使用伪类 -webkit-slider-runnable-track 来设置控制条轨迹的背景和边框样式;

input[type='range']::-webkit-slider-runnable-track{

background-color: #eee;

}

而 firefox 则需要使用 ::-moz-range-track:

input[type='range']::-moz-range-track{

background-color: #eee;

}

而 IE 则相对而言复杂些:

感谢 @ Thoriq Firdaus 提供的草图 说明 IE 支持的伪类。

8e7e8acccee677099fbb08026331d7d9.png

IE 默认是添加了 tick 进行分割,你需要设置 color 来实现颜色的控制。

input[type="range"]::-ms-track{

color:transparent;

background-color: #eee;

}

设置控制的拖拽按钮样式

firefox 和 chrome ,safari这些浏览器可以设置 thumb 伪类来实现

input[type='range']::-webkit-slider-thumb {

-webkit-appearance: none;

border: 5px solid #fff;

height: 14px;

width: 14px;

border-radius: 8px;

background: #1ba1e2;

cursor: pointer;

}

input[type='range']::-moz-range-thumb {

border: 3px solid #fff;

height: 7px;

width: 7px;

border-radius: 8px;

background: #1ba1e2;

cursor: pointer;

}

而 IE 则需要设置伪类 ::-ms-thumb :

input[type='range']::-ms-thumb {

border: 3px solid #fff;

height: 7px;

width: 7px;

border-radius: 8px;

background: #1ba1e2;

cursor: pointer;

}

效果图如下:

8c517fe9b0f0a210a6c332591e19f245.png

设置垂直的控制条

除了常见的水平的控制条外,我们还可以设置垂直的滚动条,无疑就是使用 transform 来设置旋转的角度:

width: 250px;

height: 5px;

margin: 0;

transform-origin: 75px 75px;

transform: rotate(-90deg);

a2ee574d59509f40b18472c3b6a65016.png

高亮选中区域

我们需要区分已经加载的部分和没有加载的部分。实际上我们可以通过设置渐变来实现:

.gradient::-webkit-slider-runnable-track{

background:linear-gradient(to right, #1ab1e2 0%, #1ab1e2 80%,#eee 80%, #eee);

}

.gradient::-moz-range-track{

background:linear-gradient(to right, #1ab1e2 0%, #1ab1e2 80%,#eee 80%, #eee);

}

.gradient::-ms-fill-lower{

background:linear-gradient(to right, #1ab1e2 0%, #1ab1e2 80%,#eee 80%, #eee);

}

4fd799e7171395694b41108f7ed20ec4.png

除了渐变实际上我们还可以通过一些 JS 和一组 div 来实现控制:

大概思路就是通过设置一个 透明的 input range,然后底部通过一个 div 来实现高亮的百分比显示。

扩展阅读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值