JS实现横向轮播图(初级版)


Posted in Javascript onJune 24, 2020

本文实例为大家分享了JS实现横向轮播图的具体代码,供大家参考,具体内容如下

描述:

轮播图,初级,横向buton或者底部数字控制轮播,可以实现自动轮播(注释了,使用的话将其注释消掉),核心知识是数据驱动图像的位移达到效果。

效果:

JS实现横向轮播图(初级版)

代码:

js文件:

/*
* 工厂模式
* */
 
var Method=(function () {
 return {
 loadImage:function (arr,callback) {
 var img=new Image();
 img.arr=arr;
 img.list=[];
 img.num=0;
 img.callback=callback;
// 如果DOM对象下的事件侦听没有被删除掉,将会常驻堆中
// 一旦触发了这个事件需要的条件,就会继续执行事件函数
 img.addEventListener("load",this.loadHandler);
 img.self=this;
 img.src=arr[img.num];
 },
 
 loadHandler:function (e) {
 this.list.push(this.cloneNode(false));
 this.num++;
 if(this.num>this.arr.length-1){
 this.removeEventListener("load",this.self.loadHandler);
 this.callback(this.list);
 return;
 }
 this.src=this.arr[this.num];
 },
 
 $c:function (type,parent,style) {
 var elem=document.createElement(type);
 if(parent) parent.appendChild(elem);
 for(var key in style){
 elem.style[key]=style[key];
 }
 return elem;
 }
 }
})();

html文件:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <style>
 *{
 margin: 0;
 padding: 0;
 }
 #carousel,#imgCon img{
 width: 1200px;
 height: 400px;
 }
 #carousel
 {
 position: relative;
 margin: auto;
 overflow: hidden;
 }
 #imgCon{
 width: 6000px;
 height: 400px;
 position: absolute;
 left: 0;
 font-size: 0;
 transition: all 1s;
 }
 #leftBn,#rightBn
 {
 position: absolute;
 top:170px;
 }
 #leftBn{
 left: 20px;
 }
 #rightBn
 {
 right: 20px;
 }
 ul{
 position: absolute;
 bottom: 20px;
 list-style: none;
 margin: auto;
 left: 45%;
 }
 li
 {
 width: 20px;
 height: 20px;
 border: 1px solid red;
 border-radius: 10px;
 float: left;
 text-align: center;
 color: white;
 cursor: default;
 line-height:20px;
 font-size: 12px;
 margin-left: 8px;
 }
 </style>
</head>
<body>
 <div id="carousel">
 <div id="imgCon">
 <img src="img/a.jpeg">
 <img src="img/b.jpeg">
 <img src="img/c.jpeg">
 <img src="img/d.jpeg">
 <img src="img/e.jpeg">
 </div>
 <ul>
 <li>1</li>
 <li>2</li>
 <li>3</li>
 <li>4</li>
 <li>5</li>
 </ul>
 <img src="img/left.png" id="leftBn">
 <img src="img/right.png" id="rightBn">
 </div>
<script>
 /*
 *
 * 数据驱动显示
 *
 * */
 var imgCon,leftBn,rightBn,lis,ul,prevLi;
 var position=0;//图像的标记 第一张0 第二张1...
 init();
 function init() {
 imgCon=document.getElementById("imgCon");//图
 leftBn=document.getElementById("leftBn");//左按钮
 rightBn=document.getElementById("rightBn");//右按钮
 lis=document.getElementsByTagName("li");//下方数字右按钮
 ul=document.getElementsByTagName("ul")[0];
 leftBn.addEventListener("click",clickHandler);
 rightBn.addEventListener("click",clickHandler);
 for(var i=0;i<lis.length;i++){//为每隔小Li 也就是底部数字赋值
 lis[i].num=i;
 lis[i].addEventListener("click",liClickHandler);
 }
 changeLi();
 }
 
