JS原生轮播图实现
来源:互联网 发布:国学小达人网络挑战赛 编辑:程序博客网 时间:2024/06/08 12:43
作为一个PHP全栈攻城狮,不仅要会后端PHP和数据库,还要会前端JS。今天源码时代PHP培训学科老师要和大家分享一下JS原生编写轮播图的插件。 说起轮播图,很多人会选择使用各种插件,比如基于JQuery或其它框架的。不瞒大家,我也用过,甚至还用过Flash的轮播图。总体来说,用起来是比较简单,但是有一个非常严重的问题,那就是加载速度非常非常慢。
如果能自己使用JS原生写一个轮播图,不仅速度快,那感觉也是高大上,颇有高级前端工程师的feel啊。不过今天为了大家好理解,我们使用面向过程的代码编写(面向过程关注细节,方便理解原理;面向对象使用方便,但不方便新手理解)。
在开始编写之前我们需要准备几张测试图片,以及一些技术基础:JavaScript、HTML、CSS。为了方便测试,我们约定一下测试环境:三张相同大小的图片放在images目录中,所有的JS、HTML、CSS代码写在一个html文件中;由于使用了新的DOM API,所以建议使用chrome50以上版本的浏览器。
编写思路:
1)来三张图和三个按钮,将所有图片排成一行,将第一张复制一份放在最后(也可以全部复制放在后面,但只会用到第一张,重复出现一次三张图,一共六张图)
2)通过外边距偏移实现轮播
默认显示第1张图
第1次改变,第1张图移出,第2张图出现
第2次改变,第2张图移出,第3张图出现
第0次改变,第3张图移出,第4张图出现(第4张是第1张的复制,用户感觉是回到了第1张)
轮回,第0次改变,瞬间将移回第1张,由于第4张图和第1张一样,所以用户无法感觉这个变化,然后继续第1张图移出,第2张出现
...
3)给按钮添加点击事件
触发时停止自动播放,并切换到指定的图片
第一步:编写HTML和CSS
编写HTML:
三张图
三个按钮
编写CSS:
将所有图片排成一行
将按钮排到轮播图中间底部
设置按钮的状态样式
代码如下:
第二步:编写JavaScript获取元素
获取轮播图片总数(用于计算显示轮回)
获取每屏宽度(用于计算每次偏移量)
代码:
第三步:实现轮播
设置定时器实现隔3秒切换一张图片
切换图片时,需要传入切换到指定图片的编号
计算偏移量
设置定时器实现偏移时的动画效果
实现按钮状态同步变化
JS代码:
第四步:按钮功能
给所有按钮添加事件
点击时停止自动播放,切换到指定的图片
JS代码:
代码汇总:
如果能自己使用JS原生写一个轮播图,不仅速度快,那感觉也是高大上,颇有高级前端工程师的feel啊。不过今天为了大家好理解,我们使用面向过程的代码编写(面向过程关注细节,方便理解原理;面向对象使用方便,但不方便新手理解)。
在开始编写之前我们需要准备几张测试图片,以及一些技术基础:JavaScript、HTML、CSS。为了方便测试,我们约定一下测试环境:三张相同大小的图片放在images目录中,所有的JS、HTML、CSS代码写在一个html文件中;由于使用了新的DOM API,所以建议使用chrome50以上版本的浏览器。
编写思路:
1)来三张图和三个按钮,将所有图片排成一行,将第一张复制一份放在最后(也可以全部复制放在后面,但只会用到第一张,重复出现一次三张图,一共六张图)
2)通过外边距偏移实现轮播
默认显示第1张图
第1次改变,第1张图移出,第2张图出现
第2次改变,第2张图移出,第3张图出现
第0次改变,第3张图移出,第4张图出现(第4张是第1张的复制,用户感觉是回到了第1张)
轮回,第0次改变,瞬间将移回第1张,由于第4张图和第1张一样,所以用户无法感觉这个变化,然后继续第1张图移出,第2张出现
...
3)给按钮添加点击事件
触发时停止自动播放,并切换到指定的图片
第一步:编写HTML和CSS
编写HTML:
三张图
三个按钮
编写CSS:
将所有图片排成一行
将按钮排到轮播图中间底部
设置按钮的状态样式
代码如下:
第二步:编写JavaScript获取元素
获取轮播图片总数(用于计算显示轮回)
获取每屏宽度(用于计算每次偏移量)
代码:
第三步:实现轮播
设置定时器实现隔3秒切换一张图片
切换图片时,需要传入切换到指定图片的编号
计算偏移量
设置定时器实现偏移时的动画效果
实现按钮状态同步变化
JS代码:
第四步:按钮功能
给所有按钮添加事件
点击时停止自动播放,切换到指定的图片
JS代码:
代码汇总:
总结,和所有的PHP框架一样,所有JS框架和库都是基于原生JS编写的,只有把原生JS的代码掌握好,才能以不变应万变,在技术领域平静对待各种变化。
本文来源:http://bbs.itsource.cn/thread-1662-1-1.html,转载请注明出处!
阅读全文
0 0
- 原生JS实现轮播图
- Js原生实现轮播图
- 原生js实现轮播图
- 原生JS实现轮播图
- JS原生轮播图实现
- 轮播图--原生js实现
- 原生JS焦点轮播图实现
- 原生js轮播图的实现
- 原生js实现网易轮播图
- 用原生js实现轮播图
- 轮播图的原生js实现
- 用原生JS实现轮播图
- 原生JS实现无缝轮播图
- JS-学习笔记:原生JS实现轮播图
- 原生js实现焦点轮播图动态切换
- 原生js实现——轮播图效果
- 原生JS实现轮播图1---匀速动画
- 利用原生js实现轮播图效果
- 第944期机器学习日报(2017-04-19)
- Linux部署服务器(命令窗口)
- 微信小程序模板消息总结
- 第七周项目三
- 第七周 【项目3
- JS原生轮播图实现
- 用户留存率详解与计算方法案例
- 算法分析与设计week05--7.Reverse Integer
- Centos下Python整体环境安装
- Java 8 Lambda实现原理分析
- 原码、反码、补码和移码其实很简单
- linux 看门狗(watchdog)使用方法
- 算法分析与设计——LeetCode Problem.35 Search Insert Position
- 针对pycharm导入redis提示No module named redis的解决办法