900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > js实现自定义拖动进度条效果(code)

js实现自定义拖动进度条效果(code)

时间:2021-01-17 15:12:48

相关推荐

js实现自定义拖动进度条效果(code)

web前端|js教程

拖动进度条,JavaScript

web前端-js教程

可拖动的进度条是如何制作的?本章给大家带来js实现自定义拖动进度条效果(代码实例)。有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

操作系统设计 xinu源码,怎样使用vscode,pixel ubuntu,调整tomcat jvm,sqlite源代码怎么写,网站管理平台扩展插件,前端三维框架有哪些,爬虫属不属于算法,上传文本php,花都seo优化营销,短信平台管理网站源码,网页qq在线客服代码,cms模板搭建lzw

先看看效果图:

canvas 进度条 源码,vscode小程序代码跳转,ubuntu下载tim,tomcat 8怎么下载,爬虫 收集 数据,php配置要求,四川seo优化产品介绍,手机wap网站程序lzw

安卓 tv项目源码,进ubuntu不顺畅,爬虫技术的分析,php 炒粉,无锡搜狗seolzw

实例代码分三部分:

HTML部分:

css部分:

#demo {width: 600px; height: 100px; margin: 100px auto;display: flex; align-items: center; }#demo .progress {width: 100%; height: 6px; border-radius: 3px;background: #F1F5FD; }#demo .progress .progress-bar {width: 40%; height: 100%; border-radius: 3px;background: #0072FF; }#demo .progress .progress-bar .progress-thumb {width: 14px; height: 14px; border-radius: 50%;background: #FFFFFF; box-shadow: 0 0 15px 5px #0072FF;float: right;position: relative; left: 7px; top: -5px; }

到这步就基本实现了自定义的样式,只需改变 .progress-bar 的 width 就能显示不同的进度;接下来给进度条加上拖动事件

JavaScript部分:

var slider = { use: function(id) {var self = this;self.slider = document.getElementById(id);self.bar = self.slider.querySelector(.progress-bar);self.thumb = self.slider.querySelector(.progress-thumb);self.slider.addEventListener(mousedown, function(e) { if (e.button == 0) { // 判断点击左键 self.mDown = true; self.beginX = e.offsetX; self.positionX = e.offsetX; self.beginClientX = e.clientX; self.sliderLong = parseInt(self.getStyle(self.slider, width)); var per = parseInt(self.positionX / self.sliderLong * 100); self.bar.style.width = per + \%; }});document.addEventListener(mousemove, function(e) { if (self.mDown) { var moveX = e.clientX - self.beginClientX; self.positionX = (self.beginX + moveX > self.sliderLong) ? self.sliderLong : (self.beginX + moveX < 0) ? 0 : self.beginX + moveX; var per = parseInt(self.positionX / self.sliderLong * 100); self.bar.style.width = per + \%; }});document.addEventListener(mouseup, function(e) { if (e.button == 0) { self.mDown = false; }}); }, getStyle: function(obj,styleName){ // 获取元素样式的方法if(obj.currentStyle){ return obj.currentStyle[styleName];}else{ return getComputedStyle(obj,null)[styleName];} } }; slider.use(demo);

说明:

1. 将 mousedown 事件绑定在进度条的包裹层而非进度条本身,这是参考了主流视频播放器的效果后的设计,为了优化用户体验;

2. JS 用纯原生语法书写,如果用 JQuery 可以简化选择器和 CSS 样式的获取;

3. 鼠标在滚动条外的移动,使用了 clientX 来计算。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。