HTML 4.01 与 HTML5之间的差异

以下 input 的 type属性值是 HTML5 中新增的:

  1. colordatedatetimedatetime-localmonthweektimeemailnumberrangesearchtel url

input的type属性

设置input的type="range"即可得到滑动条控件,如下:

  1. <input id="range" type="range" value="5" onchange="changeV()">
  1. const range = document.getElementById('range');
  2. function changeV() {
  3. console.log(range.value);
  4. }

滑动条对应属性

  • max - 规定允许的最大值。
  • min - 规定允许的最小值。
  • step - 规定合法数字间隔。
  • value - 规定默认值。

下面我们来使用一下上面的各个属性(示例:通过滑动条控制元素大小):

  1. <input type="range" id="range" value="20" min="0" max="200" step="1" onchange="changeV()">
  2. <div class="box"></div>
  3. <script>
  4. const range = document.getElementById('range');
  5. function changeV() {
  6. const boxL = parseInt(range.value);
  7. console.log(boxL);
  8. const box = document.getElementsByClassName('box')[0];
  9. box.style.width = boxL + 'px';
  10. box.style.height = boxL + 'px';
  11. }
  12. </script>

示例中:

  • min - 0
  • max - 200
  • step - 1
  • value - 20

对应初始样式如下:



滑动滑动条后的gif图如下:

如何让滑动条控件更加好看

先看两个不同效果示例图:



上面两个红色框中的滑动条明显比默认样式好看很多,那么它们是如何实现的呢,接下来我们讲实现过程:

两个不同样式滑动条的实现过程

这里把对应滑动条的相关代码贴出来:

  1. <p>周期</p>
  2. <input type="range" id="dur" value="0.50" min="0" max="1.00" step="0.01" onchange="changeV()">
  3. <p>速度</p>
  4. <input type="range" id="speed" value="0" min="0" max="5" step="0.01" onchange="changeV()">
  1. /* 这里不考虑浏览器的兼容性 */
  2. #control input[type="range"] {
  3. width: 100%;
  4. -webkit-appearance: none;
  5. height: 8px;
  6. border-radius: 4px;
  7. background: -webkit-linear-gradient(#ffa200, #ffa200) no-repeat white;
  8. background-size: 50% 100%; /* 因为周期默认value=0.50正好占50% */
  9. }
  10. /* -webkit-slider-thumb仅对谷歌浏览器有效 */
  11. #control input[type="range"]::-webkit-slider-thumb {
  12. -webkit-appearance: none;
  13. background-color: #aaa;
  14. width: 8px;
  15. height: 20px;
  16. border-radius: 4px;
  17. cursor: pointer;
  18. }
  19. #control input[type="range"]::-webkit-slider-thumb:hover {
  20. background: #666;
  21. }
  22. /* 左侧渐变色的写法,默认滑块在最左侧所以下面white为0% */
  23. #control #speed {
  24. background: linear-gradient(to right, #ffa200, white 0%, white);
  25. background-size: 100% 100%;
  26. }
  1. const duration = document.getElementById('dur');
  2. const speed = document.getElementById('speed');
  3. function changeV() {
  4. durVal = parseFloat(duration.value);
  5. spdVal = parseFloat(speed.value);
  6. const durationPercent = parseFloat(durVal, 2) * 100
  7. const speedPercent = parseFloat((spdVal / 5), 2) * 100
  8. duration.style.backgroundSize = `${durationPercent}%, 100%`
  9. speed.style.background = `linear-gradient(to right, #ffa200, white ${speedPercent}%, white`
  10. };

相信大家结合代码可以清晰的掌握两种滑动条的实现方法,这里就不过多解释了

gif效果局部展示:

文章中用到的示例演示地址

演示地址

写在最后

前端是一个庞大的体系,很多知识在没用到的时候也许我们根本不知道它多有用。就比如文中的滑动条,工作中很难碰到,一旦要用的时候我们还得去琢磨一番,这里通过自己的讲解相信可以让需要的人更好的使用滑动条功能,如果觉得本文对你有所帮助不妨点个赞再走吧,谢谢啦!

