靈活輪播圖(append 、clone小解)

當我們前後端交互的時候,我們寫的輪播圖要靈活一點。當我們寫滑動形式的輪播圖時,最後面往往要加上若干個代碼塊和前幾個相同,以此達到輪播圖最後一張到第一張的過渡。
以這個爲例
在這裏插入圖片描述
這是6個圖片,但是我們要最後再加上4個已完成過渡
在這裏插入圖片描述
以往像這種我會直接在html裏面寫10個
在這裏插入圖片描述
但是前後端交互的時候,a標籤的數量都時後端遍歷傳過來的。所以最後四個我們應該用js來解決。
這時候我們就會想到js中的appendChild或者jQuery中的append方法,但是如果我們直接這樣添加的話,只會把前四個轉移到最後四個的位置,只是調換了位置,並沒有實現了添加的效果。

$(".carousel_box>a").eq(3).appendTo($(".carousel_box"))

這時候我們應該用js先複製一下a代碼塊,再添加
js:

	var a=document.getElementsByClassName("carousel_box")[0];
	var c=a.getElementsByTagName("a")[3];
	var e=c.cloneNode(true);
	a.appendChild(e);

jQuery:

$(".carousel_box>a").eq(3).clone().appendTo($(".carousel_box"))

整個輪播圖的代碼如下,歡迎各位大佬提出意見、建議和錯誤

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>carousel</title>
		<link rel="stylesheet" type="text/css" href="css/carousel.css"/>
	</head>
	<body>
		<div class="carousel">
			<div class="carousel_contain">
				<div class="carousel_box">
					<a href="javascript:;" target="_blank">
						<img src="img/S1.jpg"/>
						<div class="names">
							<h3 class="name_">1</h3>
							<h4 class="grade_"></h4>	
						</div>
					</a>
					<a href="javascript:;" target="_blank">
						<img src="img/S1.jpg"/>
						<div class="names">
							<h3 class="name_">2</h3>
							<h4 class="grade_"></h4>	
						</div>
					</a>
					<a href="javascript:;" target="_blank">
						<img src="img/S1.jpg"/>
						<div class="names">
							<h3 class="name_">3</h3>
							<h4 class="grade_"></h4>	
						</div>
					</a>
					<a href="javascript:;" target="_blank">
						<img src="img/S1.jpg"/>
						<div class="names">
							<h3 class="name_">4</h3>
							<h4 class="grade_"></h4>	
						</div>
					</a>
					<a href="javascript:;" target="_blank">
						<img src="img/S1.jpg"/>
						<div class="names">
							<h3 class="name_">5</h3>
							<h4 class="grade_"></h4>	
						</div>
					</a>
					<a href="javascript:;" target="_blank">
						<img src="img/S1.jpg"/>
						<div class="names">
							<h3 class="name_">6</h3>
							<h4 class="grade_"></h4>	
						</div>
					</a>
				</div>
			</div>
			<ul class="switchable_triggers">
				<li></li>
				<li></li>
				<li></li>
				<li></li>
				<li></li>
				<li></li>
				<li></li>
			</ul>
		</div>
	</body>
	<script src="js/jquery-1.12.4.min.js"></script>
	<script src="js/carousel.js"></script>
</html>

*{
	box-sizing: border-box;
	margin: 0;
    padding: 0;
}
.carousel{
	position: relative;
	height: 374px;
}
.carousel_contain{
	clear: both;
    position: relative;
    overflow: hidden;
    margin: 0;
    height: 333px;
    width: 1200px;
    margin: 0 auto;
}
.carousel_box{
	position: absolute;
    /*left: -1168px;*/
    width: 17520px;
    transition-property: none;
    transition-duration: 500ms;
    transition-timing-function: ease-in-out;
}
.carousel_box a{
	float: left;
    margin: 2px 8px;
  	height: 327px;
    width: 284px;
    display: inline;
    text-align: center;
    background: #f7f7f7;
    box-shadow: 0 0 2px 2px #e0dfdf;
    background-image: url(../img/home_poeple_bg.png);
}
.carousel_box a img{
	height: 185px;
    display: block;
    margin: 14px auto 5px;
    padding: 3px;
    box-sizing: border-box;
    transition: all 0.3s;
    box-shadow: 0 0 3px 3px #ddd;
}
.switchable_triggers{
	display: block;
	height:20px;
	text-align: center;
}
.switchable_triggers li{
	display: inline-block;
    width: 17px;
    height: 6px;
    margin: 10px 3px 0 0;
    font-size: 0px;
    background: url(../img/navigator.png) -80px -10px no-repeat;
    outline: none;
    overflow: hidden;
    float: left;
}
.switchable_triggers li:nth-child(1){
	background: url(../img/navigator.png) -80px 0px no-repeat;
}

$(function(){
	var width_=$(".switchable_triggers>li").length*20+"px";
	$(".switchable_triggers").css("width",width_);
	$(".switchable_triggers").css("margin","0 auto")
	var storage=$("carousel_box>a");
	for (var i = 0; i <4; i++) {
		$(".carousel_box>a").eq(i).clone().appendTo($(".carousel_box"))
	}
	
	var current_index = 0;
	var total = $(".carousel_box>a").length-4;
	function carousel_play(){
		current_index++;
		if(current_index == total){
			$(".switchable_triggers>li").eq(0).css("background-position","-80px 0px");
			$(".switchable_triggers>li").eq(0).siblings().css("background-position","-80px -10px");
		}
		if(current_index > total) {
			$(".carousel_box").css({
				marginLeft: 0
			});
			current_index = 1;
		}
		$(".carousel_box").stop().animate({
			marginLeft: -300 * current_index + "px"
		}, 500);
		$(".switchable_triggers>li").eq(current_index).css("background-position","-80px 0px");
		$(".switchable_triggers>li").eq(current_index).siblings().css("background-position","-80px -10px");
	}
	var timer=setInterval(carousel_play,2000)
	$(".switchable_triggers>li").hover(function(){
		switchable_triggers_index=$(this).index();
		clearInterval(timer);
		current_index=switchable_triggers_index-1;
		carousel_play();
	},function(){
		timer=setInterval(carousel_play,2000);
	})
	$(".carousel").mousemove(function(){
		clearInterval(timer);
	});
	$(".carousel").mouseleave(function(){
		timer=setInterval(carousel_play,2000);
	})
});
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章