1. 程式人生 > >實現輪播效果

實現輪播效果

fault num 設置圖 pro ren pos ont mouseout return

HTML

<div class="wrap">
	<div id="slide">
		<ul class="list">
			<li><a href="#"><img src="Style/Images/1.png" ></a></li>
			<li><a href="#"><img src="Style/Images/2.png" ></a></li>
			<li><a href="#"><img src="Style/Images/3.png" ></a></li>
			<li><a href="#"><img src="Style/Images/4.png" ></a></li>
			<li><a href="#"><img src="Style/Images/5.png" ></a></li>
		</ul>
	</div>
</div>

js(需要引入jQuery庫)

<script src="js/jquery-1.9.1.min.js"></script>
<script src="js/Mds.onePic.1.0.js" type="text/javascript"></script>
<script>
	$(‘#slide‘).MdsSlideFade({
		pageNum: true, time: ‘3000‘
	});
</script>

Mds.onePic.1.0.js

;(function($,window,document,undefined){
	var Inits = function(ele,opts){
		this.$ele = ele,
		this.defaults = {
			_width: 600, //設置圖輪播圖大小
			_height: 400,
			page: ‘page‘, //是否啟用導航圖標,有值時啟用,值為導航圖標列表的樣式類,為空時不啟用導航列表
			btn: true, //是否啟用上下一頁按鈕,true為啟用,false或者空為不啟用。如果啟用,請在下面的四個屬性中賦值,為按鈕添加樣式類和按鈕文字
			nextClass: ‘next‘, //下一張 按鈕樣式類
			prevClass: ‘prev‘,	//上一張 按鈕樣式類
			nextText: ‘下一張‘,
			prevText: ‘上一張‘,
			fade: ‘normal‘, //圖片切換速度 可能的值slow/normal/fast/毫秒(比如 1500)
			time: ‘‘, //可能的值(毫秒)1000\2000...
			pageNum: false, //是否啟用數字做輪播導航 true為啟用,false不啟用
			pagelocat: true //輪播導航圖標是否要居中 true/fasle 默認為居中
		},
		this.init = $.extend({}, this.defaults, opts);		
	}
	Inits.prototype = {
		slideFade: function(){
			var ul = this.$ele.children(‘ul.list‘);
			var li = ul.children(‘li‘);
			li.eq(0).show().siblings(‘li‘).hide();
			var init = this.init;
			//slide
			this.$ele.css({
				position: ‘relative‘,
				width: init._width+‘px‘,
				height: init._height+‘px‘,
				margin: ‘0 auto‘
			});
			li.css({
				position: ‘absolute‘,
				left: 0,
				width: init._width+‘px‘,
				height: init._height+‘px‘
			});
			li.find(‘img‘).css({
				width: ‘100%‘,
				height: ‘100%‘
			});
			//page==buiding
			if (init.page!=‘‘&&init.page!=undefined) {
				this.$ele.append(‘<ul class="‘+init.page+‘"></ul>‘);
				// buiding-page
				for (var i = 0; i < li.length; i++) {
					if (init.pageNum==true) {
						$(‘.‘+init.page).append(‘<li>‘+(i+1)+‘</li>‘);
					}else if(init.pageNum==false){
						$(‘.‘+init.page).append(‘<li> </li>‘);
					}
				};
				var page = $(‘.‘+init.page);
				var pageli = page.children(‘li‘);
					pageli.css(‘float‘, ‘left‘);
				var pageliw = Math.ceil(pageli.outerWidth(true)+0.05)*pageli.length;
				var pagetoleft = init._width/2-pageliw/2;
				pageli.eq(0).addClass(‘on‘);
				page.css({
					position: ‘absolute‘,
					width: pageliw+‘px‘
				});
				if (init.pagelocat==true) {
					page.css(‘left‘, pagetoleft+‘px‘);
				};
			};
			//btn==buiding
			if (init.btn==true) {
				this.$ele.append(‘<a href="javascript:;" class="sBtn">‘+init.prevText+‘</a><a href="javascript:;" class="sBtn">‘+init.nextText+‘</a>‘);
				var btntotop = Math.round(init._height/2-this.$ele.children(‘a.sBtn‘).height()/2);
				this.$ele.children(‘a.sBtn‘).css({
					position: ‘absolute‘,
					top: btntotop+‘px‘
				});
				if (init.nextClass!=‘‘||init.prevClass!=‘‘) {
					this.$ele.children(‘a.sBtn‘).eq(0).addClass(init.prevClass).next(‘a.sBtn‘).addClass(init.nextClass);
				}
			};
			//==========
			var i = 0;
			var next = function(fade){
				li.eq(i).fadeOut(fade).next().fadeIn(fade);
				page.children(‘li‘).eq(i).removeClass(‘on‘).next().addClass(‘on‘);
				i++;
				if (i>li.length-1) {
					i=0;
					li.eq(i).fadeIn(fade);
					page.children(‘li‘).eq(i).addClass(‘on‘);
				}
			};
			var prev = function(fade){
				console.log(li.length);

				if (i==0) {
					i=li.length-1;
					li.eq(0).fadeOut(fade);
					li.eq(i).fadeIn(fade);
					page.children(‘li‘).eq(0).removeClass(‘on‘);
					page.children(‘li‘).eq(i).addClass(‘on‘);
				}else{
					li.eq(i).fadeOut(fade).prev().fadeIn(fade);
					page.children(‘li‘).eq(i).removeClass(‘on‘).prev().addClass(‘on‘);
					i--;
				}
			}
			//下一張
			$(‘.next‘).click(function(event) {
				next(init.fade);
			});
			//上一張
			$(‘.prev‘).click(function(event) {
				prev(init.fade);
			});
			// 是否自動輪播
			if (init.time!=‘‘&&init.time!=undefined) {
				var timeRun = setInterval(next,init.time);
				//鼠標經過圖片
				li.each(function(index, el) {
					$(this).mouseover(function(event) {
						clearInterval(timeRun);
					}).mouseout(function(event) {
						timeRun = setInterval(next,init.time);
					});
				});
			};
			if (init.page!=‘‘&&init.page!=undefined) {
				//點擊導航圖標
				pageli.each(function(index, el) {
					$(this).click(function(event) {
						console.log(index);
						i=index;
						console.log(i);
						li.eq(i).fadeIn(init.fade).siblings(‘li‘).fadeOut(init.fade);
						page.children(‘li‘).eq(i).addClass(‘on‘).siblings(‘li‘).removeClass(‘on‘);
					});		
				});
			};
		}//slideFade end
	}
	// 插件中調用
	$.fn.MdsSlideFade = function(opts){
		var inits = new Inits(this,opts);
		return inits.slideFade();
	}

})(jQuery, window, document);