HTML5新特性——自定义滑动条(input[type="range"])的更多相关文章

  1. 【转】自定义(滑动条)input[type="range"]样式

    1.如何使用滑动条? 用法很简单,如下所示: <input type="range" value="0"> 各浏览器原始样式如下: Chrome:  ...

  2. H5滑条(input type=range)

    input[type=range] { -webkit-appearance: none; width: 230px; border-radius: 10px; /*这个属性设置使填充进度条时的图形为 ...

  3. ajax利用html5新特性带进度条上传文件

    http://blog.csdn.net/pkgray/article/details/27591283 http://www.matlus.com/html5-file-upload-with-pr ...

  4. input type=range 进度条的自定义样式

    /* 自定义进度条样式 */ .v_my input[type=range] { -webkit-appearance: none;/*清除系统默认样式*/ width: .8rem; backgro ...

  5. html5新特性与用法大全了解一下

    有好多小伙伴私聊我问我html5新特性 和用法,下面我给大家具体介绍一下html5都新加了哪些新特性,下面我给大家总结一下. 1)新的语义标签 footer header 等等2)增强型表单 表单2. ...

  6. 第二季第八天 HTML5新特性

    在函数内部window.a =  a  在全局中就可以拿到这个变量 变量命名.作为函数的参数的时候要详细.调用的时候可以简单点 做全局变量的两个方案 1.绑在标签上data 2.闭包 视频一般都是二进 ...

  7. html5新特性

    这一篇博文不会告诉你怎么去使用html5的新特性,只会给你总结一下新特性------对于好学的人可以把这篇文章当做一个目录 对于初接触的人来说是一个导向 对于已经接触过的人来说是一个检测你掌握程度的检 ...

  8. 转: HTML5新特性之Mutation Observer

    转: HTML5新特性之Mutation Observer Mutation Observer是什么 Mutation Observer(变动观察器)是监视DOM变动的接口.当DOM对象树发生任何变动 ...

  9. HTML5新特性之CSS+HTML5实例

    1.新的DOCTYPE和字符集 HTML5的一项准则就是化繁为简,Web页面的DOCTYPE被极大的简化. <!DOCTYPE html> 同时字符集声明也被简化了: <meta c ...

随机推荐

  1. java 初学 :求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字。几个 数相加由键盘控制。

    import java.util.Scanner; public static void main(String[] args) {       Scanner input=new Scanner(S ...

  2. Python的生成器和生成器表达式

    一,生成器和生成器表达式 什么是生成器,生成器实质就是迭代器,在python中有三种方式来获取生成器: 1. 通过生成器函数 和普通函数没有区别,里面有yield的函数就是生成器函数,生成器函数在执行 ...

  3. 记录一次Mac VSCode运行Grpc模板项目

    1.使用dotnet new grpc -o GrpcGreeter && cd GrpcGreeter && code . ,进入项目文件中,使用code .使用vs ...

  4. css盒子布局,浮动布局以及显影与简单的动画

    08.05自我总结 一.盒子布局 1.盒子布局的组成 margin border padding content 2.margin margin是外边距,控制盒子的显示位置相对于他的上一级 left. ...

  5. Scrapy中response属性以及内容提取

    一.属性 url :HTTP响应的url地址,str类型 status:HTTP响应的状态码, int类型 headers :HTTP响应的头部, 类字典类型, 可以调用get或者getlist方法对 ...

  6. SpringBoot启动项目时提示:Error:(3, 32) java: 程序包org.springframework.boot不存在

    场景 在IDEA中新建SpringBoot项目,后启动项目时提示: Error:(3, 32) java: 程序包org.springframework.boot不存在 实现 将pom.xml中par ...

  7. Cesium专栏-空间分析之坡度分析(附源码下载)

    Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...

  8. Cesium专栏-克里金插值(全国温度为例,附源码下载)

    Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...

  9. 从系统学Android--2.5Activity启动模式

    本系列文章目录:更多精品文章分类 本系列持续更新中.... Activity 的启动模式一共有四种,分别是:standard.singleTop.singleTask.singleInstance . ...

  10. Hive静态分区和动态分区,对应Mysql中的元数据信息

    静态分区: 手动指定分区加载数据,就是常说的静态分区的使用.但是在日常工作中用的比较多的是动态分区. 创建: hive> create table order_mulit_partition( ...