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防止表单重复提交的两种方法
Sep 30 Javascript
javascript中typeof的使用示例
Dec 19 Javascript
javascript实现获取cookie过期时间的变通方法
Aug 14 Javascript
node.js中的fs.truncateSync方法使用说明
Dec 15 Javascript
js中不同的height, top的区别对比
Sep 24 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
Aug 17 Javascript
jQuery实现的瀑布流加载效果示例
Sep 13 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
Dec 27 Javascript
JavaScript实现精美个性导航栏筋斗云效果
Oct 29 Javascript
如何解决js函数防抖、节流出现的问题
Jun 17 Javascript
JS中比Switch...Case更优雅的多条件判断写法
Sep 05 Javascript
JS面向对象之多选框实现
Jan 17 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插件 Simple HTML DOM 用DOM方式处理HTML
2013/07/01 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
2015/02/15 PHP
php随机获取金山词霸每日一句的方法
2015/07/09 PHP
PHP简单实现合并2个数字键数组值的方法
2017/05/30 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
2019/10/16 PHP
Prototype1.6 JS 官方下载地址
2007/11/30 Javascript
JavaScript 新手24条实用建议[TUTS+]
2009/06/21 Javascript
再谈javascript图片预加载技术(详细演示)
2011/03/12 Javascript
用js实现trim()的解决办法
2013/04/16 Javascript
javascript禁用Tab键脚本实例
2013/11/22 Javascript
JavaScript中原型和原型链详解
2015/02/11 Javascript
AngularJS使用ngMessages进行表单验证
2015/12/27 Javascript
基于BootStrap实现局部刷新分页实例代码
2016/08/08 Javascript
JavaScript制作弹出层效果
2016/12/02 Javascript
概述BootStrap中role=&quot;form&quot;及role作用角色
2016/12/08 Javascript
JS实战篇之收缩菜单表单布局
2016/12/10 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
2017/04/20 Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
2017/07/13 Javascript
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
你可能不知道的JSON.stringify()详解
2017/08/17 Javascript
Three.js 再探 - 写一个微信跳一跳极简版游戏
2018/01/04 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
2019/04/04 Javascript
vue 解决uglifyjs-webpack-plugin打包出现报错的问题
2020/08/04 Javascript
Vue——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
2020/12/19 Vue.js
[05:15]2018年度CS GO社区贡献奖-完美盛典
2018/12/16 DOTA
python文件特定行插入和替换实例详解
2017/07/12 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
2020/04/13 Python
python如何对链表操作
2020/10/10 Python
CSS3教程(7):CSS3嵌入字体
2009/04/02 HTML / CSS
传媒专业推荐信范文
2013/11/23 职场文书
职业规划书如何设计?
2014/01/09 职场文书
劲霸男装广告词改编版
2014/03/21 职场文书
信用社竞聘演讲稿
2014/05/16 职场文书
2015年“世界无车日”活动方案
2015/05/06 职场文书
感谢师恩主题班会
2015/08/17 职场文书