css

*{
    vertical-align: baselinebaseline;    
    font-family: inherit;    
    font-style: inherit;    
    font-size: 100%;    
    border: none;    
    padding: 0;    
    margin: 0; 
}
body {width:100%; font: 12px/1.5 Microsoft YaHei, SimSun, Verdana, Geneva, sans-serif;}
ol, ul {    
    list-style: none; 
}
fieldset, img { border:0; vertical-align:top; }
a { color:#000; text-decoration:none; cursor:pointer; outline: none;}
a img, :link img, :visited img {   
       border:0px; 
       text-decoration: none;
       vertical-align: middle;   
}
/*reset end*/

/*樣式根據需要更改 最好帶上父元素#slide,提高優先級 此處的next和prev為調用插件時設置的按鈕屬性nextClass/prevClass的值*/
#slide .prev{
    left: -50px;
}
#slide .next{
    right: -50px;
}
/*輪播導航圖標樣式,這裏的ul.page的page為調用插件時設置的page屬性的值,根據需要修改自己想要的樣式效果*/
#slide ul.page{
    bottom: -20px;
}
/*此處page原理同上 ,輪播導航圖標非當前圖標樣式,*/
#slide ul.page li{
    cursor: pointer;
    color: #000;
    width: 20px;
    height: 20px;
    background: #ccc;
    text-align: center;
    margin: 0 5px;
}
/* 此處page原理同上 ,on為當前圖片的圖標樣式*/
#slide ul.page li.on{
    color: red;
    background: #000;
}

image(自行百度下載)

實現輪播效果