jQuery实现轮播图效果,顺便复习一下原型对象属性的书写模式。可通过new Carousel
创建一个轮播图实例。
创建一个carousel.js文件
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128(function(){//强行暴露一个变量window.Carousel = Carousel;function Carousel(JSON){this.dom = $("#" + JSON.id); //放置轮播图的父容器this.$imagesUl = null; //放置轮播图的ulthis.$imagesUlLis = null; //放置轮播图的lithis.$leftBtn = null; //放置轮播图左按钮this.$rightBtn = null; //放置轮播图右按钮this.$circleOl = null; //放置轮播的小圆点的olthis.$circleLis = null; //放置轮播的小圆点的lithis.pictureLength = JSON.images.length; //图片个数this.image = JSON.images; //图片地址数组this.height = JSON.height; //高this.width = JSON.width; //宽this.leftBtn = null; //左按钮this.rightBtn = null; //右按钮this.index = 0; //当前轮播图的序号this.animateDuration = JSON.animateDuration; //缓动时间this.interval = JSON.interval; //间隔时间this.timer = null; //定时器this.init(); //初始化this.bindEvent(); //绑定事件this.autoPlay() //自动播放}//初始化Carousel.prototype.init = function(){//创建dom树this.$imagesUl = $("<ul></ul>");this.dom.append(this.$imagesUl);for(var i=0 ;i<this.pictureLength;i++){$("<li><img src='"+this.image[i]+"'></li>").appendTo(this.$imagesUl)}this.$imagesUlLis = this.$imagesUl.find("li");//布局this.dom.css({"height" : this.height + "px","width" : this.width + "px","position" : "relative","overflow" : "hidden"})this.$imagesUlLis.css({"position" : "absolute","left" : this.width + "px","top" : 0,"list-style" : "none"})this.$imagesUlLis.eq(0).css("left",0)//创建按钮this.$leftBtn = $("<a href='javascript:;' class='leftBtn'></a>");this.$rightBtn = $("<a href='javascript:;' class='rightBtn'></a>");this.$leftBtn.appendTo(this.dom);this.$rightBtn.appendTo(this.dom);//小圆点this.$circleOl =$("<ol class='circles'></ol>");this.$circleOl.appendTo(this.dom);for(var i=0 ;i<this.pictureLength;i++){$("<li></li>").appendTo(this.$circleOl);}this.$circleLis = this.$circleOl.find("li");this.$circleLis.eq(0).addClass("current");}//绑定事件Carousel.prototype.bindEvent = function(){var self = this;this.$rightBtn.click(function(){if(self.$imagesUlLis.is(":animated")){return}self.showNext();})this.$leftBtn.click(function(){self.showPrev();})this.$circleLis.click(function(){self.show($(this).index())})this.dom.mouseenter(function(){clearInterval(self.timer)});this.dom.mouseleave(function(){self.autoPlay()});}//显示下一个轮播图Carousel.prototype.showNext = function(){this.$imagesUlLis.eq(this.index).animate({"left":-this.width},this.animateDuration)this.index ++ ;this.index = this.index>(this.pictureLength-1)?0:this.index;this.$imagesUlLis.eq(this.index).css("left",this.width).animate({"left":0},this.animateDuration);this.changeCircles()}//显示上一个轮播图Carousel.prototype.showPrev = function(){this.$imagesUlLis.eq(this.index).animate({"left":this.width},this.animateDuration)this.index -- ;this.index = this.index < 0 ?this.pictureLength-1:this.index;this.$imagesUlLis.eq(this.index).css("left",-this.width).animate({"left":0},this.animateDuration);this.changeCircles()}//点击小圆点切换轮播图Carousel.prototype.show = function(number){var old = this.index;this.index = number;if(this.index>old){this.$imagesUlLis.eq(old).animate({"left":-this.width},this.animateDuration);this.$imagesUlLis.eq(this.index).css("left",this.width).animate({"left":0},this.animateDuration);}else{this.$imagesUlLis.eq(old).animate({"left":this.width},this.animateDuration);this.$imagesUlLis.eq(this.index).css("left",-this.width).animate({"left":0},this.animateDuration);}this.changeCircles()}//点击小圆点的状态随轮播图的切换而切换Carousel.prototype.changeCircles = function(){this.$circleLis.eq(this.index).addClass("current").siblings().removeClass();}//自动播放Carousel.prototype.autoPlay = function(){var self = this;this.timer =setInterval(function(){self.showNext();},this.interval);}})()在html文件中引进刚才的
carsouel.js
文件,创建一个轮播图对象,附加上css样式1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>轮播图</title><script src="https://cdn.bootcss.com/jquery/1.11.3/jquery.js"></script><script src="Carousel.js"></script><style>*{padding: 0;margin: 0;}#lunbo{margin: 100px auto;}.leftBtn{display: block;width: 40px;height: 50px;background-color: red;position: absolute;left: 0;top: 150px;margin-top: -25px;}.rightBtn{display: block;width: 40px;height: 50px;background-color: red;position: absolute;left: 460px;top: 150px;margin-top: -25px;}.circles{position: absolute;top: 270px;left: 250px;margin-left: -68px;}.circles li{width: 16px;height: 16px;border-radius: 8px;background-color: green;list-style: none;float: left;margin-left: 8px;cursor: pointer;}.circles li.current{background-color: white;}</style></head><body><div id="lunbo"></div><script>//创建轮播图实例var c = new Carousel({"id" : "lunbo","images":["img/0.png","img/1.png","img/2.png","img/3.png","img/4.png","img/5.png",],"height" : 300,"width" : 500,"animateDuration" : 500,"interval" : 3000})</script></body></html>