直接开始,HTML CSS部分没备注,JS有
HTML部分
<div style="overflow: hidden;position: relative;left: 0;top: 0;height: 450px;width: 100%"><div id="slider"><div></div><div></div><div></div></div>
</div>
css部分
#slider {width: 300%;height: 450px;position: absolute;overflow: hidden;}#slider > div:nth-child(1) {#sliderModal('http://yxcx.oss-cn-beijing.aliyuncs.com/yxcximg/banner/allline2.jpg');}#slider > div:nth-child(2) {#sliderModal('http://yxcx.oss-cn-beijing.aliyuncs.com/yxcximg/banner/html1.jpg');}#slider > div:nth-child(3) {#sliderModal('http://yxcx.oss-cn-beijing.aliyuncs.com/yxcximg/banner/yizhanshi1.jpg');}
JS部分
var speed = 15; //设置图片切换速度var page = 1; //轮播图片var allPage = $('#slider').children('div').length; //获取轮播图片数var clientWidth = $(window).width(); //获取浏览器显示宽度function Mixin() { //所有方法封装方便调用this.play = function (){ //总开关setInterval(function () { //2秒换一张图run.autoPlay();}, 2000)};this.animate = function (val) {clearInterval(play); //先清除动画if(val ==0){ //回到第一张图$('#slider').css({'left': 0 + 'px'})}else {var move = (val -1) * -clientWidth; //运动轨迹开始值var end = val * -clientWidth; //运动轨迹结束值var play = setInterval(function () { //这给setInterval定义了个名字,好随时停止它move = move -speed //动画移动速度$('#slider').css({'left': move || 0 + 'px'}) //开始移动if (move < end) { //当移动值超过结束值 停止动画clearInterval(play);}}, 5)}}this.autoPlay = function () {if(page >=allPage){ //超过总图数回到第一张图page =0;}this.animate(page); //插图图几,开始动画page ++;};};var createslider = function () { //这样写可以不写'new'来调用构造函数,传值也方便return new Mixin();};var run = createslider(); //把函数赋值给RUN才能成功调用play,因为createslider指向本身,// 而run的constructor指向mixin这个方法,可以用run.__proto__检测run.play();console.log(run.__proto__)