Heim  >  Artikel  >  Web-Frontend  >  JavaScript implementiert ein automatisches, nach links verschiebbares Karussell (Codebeispiel)

JavaScript implementiert ein automatisches, nach links verschiebbares Karussell (Codebeispiel)

不言
不言nach vorne
2018-10-27 15:15:501894Durchsuche

Der Inhalt dieses Artikels befasst sich mit dem von JavaScript implementierten automatischen Karussellbild (Codebeispiel). Ich hoffe, dass es für Sie hilfreich ist.

Wenn ich in letzter Zeit Projekte mache, verwende ich immer nur verschiedene Plug-In-Effekte, die von anderen erstellt wurden. Mir ist eingefallen, dass es schon lange her ist, dass ich einige kleine Plug-Ins geschrieben habe, die ich später vergessen werde Es hat lange gedauert, also habe ich schnell das Frontend-Programm nachgeholt. Ein Muss für Mitglieder, um ein js-Karusselldiagramm zu implementieren.

HTML-Code:

<!DOCTYPE HTML>
<head>
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="./demo.css">
</head>
 
<body>
    <div class="slide">
        <div class="img">
            <ul id="slide_img">
                <li><img src="./img/timgZQQ905MD.jpg"></li>  <!--处理无缝衔接的图片-->
                <li><img src="./img/1486293868523.jpg"></li>
                <li><img src="./img/timg1.jpg"></li>
                <li><img src="./img/timg2.jpg"></li>
                <li><img src="./img/timgZQQ905MD.jpg"></li>
            </ul>
        </div>
        <ul id="num">
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
        <div class="btn">
            <span id="left"><</span>
            <span id="right">></span>
        </div>
    </div>
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <!--通过百度CDN地址引用jQuery库-->
    <script type="text/javascript" src="./demo.js"></script>
</body>

Dieses kleine Demo-Beispiel verwendet 4 Bilder, um eine nahtlose Verbindung zu erreichen, das heißt, das letzte Bild springt reibungslos zum ersten Bild, also beim Schreiben von HTML Das letzte Bild wird wiederholt, und wenn das Karussell dann durch direkte Positionierung das letzte Bild erreicht, wird die gesamte UL auf das erste Bild positioniert, da das erste und das letzte Bild gleich sind, sodass der Effekt wie ein glattes und natürliches Karussell aussieht.

CSS-Code:

*{
	margin: 0;
	padding: 0;
}
.slide{
	position: relative;
	width: 1000px;
	height: 500px;
	margin: 40px auto;
	overflow: hidden;
}
.img ul{
	position: absolute;
	left: -1000px;
	width: 5000px;
}
.img li{
	list-style-type: none;
	float: left;
}
img{
	width: 1000px;
	height: 500px;
}
#num li{
	list-style-type: none;
	background-color: white;
	border: 1px solid red;
	border-radius: 100px;
	float: left;
	width: 10px;
	height: 10px;
	margin: 10px;
	cursor: pointer;
}
#num {
	position: absolute;
	top: 450px;
	left: 800px;
}
.btn{
	font-size: 30px;
	color: gray;
}
#left{
	position: absolute;
	top: 230px;
	left: 40px;
	cursor: pointer;
}
#right{
	position: absolute;
	top: 230px;
	right: 40px;
	cursor: pointer;
}

Was in CSS beachtet werden muss, ist, dass bei der Positionierung das gesamte externe p relativ positioniert ist, während der Inhalt ul im Inneren absolut relativ zum externen p positioniert ist. durch left , top usw., um die Position festzulegen

js-Code:

$(document).ready(function () {
	initRadius();
});

var number = 1;  //设置为全局变量

//轮播图图片主体
function startSlide() {
	dealRadius(number);
	if(number == 4) {
		number = 0;
		$(&#39;#slide_img&#39;).css({left: &#39;0px&#39;});  //处理无缝衔接图
		 dealRadius(0); // 处理无缝衔接小圆点的跳转
	}
	number++;
	var imageLeft = -1000 * number;
	$(&#39;#slide_img&#39;).animate({left: imageLeft});
}	
var timer = setInterval(startSlide,3000);



//小圆点的轮播实现
function dealRadius(num) {
	var lis = $(&#39;#num li&#39;);
	lis.eq(num).css(&#39;background-color&#39;, &#39;red&#39;);
	for(var i = 0; i < num; i++) {
		lis.eq(i).css(&#39;background-color&#39;,&#39;white&#39;);
	}
	for(var i = num + 1; i < 4; i++) {
		lis.eq(i).css(&#39;background-color&#39;,&#39;white&#39;);
	}
}

//初始化小圆点
function initRadius() {
	var lis = $(&#39;#num li&#39;);
	lis.eq(0).css(&#39;background-color&#39;, &#39;red&#39;);
}


//左右按钮的实现
$(&#39;#left&#39;).mousedown (function() {
	clearInterval(timer);
	if(number == 0) {
		$(&#39;#slide_img&#39;).css({left: &#39;-4000px&#39;}); 
		number = 4;
	}
	var imageLeft = -1000 * (number-1);
	$(&#39;#slide_img&#39;).animate({left: imageLeft});
	number--;
	if(number == 0) {
		dealRadius(3);
	} else {
			dealRadius(number-1);
	}
});
$(&#39;#left&#39;).mouseup(function() {
	timer = setInterval(startSlide,3000);
});

$(&#39;#right&#39;).mousedown (function() {
	clearInterval(timer);
	if(number == 4) {
		number = 0;
		$(&#39;#slide_img&#39;).css({left: &#39;0px&#39;});  //处理无缝衔接图
	}
	var imageLeft = -1000 * (number+1);
	$(&#39;#slide_img&#39;).animate({left: imageLeft});
	dealRadius(number);
	number++;

});
$(&#39;#right&#39;).mouseup(function() {
	timer = setInterval(startSlide,3000);
});


//小圆点的点击实现
$(&#39;#num&#39;).on(&#39;click&#39;,&#39;li&#39;,function(){
	clearInterval(timer);
	var _number = $(this).index() + 1;
	number = _number
	dealRadius(number-1);
	var imageLeft = -1000 * number;
	$(&#39;#slide_img&#39;).animate({left: imageLeft});
	timer = setInterval(startSlide,3000);
});

Im js-Code müssen Sie zunächst die Verwendung von Timern kennen, darunter auch die Verwendung von dom Ich habe es schon lange nicht mehr benutzt. Es fühlt sich sehr unangenehm an. . Du musst dich mehr stärken. .

Das obige ist der detaillierte Inhalt vonJavaScript implementiert ein automatisches, nach links verschiebbares Karussell (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen