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 相关文章推荐
javascript 时间比较实现代码
Oct 28 Javascript
JavaScript this调用规则说明
Mar 08 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
Jun 25 Javascript
JavaScript+html5 canvas制作的圆中圆效果实例
Jan 27 Javascript
JavaScript代码性能优化总结(推荐)
May 16 Javascript
极力推荐10个短小实用的JavaScript代码段
Aug 03 Javascript
微信小程序movable view移动图片和双指缩放实例代码
Aug 08 Javascript
使用vue-resource进行数据交互的实例
Sep 02 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
May 08 Javascript
Node4-5静态资源服务器实战以及优化压缩文件实例内容
Aug 29 Javascript
基于layui的下拉列表的数据回显方法
Sep 24 Javascript
详解微信小程序中var、let、const用法与区别
Jan 11 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中使用Oracle数据库(4)
2006/10/09 PHP
PHP与MYSQL中UTF8编码的中文排序实例
2014/10/21 PHP
PHP 快速排序算法详解
2014/11/10 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
2015/03/18 PHP
JavaScript setTimeout和setInterval的使用方法 说明
2010/03/25 Javascript
JavaScript去掉数组中的重复元素
2011/01/13 Javascript
JQueryiframe页面操作父页面中的元素与方法(实例讲解)
2013/11/19 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
2015/07/09 Javascript
动态更新highcharts数据的实现方法
2016/05/28 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
JavaScript实现两个select下拉框选项左移右移
2017/03/09 Javascript
基于jquery实现二级联动效果
2017/03/30 jQuery
详解webpack es6 to es5支持配置
2017/05/04 Javascript
layui表格实现代码
2017/05/20 Javascript
AngularJS 支付倒计时功能实现思路
2017/06/05 Javascript
js动态引入的四种方法
2018/05/05 Javascript
基于Vue自定义指令实现按钮级权限控制思路详解
2018/05/23 Javascript
React注册倒计时功能的实现
2018/09/06 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
手动下载Chrome并解决puppeteer无法使用问题
2018/11/12 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
2020/05/12 Javascript
[03:08]迎霜节狂欢!2018年迎霜节珍藏Ⅰ一览
2018/12/25 DOTA
python实现决策树C4.5算法详解(在ID3基础上改进)
2017/05/31 Python
Python3.5字符串常用操作实例详解
2019/05/01 Python
pycharm + django跨域无提示的解决方法
2020/12/06 Python
利用html5 canvas动态画饼状图的示例代码
2018/04/02 HTML / CSS
Bose美国官网:购买Bose耳机和音箱
2019/03/10 全球购物
精彩的大学生自我评价
2013/11/17 职场文书
九年级语文教学反思
2014/02/04 职场文书
小学生环保标语
2014/06/13 职场文书
医学生求职信
2014/07/01 职场文书
群众路线教育实践活动对照检查材料
2014/09/22 职场文书
安全生产标语大全
2014/10/06 职场文书
厉害!这是Redis可视化工具最全的横向评测
2021/07/15 Redis
MySQL中连接查询和子查询的问题
2021/09/04 MySQL
windows server2016安装oracle 11g的图文教程
2022/07/15 Servers