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 相关文章推荐
jQuery getJSON()+.ashx 实现分页(改进版)
Mar 28 Javascript
JQuery文本改变触发事件如聚焦事件、失焦事件
Jan 15 Javascript
jquery实现简单实用的打分程序实例
Jul 23 Javascript
Angularjs注入拦截器实现Loading效果
Dec 28 Javascript
javascript html5 canvas实现可拖动省份的中国地图
Mar 11 Javascript
jQuery ajax MD5实现用户注册即时验证功能
Oct 11 Javascript
JS Select下拉框(支持输入模糊查询)
Feb 04 Javascript
js实现图片左右滚动效果
Feb 27 Javascript
完美解决axios在ie下的兼容性问题
Mar 05 Javascript
vue+element+Java实现批量删除功能
Apr 08 Javascript
vue Element左侧无限级菜单实现
Jun 10 Javascript
解决vue项目获取dom元素宽高总是不准确问题
Jul 29 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 程序授权验证开发思路
2009/07/09 PHP
解析php中array_merge与array+array的区别
2013/06/21 PHP
php+ajax实现图片文件上传功能实例
2014/06/17 PHP
laravel创建类似ThinPHP中functions.php的全局函数
2016/11/26 PHP
laravel自定义分页效果
2017/07/23 PHP
accesskey 提交
2006/06/26 Javascript
Jquery 弹出层插件实现代码
2009/10/24 Javascript
jquery插件 cluetip 关键词注释
2010/01/12 Javascript
javascript中的注释使用与注意事项小结
2011/09/20 Javascript
采用call方式实现js继承
2014/05/20 Javascript
JS和JQ的event对象区别分析
2014/11/24 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
2016/09/09 Javascript
js获取元素的偏移量offset简单方法(必看)
2017/07/05 Javascript
vue2.0实现前端星星评分功能组件实例代码
2018/02/12 Javascript
vue微信分享到朋友圈 vue微信发送给好友
2018/11/28 Javascript
Vue.js实现的购物车功能详解
2019/01/27 Javascript
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
2020/11/12 Javascript
在Python中调用Ping命令,批量IP的方法
2019/01/26 Python
Python元组常见操作示例
2019/02/19 Python
python字符串和常用数据结构知识总结
2019/05/21 Python
Python中的pathlib.Path为什么不继承str详解
2019/06/23 Python
利用python numpy+matplotlib绘制股票k线图的方法
2019/06/26 Python
python实现几种归一化方法(Normalization Method)
2019/07/31 Python
Python configparser模块封装及构造配置文件
2020/08/07 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
2020/12/21 Python
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
工作的心得体会
2013/12/31 职场文书
青年创业培训欢迎词
2014/01/10 职场文书
英语自我评价范文
2014/01/24 职场文书
团支部建设方案
2014/05/02 职场文书
新教师岗前培训方案
2014/06/05 职场文书
党员身份证明材料
2015/06/19 职场文书
幼儿园迎新生欢迎词
2015/09/30 职场文书
2015年小学师德师风建设工作总结
2015/10/23 职场文书
八年级历史教学反思
2016/02/19 职场文书
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