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 相关文章推荐
js控制框架刷新
Aug 01 Javascript
纯js写的分页表格数据为json串
Feb 18 Javascript
jQuery中prop()方法用法实例
Jan 05 Javascript
JS实现向表格行添加新单元格的方法
Mar 30 Javascript
关于Javascript回调函数的一个妙用
Aug 29 Javascript
js实现文字选中分享功能
Jan 25 Javascript
jQuery内容筛选选择器实例代码
Feb 06 Javascript
Angular 4依赖注入学习教程之Injectable装饰器(六)
Jun 04 Javascript
Vim快速合并行及vim 将文件所有行合并到一行
Nov 27 Javascript
Express下采用bcryptjs进行密码加密的方法
Feb 07 Javascript
手把手教你实现 Promise的使用方法
Sep 02 Javascript
JS操作JSON常用方法(10w阅读)
Dec 06 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使用memcache存储session的详解
2013/06/25 PHP
深入file_get_contents与curl函数的详解
2013/06/25 PHP
PHP中header函数的用法及其注意事项详解
2016/06/13 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
2017/11/03 PHP
PHP单例模式模拟Java Bean实现方法示例
2018/12/07 PHP
小型js框架veryide.librar源代码
2009/03/05 Javascript
js 学习笔记(三)
2009/12/29 Javascript
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
JS实现图片翻书效果示例代码
2013/09/09 Javascript
JavaScript判断微信浏览器实例代码
2016/06/13 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
2016/09/20 Javascript
js中如何完美的解析数据
2018/03/18 Javascript
解决ie11 SCRIPT5011:不能执行已释放Script的代码问题
2019/05/05 Javascript
简单通过settimeout看javascript的运行机制
2019/05/10 Javascript
100行代码实现vue表单校验功能(小白自编)
2019/11/19 Javascript
vue实现按钮切换图片
2021/01/20 Vue.js
[01:02:18]VGJ.S vs infamous Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
使用python加密自己的密码
2015/08/04 Python
Python面向对象之类的定义与继承用法示例
2019/01/14 Python
python利用线程实现多任务
2020/09/18 Python
聊聊python在linux下与windows下导入模块的区别说明
2021/03/03 Python
找到不普通的东西:Bonanza
2016/10/20 全球购物
Giglio美国站:意大利奢侈品购物网
2018/02/10 全球购物
澳洲CFL商城:CHEMIST FOR LESS(中文)
2021/02/28 全球购物
企业宣传方案
2014/03/04 职场文书
三月雷锋月活动总结
2014/07/03 职场文书
企业趣味活动方案
2014/08/21 职场文书
暑假社会实践心得体会
2014/09/02 职场文书
2014年学校领导班子对照检查材料
2014/09/19 职场文书
篮球友谊赛通讯稿
2014/10/10 职场文书
《夜莺的歌声》教学反思
2016/02/22 职场文书
《家》读后感:万惜拯救,冷暖自知
2019/09/25 职场文书
Memcached介绍及php-memcache扩展安装
2021/04/01 PHP
vue使用v-model进行跨组件绑定的基本实现方法
2021/04/28 Vue.js
Oracle查看表空间使用率以及爆满解决方案详解
2022/07/23 Oracle