Dragdealer 入门教程:10行代码实现简单滑块(附完整HTML/CSS代码)
【免费下载链接】dragdealerDrag-based vanilla JS component项目地址: https://gitcode.com/gh_mirrors/dr/dragdealer
Dragdealer 是一个基于拖拽的轻量级 JavaScript 滑块组件,零依赖、体积小巧,非常适合新手快速上手。本教程将带你用 10 行代码实现一个可拖动的简单滑块,并附上完整的 HTML/CSS 代码与进阶玩法,帮助你彻底掌握 Dragdealer 滑块组件的核心用法。
什么是 Dragdealer?
Dragdealer 是一个"基于拖拽的 vanilla JS 组件"(Drag-based vanilla JS component),它不依赖 jQuery 等框架,核心文件只有一个 src/dragdealer.js 和一个 src/dragdealer.css,引入即用。
它由两个基本 DOM 元素构成:
- wrapper(容器):拥有
.dragdealer类的最外层元素,负责划定拖拽边界; - handle(滑块):容器内的子元素,是需要被拖动的部分。
当 handle 比 wrapper 小时,它就是一个普通滑块;当 handle 比 wrapper 大时,它还能变身"遮罩",用来做图片局部显示等效果。可以说,一个小小的 Dragdealer 就能撑起多种 UI 交互。
快速开始:获取 dragdealer 源码
首先获取项目源码,使用 Git 克隆即可:
git clone https://gitcode.com/gh_mirrors/dr/dragdealer进入项目后,你只需要用到两个文件:src/dragdealer.js 和 src/dragdealer.css,把它们复制到自己的项目里,然后在页面中引入即可。
10行代码实现一个简单滑块
下面就是本文的核心:用最少的代码做出一个可拖动的滑块。完整示例参考 examples/simple-slider/index.html。
第 1 步:编写 HTML 结构(3 行)
<div id="simple-slider" class="dragdealer"> <div class="handle red-bar">拖我</div> </div>一个外层容器 + 一个带.handle的滑块子元素,结构就完成了。
第 2 步:编写 CSS 样式(4 行核心样式)
.dragdealer { position: relative; height: 30px; background: #eee; } .dragdealer .handle { position: absolute; top: 0; left: 0; cursor: pointer; } .dragdealer .red-bar { width: 100px; height: 30px; background: #c00; color: #fff; text-align: center; line-height: 30px; }第 3 步:一行 JavaScript 启动滑块
new Dragdealer('simple-slider');没错,初始化一个 Dragdealer 滑块只需要一行代码!加上 HTML 和 CSS,总共不到 10 行,一个支持鼠标拖动、带边界约束的滑块就完成了。打开页面,拖动红色滑块试试,丝滑的体验立刻呈现。
进阶玩法:实时显示滑块百分比数值
只有滑块还不够酷?我们可以借助animationCallback回调,在拖动过程中实时显示当前百分比。参考 examples/just-a-slider/script.js:
new Dragdealer('just-a-slider', { animationCallback: function(x, y) { $('.value').text(Math.round(x * 100)); } });animationCallback会在每一次动画循环中被调用,参数x是 0 到 1 之间的小数,乘以 100 再取整,就得到了滑块当前对应的百分比。加一个<span class="value"></span>%到滑块里,一个带数值反馈的进度条滑块就诞生了。
进阶玩法:steps 步进实现拖拽轮播
Dragdealer 的steps选项可以把手柄位置限制在虚拟网格上,非常适合做图片轮播。参考 examples/carousel/script.js:
new Dragdealer('image-carousel', { steps: 4, speed: 0.3, loose: true });steps: 4表示轮播图分为 4 个停靠点,speed: 0.3控制松手后滑动的速度,loose: true允许拖动时轻微越界、松手后自动回弹。配合 examples/carousel/index.html 中 4 张 740x400 的汽车图片,就是一个完整的拖拽轮播组件。
进阶玩法:滑动解锁与遮罩蒙版
Dragdealer 的应用场景远不止滑块本身:
- 滑动解锁:参考 examples/slide-to-unlock-new/script.js,通过
callback判断 x 值是否归零,实现"滑到底才解锁"的手机解锁交互; - 遮罩蒙版:参考 examples/canvas-mask/,当 handle 大于 wrapper 时,拖动过程会像探照灯一样"揭开"遮罩下的图片内容,效果非常惊艳。
Dragdealer 常用配置选项一览
| 选项 | 类型 | 说明 |
|---|---|---|
horizontal | bool | 是否允许水平拖动,默认true |
vertical | bool | 是否允许垂直拖动,默认false |
steps | number | 限定手柄的停靠位置(虚拟网格步数) |
snap | bool | 设置 steps 后,拖拽时是否吸附到最近步进 |
speed | number | 松手后的滑动速度,0~1 之间,越大越快 |
slide | bool | 松手后是否按惯性滑动一段距离 |
loose | bool | 拖动时允许轻微越界,松手后回弹 |
callback(x, y) | fn | 松手时回调,返回预测的位置值 |
animationCallback(x, y) | fn | 每次动画循环调用,返回实时位置 |
除了初始化配置,Dragdealer 还提供了setValue、getValue、disable、enable、reflow等实例方法,方便你通过代码控制滑块状态。完整的选项与 API 说明都写在 src/dragdealer.js 的头部注释中,值得通读一遍。
总结
Dragdealer 是一个"小而美"的 JavaScript 滑块组件:引入 src/dragdealer.js 和 src/dragdealer.css 两个文件,10 行代码即可实现简单滑块;再加上steps、callback、animationCallback等配置,还能扩展出轮播、解锁、遮罩等丰富的交互效果。项目自带的 examples 目录和 demo 目录里还有大量可运行示例,动手试一试,你很快就能用 Dragdealer 做出自己的滑块组件!
【免费下载链接】dragdealerDrag-based vanilla JS component项目地址: https://gitcode.com/gh_mirrors/dr/dragdealer
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考