原生 JS 撸一个轮播图(支持拖拽切屏)
FoxSlider.js 称不上库的库
1、简述
用惯了各种各样的组件,并没有真正意义上的封装一个可以拖拽切屏的轮播图,经过一番编写,发现写这样一个轮播图要想写的好,还真的是挺有难度,不同设备的不同事件完备性?事件触发时机的把控?如何更好的去封装?自适应窗口后的事件重置?等等...,看看swiper这个库的源码,就知道小事情也可以不简单。
现在写的这个基本的需求是可以满足的,可以通过拖拽切换也可以点击切换。
github 传送门(想你来一起完(wan)善(shua)!!Fork & Star ^_^一下你就会很美
传送点不了的可以复制链接: github.com/forrestyuan…
原生撸码一时爽,一直原生一直爽
1.1、特性
- 面向手机、平板,PC等终端。
1.2、缺点
- 封装简陋,功能亟需扩充
- 语义化不够强
- 用户配置能力弱
2、调用实例
html 结构代码
<!-- 引入js文件 -->
<script src="js/base.js"></script>
<!-- 主要dom结构 -->
<div class="slider-container"><div class="slide-bar"><div class="slider "><img src="assets/slider1.jpg" alt=""></div><div class="slider"><img src="assets/slider2.jpg" alt=""></div><div class="slider"><img src="assets/slider3.jpg" alt=""></div></div><div class="slider-pin"><span class="pin on"></span><span class="pin"></span><span class="pin"></span></div>
</div>
复制代码
js 代码
//实例化TouchPlugin,传入参数
var tp = new TouchPlugin({sliderContainer:'.slider-container',slider:'.slider',slidePin:'.slider-pin',sliderBar:'.slide-bar',pinClassName:'on',pin:'.pin',callback:function(e, dir, distance){console.log(dir, distance);}});
复制代码
运行效果
3、base.js
内主要方法
init()
初始化函数
Kind: global function
refreshParam(totalMoveLen, spinIndex)
刷新参数
Kind: global function
Param | Type | Description |
---|---|---|
totalMoveLen |
number
|
滚动位移 |
spinIndex |
number
|
轮播指标高亮下标 |
setTranslate(domNode, conf, moveLen)
设置指定对象移动样式 (transform)
Kind: global function
Param | Type | Description |
---|---|---|
domNode |
Object
|
应用移动样式的对象 |
conf |
Object
|
配置对象(animateStyle: ease-in-out |
moveLen |
number
|
轮播图移动距离(切屏通过控制位移) |
resize()
改变屏幕尺寸重置参数
Kind: global function
autoRun(time, initStep)
自动轮播
Kind: global function
Param | Type | Description |
---|---|---|
time |
number
|
轮播时间 |
initStep |
number
|
spin下标 和下一屏 |
judgeDir(curX, preX)
判断鼠标或触摸移动的方向
Kind: global function
Param | Type | Description |
---|---|---|
curX |
number
|
鼠标点击或开始触摸屏幕时的坐标X |
preX |
numer
|
鼠标移动或触摸移动时的坐标X |
testTouchEvent()
检测当前设备支持的事件(鼠标点击移动和手触摸移动)
Kind: global function
mouseX(event)
获取鼠标横坐标位置
Kind: global function
Param | Type | Description |
---|---|---|
event |
Event
|
事件对象 |
cancelBind(domNode)
取消绑定触摸或鼠标点击移动事件
Kind: global function
Param | Type | Description |
---|---|---|
domNode |
Object
|
需要被取消绑定事件节点对象 |
reBindTouchEvent(domNode, callback, isUnbind)
重新绑定触摸事件
Kind: global function
Param | Type | Description |
---|---|---|
domNode |
Object
|
需要被绑定事件节点对象 |
callback |
function
|
回调方法 |
isUnbind |
boolean
|
是否取消绑定 |
removeClsName(nodeList, clsName)
移除节点的样式类名
Kind: global function
Param | Type | Description |
---|---|---|
nodeList |
Array
|
被移除样式的节点数组 |
clsName |
string
|
移除的样式类名称 |
setClsName(node, clsName)
添加样式
Kind: global function
Param | Type | Description |
---|---|---|
node |
Object
|
添加类名的节点 |
clsName |
string
|
样式类名 |
bindSpinClick()
点击轮播spin 切换屏
Kind: global function
checkTargetByCls(domNode, clsName)
通过检测dom节点是否包含某个样式名来判断是否属于目标target
Kind: global function
Param | Type |
---|---|
domNode |
Object
|
clsName |
string
|
bindTouchEvent(domNode, callback, isUnbind)
Kind: global function
Param | Type | Description |
---|---|---|
domNode |
Object
|
绑定事件的代理对象 |
callback |
function
|
回调方法 |
isUnbind |
boolean
|
是否取消绑定 |
转载于:https://juejin.im/post/5cf78ae9f265da1bcc19307b
原生 JS 撸一个轮播图(支持拖拽切屏)相关推荐
- php cms 轮播图,原生JS运动实现轮播图
原生JS运动实现轮播图 **基本原理:**通过控制包含n张图片的ul的left值来实现图片自动运动的效果,其中列表中li元素的个数为n,第一个li和最后一个li里存放的图片应为同一张图片,当图片运动到 ...
- 原生js进阶版轮播图实现(走马灯效果,无缝衔接)
原生js进阶版轮播图实现(走马灯效果,无缝衔接) 利用原生js手写一个轮播图,是上一篇文章的简易版的一个进阶,本次轮播图主要是利用定位和定时器实现了走马灯效果,并且是左右轮播.实现过程与代码也是很简单 ...
- html原生js实现图片轮播,原生js实现简单轮播图
本文实例为大家分享了js实现简单轮播图的具体代码,供大家参考,具体内容如下 一.写入网页基本结构 body: 网页的最外部设置一个id为wrap的容器,取代body,这样方便我们做一些初始化 css: ...
- html轮播图原理,30_用js实现一个轮播图效果,简单说下原理
一.原理 将一些图片在一行中平铺,然后计算偏移量再利用定时器实现定时轮播. 步骤一:建立html基本布局 如下所示: 轮播图 1 2 3 4 5 < > 只有五张图片,却使用7张来轮播,这 ...
- 单机按钮来图片轮播_原生js如何实现轮播图效果?
第一种: 这个是之前写的,比较草率,没有注释,如果这个看不懂就去看第二个,比较仔细,主要是了解他,后面都会有一些插件来使用,很方便,只要几行代码就可写出各种各样的代码,所以,不懂的话,不要太在意, 第 ...
- 原生js+css 实现轮播图 完整代码
利用原生的js实现轮播图,可以添加到自己的UI库中,在以后的项目中对其进行修改然后添加到已有项目中. 先写出css部分和html部分,直接上代码 <!DOCTYPE html> <h ...
- html图片3djs轮播,原生js实现3D轮播图
3D轮播图是我做过复杂的图片轮播了,由于是利用坐标,层级之间的关系,所以实现起来原理比较简单但是bug巨多,在推推拖拖了好久后,下定决心重新整理成博客,与大家分享! 首先分析一下3D图片轮播的功能需求 ...
- js判断定时器是否启动_原生js如何做出轮播图的效果
<div class="box"><ul><li class="active"><img src="./im ...
- 原生JS实现小米轮播图和网易云轮播图
文章目录 小米轮播图 网易云轮播图 小米轮播图 实现功能: 定时切换(2s) 点击按钮停止切换 点击向左向右按钮进行相应切换 鼠标点击下方的小圆点,并进行相应的切换 效果: 代码如下: <!DO ...
- 制作轮播图思路 ~ 使用JS做一个轮播图,先在脑海里捋一捋逻辑,我的思路是这样的,看图啦:
制作一个功能比较全的轮播图,应该怎么下手呢?我的思路比较中规中矩,如果不知道怎么下手的,看看我的思路吧,看完一定要着手试试哦~
最新文章
- 40个Java多线程问题总结
- Java学习day2
- python线程(二)代码部分Threading模块
- ByteBuffer的使用
- java广度优先爬虫示例,【爬虫】广度优先遍历抓取数据概述
- 获取springbean的几种方式
- 2018CHD-ACM新生赛(正式赛)E.解救迷茫的草滩小王子
- 分享一个最新思考的创业项目
- 三道题就能考察你对Vue掌握了多少!
- [见得多了就懂了]食物链
- 计算机网络网络层之IP协议(5)——IP子网划分与子网掩码
- 【机器人技术基础】第1章选择题
- 一文读懂TOGAF企业架构
- 全网最强最细postman接口测试教程(一)
- bat脚本中怎么注释命令行
- 移动前端开发和 Web 前端开发的区别
- 考研 计算机 跨专业,考研跨专业计算机 你需要满足这些条件
- 计算机毕业设计jsp宠物美容网站
- abaqus python实例_abaqus Python实例-操作excel文件
- 用图片制作radio单选按钮
热门文章
- [py]__name__ 属于哪个文件
- 【CS Round #46 (Div. 1.5) B】Letters Deque
- ChainOfResponsibilityPattern(23种设计模式之一)
- js和jQuery的总结
- PHP基础知识点汇总(三)
- 根据输入时间判断年龄是否在18~68周岁之间
- 5、WPF实现简单计算器-非常适合初学者练习
- C#动态创建和动态使用程序集、类、方法、字段等(二)
- Oracle物化视图的一般使用【转】
- day7-mysql引擎和索引