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 window.opener的用法分析
Apr 07 Javascript
jQuery UI Autocomplete 体验分享
Feb 14 Javascript
解读JavaScript中 For, While与递归的用法
May 07 Javascript
Extjs 点击复选框在表格中增加相关信息行
Jul 12 Javascript
JQuery遍历元素的父辈和祖先的方法
Sep 18 Javascript
Bootstrap中datetimepicker使用小结
Dec 28 Javascript
原生js实现水平方向无缝滚动
Jan 10 Javascript
基于JavaScript实现焦点图轮播效果
Mar 27 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
Apr 04 Javascript
使用async、enterproxy控制并发数量的方法详解
Jan 02 Javascript
JS实现checkbox互斥(单选)功能示例
May 04 Javascript
js中Object.create实例用法详解
Oct 05 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使用CURL获取302跳转后的地址实例
2014/05/04 PHP
Yii2增删改查之查询 where参数详细介绍
2016/08/08 PHP
风吟的小型JavaScirpt库 (FY.JS).
2010/03/09 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
2010/09/15 Javascript
实现51Map地图接口(示例代码)
2013/11/22 Javascript
JS弹出层的显示与隐藏示例代码
2013/12/27 Javascript
js动态改变select选择变更option的index值示例
2014/07/10 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
2014/09/01 Javascript
jQuery中:last选择器用法实例
2014/12/30 Javascript
Javascript函数的参数
2015/07/16 Javascript
浅析JavaScript作用域链、执行上下文与闭包
2016/02/01 Javascript
你所未知的3种Node.js代码优化方式
2016/02/25 Javascript
AngularJs Scope详解及示例代码
2016/09/01 Javascript
AngularJS 教程及实例代码
2017/10/23 Javascript
动手写一个angular版本的Message组件的方法
2017/12/16 Javascript
js回溯法计算最佳旅行线路代码实例
2019/09/11 Javascript
基于VUE实现判断设备是PC还是移动端
2020/07/03 Javascript
Django 表单模型选择框如何使用分组
2019/05/16 Python
用python做游戏的细节详解
2019/06/25 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
2019/07/01 Python
Python类和实例的属性机制原理详解
2020/03/21 Python
台湾网购生鲜第一品牌:i3Fresh爱上新鲜
2017/10/26 全球购物
Eagle Eyes Optics鹰眼光学:高性能太阳镜
2018/12/07 全球购物
Theflamel意大利:女士奢华服装、鞋子和配件
2020/01/11 全球购物
加拿大品牌鞋包连锁店:Little Burgundy
2021/02/28 全球购物
长曲棍球装备:Lacrosse Monkey
2020/12/02 全球购物
linux面试题参考答案(10)
2016/10/26 面试题
LINUX下线程,GDI类的解释
2016/12/14 面试题
女大学生自我鉴定
2013/12/09 职场文书
职工代表大会主持词
2014/04/01 职场文书
学校三节实施方案
2014/06/09 职场文书
农村文化活动总结
2014/08/28 职场文书
争先创优公开承诺书
2014/08/30 职场文书
台风停课通知
2015/04/24 职场文书
党员反邪教心得体会
2016/01/15 职场文书
Vue实现跑马灯样式文字横向滚动
2021/11/23 Vue.js