js实现滑动进度条效果


Posted in Javascript onAugust 21, 2020

本文实例为大家分享了js实现滑动进度条效果的具体代码,供大家参考,具体内容如下

js实现滑动进度条效果

进度条:

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8" />
 <title>js滑动进度条效果</title>
 <style>
  *{margin:0;padding:0;user-select:none;}
  .progress-bar{position:relative;height:10px;width:400px;margin:200px auto;background:#ebeef5;border-radius:10px;}
  .progress-bar .pro-bar{position:absolute;left:0;height:10px;width:10px;background:#409eff;}
  .progress-bar .min-num{position:absolute;left:-20px;top:-5px;}
  .progress-bar .max-num{position:absolute;right:-40px;top:-5px;}
  .progress-bar .block {position:absolute;height:30px;width:10px;background:#ccc;top:-10px;border-radius:10px;}
  .progress-bar .block div{position:absolute;display:none;left:-20px;top:-45px;width:50px;height:30px;text-align:center;line-height:30px;background:#ccc;border-radius:20px;}
  .progress-bar .block:hover div{display:block;font-size:10%;color:#fff;background:#409eff;}
 </style>
</head>
<body>
 <div class="progress-bar">
 <span class="min-num">0</span>
 <span class="max-num">100</span>
 <div class="pro-bar"></div>
 <div class="block">
  <div>0</div>
 </div>
 </div>
</body>
<script>
 (function(){
 let moveBlock = document.querySelector('.block');
 let proBar = document.querySelector('.pro-bar');
 let flag = false;
 let startX = null;
 let moveMax = (400 - 10); // 背景条宽度减去滑块的宽度
 moveBlock.onmousedown = function(e){
  startX = e.pageX;
  moveBlock.style.left ? moveBlock.style.left : moveBlock.style.left = '0px';
  let startLeft = parseInt(moveBlock.style.left);
  document.onmousemove = function(e){
  let moveX = (e.pageX - startX) > 0 ? true : false;
  let moveSection = startLeft + (e.pageX - startX);
  // 限定移动范围
  if (moveSection >= 0 && moveSection <= moveMax) {
   let percent = ((startLeft + (e.pageX - startX)) / moveMax).toFixed(4) * 100;
   percent.toString().length > 5 ? percent = percent.toString().subStr(0, 5) : percent = percent.toString();
   moveBlock.style.left = startLeft + (e.pageX - startX) + 'px';
   proBar.style.width = moveBlock.style.left;
   moveBlock.querySelector('div').innerText = percent + '%';
  }
  };
 };
 // 鼠标松开移除事件
 moveBlock.onmouseup = function(){
  document.onmousemove = null;
 };
 })();
</script>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript中void(0)的具体含义解释
Feb 27 Javascript
jQuery :first选择器使用介绍
Aug 09 Javascript
js实现九宫格图片半透明渐显特效的方法
Feb 16 Javascript
JS+DIV+CSS排版布局实现美观的选项卡效果
Oct 10 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
Jul 28 Javascript
JavaScript两个变量交换值的实现方法
Mar 01 Javascript
整理关于Bootstrap排版的慕课笔记
Mar 29 Javascript
vue-router路由参数刷新消失的问题解决方法
Jun 17 Javascript
JavaScript HTML DOM元素 节点操作汇总
Jul 29 Javascript
vue使用微信JS-SDK实现分享功能
Aug 23 Javascript
Vue props中Object和Array设置默认值操作
Jul 30 Javascript
Js实现粘贴上传图片的原理及示例
Dec 09 Javascript
探索浏览器页面关闭window.close()的使用详解
Aug 21 #Javascript
vue组件开发之tab切换组件使用详解
Aug 21 #Javascript
vue组件开发之slider组件使用详解
Aug 21 #Javascript
Vue左滑组件slider使用详解
Aug 21 #Javascript
vue实现移动端触屏拖拽功能
Aug 21 #Javascript
vue实现移动端拖动排序
Aug 21 #Javascript
微信小程序实现聊天室
Aug 21 #Javascript
You might like
PHP获取当前相对于域名目录的方法
2015/06/26 PHP
PHP符合PSR编程规范的实例分享
2016/12/21 PHP
php实现微信和支付宝支付的示例代码
2020/08/11 PHP
javascript实现上传图片前的预览(TX的面试题)
2007/08/20 Javascript
Javascript 判断函数类型完美解决方案
2009/09/02 Javascript
javascript 判断中文字符长度的函数代码
2012/08/27 Javascript
jquery ajax对特殊字符进行转义防止js注入使用示例
2013/11/21 Javascript
JS数组去重与取重的示例代码
2014/01/24 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
2014/02/19 Javascript
浅析javascript中的DOM
2015/03/01 Javascript
javascript实现加载xml文件的方法
2015/11/24 Javascript
利用React-router+Webpack快速构建react程序
2016/10/27 Javascript
微信小程序中用WebStorm使用LESS
2017/03/08 Javascript
JavaScript通过filereader接口读取文件
2017/05/10 Javascript
JS中Swiper的使用和轮播图效果
2017/08/11 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
vant-ui框架的一个bug(解决切换后onload不触发)
2020/11/11 Javascript
基于ajax实现上传图片代码示例解析
2020/12/03 Javascript
python用来获得图片exif信息的库实例分析
2015/03/16 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
2017/03/12 Python
Python实现备份MySQL数据库的方法示例
2018/01/11 Python
用python爬取租房网站信息的代码
2018/12/14 Python
flask实现验证码并验证功能
2019/12/05 Python
Django中和时区相关的安全问题详解
2020/10/12 Python
华为俄罗斯官方网上商城:购买Huawei手机和平板
2017/04/21 全球购物
Clarisonic美国官网:科莱丽声波洁面仪
2017/10/12 全球购物
澳大利亚最便宜的网上药房:Chemist Warehouse
2020/01/30 全球购物
解释一下ArrayList Vector和LinkedList的实现和区别
2013/04/26 面试题
网上常见的一份Linux面试题(多项选择部分)
2014/09/09 面试题
高三自我鉴定
2013/10/23 职场文书
市场营销方案范文
2014/03/11 职场文书
信用卡工资证明范本
2014/10/17 职场文书
报名委托书
2015/01/29 职场文书
2015年生产部工作总结范文
2015/05/25 职场文书
大学生暑期社会实践的个人总结!
2019/07/17 职场文书
2019年行政人事个人工作总结范本!
2019/07/19 职场文书