JS实现音量控制拖动


Posted in Javascript onJanuary 15, 2020

本文实例为大家分享了JS实现音量控制拖动的具体代码,供大家参考,具体内容如下

描述:

JS——实现音量控制拖动

    1)、有底条,有拖拽按钮
    2)、设置最小和最大值
    3)、拖动定位后,抛出事件当前的所在值

效果:

JS实现音量控制拖动

实现:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    #all {
      width: 500px;
      height: 86px;
      margin: 100px auto;
      position: relative;
    }
 
    #bar {
      width: 500px;
      height: 20px;
      border-radius: 10px;
      background: #9acfea;
      position: absolute;
      top: 0;
      bottom: 0;
      left: 0;
      right: 0;
      margin: auto;
      cursor: pointer;
    }
 
    #box {
      width: 30px;
      height: 30px;
      background: #ec971f;
      position: absolute;
      bottom: 0;
      top: 0;
      margin: auto 0;
      border-radius: 50%;
      cursor: pointer;
      transition: left 0.1s linear 0s;
    }
  </style>
</head>
<body>
  <div id="all">
    <p>当前位置0%</p>
    <div id="bar">
      <div id="box"></div>
    </div>
  </div>
<script>
 
  var all=document.getElementById("all");//容器
  var p=document.querySelector("p");//进度百分比
  var bar=document.getElementById("bar");//进度显示条
  var box=document.getElementById("box");//进度按钮
 
  var boxL,newL,moveL,mouseX,left;
  var cha = bar.offsetWidth - box.offsetWidth;
  var index=0;//标记状态
 
  var evt=new Event("change");//本身的事件
  init();
  function init() {
    box.addEventListener("mousedown",mouseDownclickHandler);
    document.addEventListener("mousemove",mouseMoveclickHandler)
    document.addEventListener("mouseup",mouseUpclickHandler);
    document.addEventListener("change",changeHandler);
    bar.addEventListener("click",clickHandler);
  }
 
  function mouseDownclickHandler(e) {
    index=1;
    boxL=box.offsetLeft;
    mouseX=e.clientX;//鼠标按下拖动的位置
  }
 
  function mouseMoveclickHandler(e) {
    if(index===1){
      moveL=e.clientX-mouseX;//鼠标移动
      newL=boxL+moveL;//left值
 
      //判断最小值与最大值
      if(newL<0){
        newL = 0;
      }
      if(newL>=cha){
        newL=cha;
      }
      // 改变left值
      box.style.left = newL + 'px';
      // 计算比例
      var bili = newL / cha * 100;
      p.textContent = '当前位置' + Math.ceil(bili) + '%';
      evt.elem=this;//当前指向 对象
      document.dispatchEvent(evt);//朝谁发送 抛发
    }
  }
 
  function mouseUpclickHandler(e) {
    index=0;
    evt.elem=this;//当前指向 对象
    document.dispatchEvent(evt);//朝谁发送 抛发
  }
 
  function clickHandler(e) {
    left = e.clientX-all.offsetLeft-box.offsetWidth/2;
    if(left<0){
      left=0;
    }
    if(left>=cha){
      left=cha;
    }
    box.style.left=left+'px';
    bili=left/cha*100;
    p.innerHTML='当前位置'+ Math.ceil(bili)+'%';
    evt.elem=this;//当前指向 对象
    document.dispatchEvent(evt);//朝谁发送 抛发
  }
 
  function changeHandler(e) {
    console.log(e);
  }
</script>
</body>
</html>

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

Javascript 相关文章推荐
json跟xml的对比分析
Jun 10 Javascript
javascript基于jQuery的表格悬停变色/恢复,表格点击变色/恢复,点击行选Checkbox
Aug 05 Javascript
js实现连续英文字符自动换行兼容ie6 ie7和firefox
Sep 06 Javascript
javascript模拟php函数in_array
Apr 27 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
Jun 03 Javascript
JS简单设置下拉选择框默认值的方法
Aug 20 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
Apr 23 jQuery
vue、react等单页面项目部署到服务器的方法及vue和react的区别
Sep 29 Javascript
详解Node.js 中使用 ECDSA 签名遇到的坑
Nov 26 Javascript
vue.js指令v-for使用以及下标索引的获取
Jan 31 Javascript
微信小程序拍照和摄像功能实现方法示例
Feb 01 Javascript
微信小程序textarea层级过高的解决方法
Mar 04 Javascript
基于vue.js实现购物车
Jan 15 #Javascript
原生js+css调节音量滑块
Jan 15 #Javascript
Vue 图片压缩并上传至服务器功能
Jan 15 #Javascript
JS函数进阶之继承用法实例分析
Jan 15 #Javascript
JS函数进阶之prototy用法实例分析
Jan 15 #Javascript
JS函数基本定义与用法示例
Jan 15 #Javascript
JS几个常用的函数和对象定义与用法示例
Jan 15 #Javascript
You might like
php遍历树的常用方法汇总
2015/06/18 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
2019/09/26 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
2020/04/06 PHP
jQuery对象与DOM对象之间的转换方法
2010/04/15 Javascript
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
2014/02/07 Javascript
防止按钮在短时间内被多次点击的方法
2014/03/10 Javascript
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
2014/11/20 NodeJs
jQuery中val()方法用法实例
2014/12/25 Javascript
JavaScript使用cookie实现记住账号密码功能
2015/04/27 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
2015/05/04 Javascript
JavaScript中constructor()方法的使用简介
2015/06/05 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
JS写XSS cookie stealer来窃取密码的步骤详解
2017/11/20 Javascript
vue-cli2.9.3 详细教程
2018/04/23 Javascript
vue.js响应式原理解析与实现
2020/06/22 Javascript
js中实例与对象的区别讲解
2019/01/21 Javascript
vue插槽slot的简单理解与用法实例分析
2020/03/14 Javascript
详解使用mocha对webpack打包的项目进行&quot;冒烟测试&quot;的大致流程
2020/04/27 Javascript
vue-router 2.0 跳转之router.push()用法说明
2020/08/12 Javascript
js实现弹幕飞机效果
2020/08/27 Javascript
python批量导出导入MySQL用户的方法
2013/11/15 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
2017/07/24 Python
Python实现简易版的Web服务器(推荐)
2018/01/29 Python
使用CodeMirror实现Python3在线编辑器的示例代码
2019/01/14 Python
Python爬虫与反爬虫大战
2020/07/30 Python
python 通过exifread读取照片信息
2020/12/24 Python
纯净、自信、100%的羊绒服装:360Cashmere
2021/02/20 全球购物
附答案的Java面试题
2012/11/19 面试题
租赁意向书范本
2014/04/01 职场文书
俞敏洪北大演讲稿
2014/05/22 职场文书
交通事故委托书范本(2篇)
2014/09/21 职场文书
说好普通话圆梦你我他演讲稿
2014/09/21 职场文书
导游词之潮音寺
2019/09/26 职场文书
基于Python实现将列表数据生成折线图
2022/03/23 Python