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入门学习资料收集整理篇
Jul 06 Javascript
Jquery知识点二 jquery下对数组的操作
Jan 15 Javascript
Json对象与Json字符串互转(4种转换方式)
Mar 27 Javascript
Extjs4 类的定义和扩展实例
Jun 28 Javascript
JavaScript将相对地址转换为绝对地址示例代码
Jul 19 Javascript
jQuery源码解读之addClass()方法分析
Feb 20 Javascript
javascript中typeof操作符和constucor属性检测
Feb 26 Javascript
javascript中获取class的简单实现
Jul 12 Javascript
AngualrJs清除定时器遇到的坑
Oct 13 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
Dec 12 Javascript
vue实现点击按钮下载文件功能
Oct 11 Javascript
Vue实现跑马灯样式文字横向滚动
Nov 23 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学习资源和链接.
2006/12/05 PHP
php 中的str_replace 函数总结
2007/04/27 PHP
有道搜索和IP138的IP的API接口(PHP应用)
2012/11/29 PHP
PHP实现的多文件上传类及用法示例
2016/05/06 PHP
开发跨浏览器javascript常见注意事项
2009/01/01 Javascript
JS解析XML的实现代码
2009/11/12 Javascript
封装的原生javascript弹出层代码
2010/09/24 Javascript
基于jquery实现状态限定编辑的代码
2012/02/11 Javascript
jquery 按钮状态效果 正常、移上、按下
2013/08/12 Javascript
jquery next nextAll nextUntil siblings的区别介绍
2013/10/05 Javascript
页面定时刷新(1秒刷新一次)
2013/11/22 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
2016/06/21 Javascript
微信小程序 loading 详解及实例代码
2016/11/09 Javascript
解决bootstrap-select 动态加载数据不显示的问题
2018/08/10 Javascript
解决jQuery使用append添加的元素事件无效的问题
2018/08/30 jQuery
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
2019/05/14 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
2019/07/25 Javascript
Bootstrap FileInput实现图片上传功能
2021/01/28 Javascript
JS实现点击掉落特效
2021/01/29 Javascript
利用Python中的pandas库对cdn日志进行分析详解
2017/03/07 Python
python中MethodType方法介绍与使用示例
2017/08/03 Python
virtualenv实现多个版本Python共存
2017/08/21 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
2018/06/13 Python
django的聚合函数和aggregate、annotate方法使用详解
2019/07/23 Python
css3动画效果抖动解决方法
2018/09/03 HTML / CSS
英国最大的运动营养公司之一:LA Muscle
2018/07/02 全球购物
英国探险旅游专家:Explore
2018/12/20 全球购物
莱德杯高尔夫欧洲官方商店:Ryder Cup Shop
2019/08/14 全球购物
五年级音乐教学反思
2014/02/06 职场文书
小摄影师教学反思
2014/04/27 职场文书
离婚协议书格式
2015/01/26 职场文书
2015学校师德师风工作总结
2015/04/22 职场文书
怎样写好演讲稿题目?
2019/08/21 职场文书
CSS预处理框架——Stylus
2021/04/21 HTML / CSS