// setInterval(autoImg,3000);可以实现自动
 
 function autoImg() {//自动轮播
 position++;
 if(position>4) position=0;
 changeImg();
 }
 
 function clickHandler(e) {
 e= e || window.event;
 if(this===leftBn){
 position--;
 if(position<0) position=4;
 }else if(this===rightBn){
 position++;
 if(position>4) position=0;
 }
 changeImg();
 }
 
 function liClickHandler(e) {
 e= e || window.event;
 position=this.num;
 changeImg();
 }
 function changeImg() {//图片的转换效果 唯一
 imgCon.style.left=-position*1200+"px";//一次一张图片的位移
 changeLi();
 }
 
 function changeLi() {//底部数字的转换效果
 if(prevLi){
 prevLi.style.backgroundColor="rgba(255,0,0,0)";
 }
 prevLi=lis[position];
 prevLi.style.backgroundColor="rgba(255,0,0,0.5)";
 }
</script>
</body>
</html>

精彩专题分享:jQuery图片轮播 JavaScript图片轮播 Bootstrap图片轮播

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

Javascript 相关文章推荐
javascript中apply和call方法的作用及区别说明
Feb 14 Javascript
js获得参数的getParameter使用示例
Feb 26 Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
Sep 28 Javascript
jQuery中:first选择器用法实例
Dec 30 Javascript
JavaScript实现九九乘法表的简单实例
Jun 07 Javascript
大型JavaScript应用程序架构设计模式
Jun 29 Javascript
一文让你彻底搞清楚javascript中的require、import与export
Sep 24 Javascript
移动端图片上传旋转、压缩问题的方法
Oct 16 Javascript
10行代码实现微信小程序滑动tab切换
Dec 28 Javascript
从0到1搭建element后台框架优化篇(打包优化)
May 12 Javascript
vue 在单页面应用里使用二级套嵌路由
Dec 19 Vue.js
手写Vue2.0 数据劫持的示例
Mar 04 Vue.js
JS数组方法shift()、unshift()用法实例分析
Jan 18 #Javascript
微信小程序开发中var that =this的用法详解
Jan 18 #Javascript
JavaScript实现滑动门效果
Jan 18 #Javascript
JS数组方法push()、pop()用法实例分析
Jan 18 #Javascript
vue中使用WX-JSSDK的两种方法(推荐)
Jan 18 #Javascript
JS数组方法join()用法实例分析
Jan 18 #Javascript
JavaScript进制转换实现方法解析
Jan 18 #Javascript
You might like
php实现简易聊天室应用代码
2015/09/23 PHP
关于laravel 日志写入失败问题汇总
2019/10/17 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
基于jquery ajax 用户无刷新登录方法详解
2012/04/28 Javascript
jsp+javascript打造级连菜单的实例代码
2013/06/14 Javascript
js同比例缩放图片的小例子
2013/10/30 Javascript
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
jquery实现表单验证简单实例演示
2015/11/23 Javascript
javascript编程异常处理实例小结
2015/11/30 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
2016/02/17 Javascript
JSONP和批量操作功能的实现方法
2016/08/21 Javascript
整理关于Bootstrap表单的慕课笔记
2017/03/29 Javascript
Three.js如何实现雾化效果示例代码
2017/09/27 Javascript
vue主动刷新页面及列表数据删除后的刷新实例
2018/09/16 Javascript
vue打包相关细节整理(小结)
2018/09/28 Javascript
python Django批量导入数据
2016/03/25 Python
python利用拉链法实现字典方法示例
2017/03/25 Python
Python基于OpenCV库Adaboost实现人脸识别功能详解
2018/08/25 Python
Python从Excel中读取日期一列的方法
2018/11/28 Python
python自动化测试无法启动谷歌浏览器问题
2019/10/10 Python
HTML5之HTML元素扩展(上)—新增加的元素及使用概述
2013/01/31 HTML / CSS
mui几种页面跳转方式对比总结概括
2017/08/18 HTML / CSS
美国最大的在线寄售和旧货店:Swap.com
2018/08/27 全球购物
PyQt 如何创建自定义QWidget
2021/03/24 Python
应聘编辑职位自荐信范文
2014/01/05 职场文书
纪念建党演讲稿范文
2014/01/13 职场文书
争当四好少年演讲稿
2014/09/13 职场文书
学生党员批评与自我批评
2014/10/15 职场文书
萤火虫之墓观后感
2015/06/05 职场文书
债务追讨律师函
2015/06/24 职场文书
关于元旦的广播稿2016
2015/12/17 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
团组织关系介绍信
2019/06/24 职场文书
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android