欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaScript实现美化滑块效果

程序员文章站 2023-08-16 09:18:01
本文实例为大家分享了js实现美化滑块效果的具体代码,供大家参考,具体内容如下 美化滑块(拖动) 隐藏原有的range 同步value

本文实例为大家分享了js实现美化滑块效果的具体代码,供大家参考,具体内容如下

美化滑块(拖动)

隐藏原有的range 同步value

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>滑块</title>
  <style>
    .len{
      width: 300px;
      height: 6px;
      background: #6c6;
      border-radius: 3px;
      margin-top:15px;
      position: relative;
    }
    .len b{
      display: inline-block;
      height: 6px;
      border-radius: 3px;
      background: #900;
      position: absolute;
    }
    .len span{
      position: absolute;
      width: 10px;
      height: 10px; 
      border-radius: 5px;
      background: #090;
      z-index: 1;
      top: -2px;
      left: 0;
    }
    .len input[type=range]{
      display: none;
    }
  </style>
</head>
<body>
  <input type="range" min="0" max="500" value="0">
  <input type="range" min="0" value="0">
  <script>
    var ranges=document.queryselectorall("input[type=range]");
    ranges.foreach(function(range){
      var div=document.createelement("div");
      div.classname="len";
      range.parentnode.insertbefore(div,range);
      var span=document.createelement("span");
      var b=document.createelement("b");
      div.appendchild(span);
      div.appendchild(b);
      div.appendchild(range);
      span.onmousedown=function(e){
        var x=e.clientx-this.offsetleft;
        var maxl=div.offsetwidth-span.offsetwidth;
        var maxv=range.max || 100;
        document.onmousemove=function(e){
          var les=e.clientx-x;
          if(les < 0)les=0;
          if(les > maxl)les=maxl;
          span.style.left=les+"px";
          b.style.width=les+span.offsetwidth/2+"px";
          range.value=les/maxl*maxv;   //同步
          e.preventdefault();       //阻止默认事件
          console.log(range.value)
        }
        document.onmouseup=function(){
          document.onmousemove=null;
          document.onmouseup=null;
        }
      }
    })
  </script>
</body>
</html>

插件都可以无限复制,删除即是原有效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。