Home  >  Article  >  Web Front-end  >  JavaScript implements automatic left-sliding carousel (code example)

JavaScript implements automatic left-sliding carousel (code example)

不言
不言forward
2018-10-27 15:15:501899browse

The content of this article is about the automatic left-sliding carousel image (code example) implemented by JavaScript. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

Recently when doing projects, I always only use various plug-in effects made by others. I remembered that I haven’t written some small plug-ins for a long time. I will forget them after a long time, so I quickly made up for the front-end program. A must for members to implement a js carousel chart.

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>

This small demo sample uses 4 pictures. Since it is necessary to achieve seamless connection, that is, the last picture jumps to the first picture smoothly, so When writing HTML, the last picture is repeated, and then through direct positioning, when the carousel reaches the last picture, the entire ul is positioned to the first picture, because the first and last pictures are the same , so the effect looks like a smooth and natural carousel.

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;
}

What needs to be noted in css is that when positioning, the entire external p is relatively positioned, while the content ul inside is absolutely positioned relative to the external p, through left ,top, etc. to set the position

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);
});

In the js code, you must first know about the use of timers. Among them, about the use of dom, I haven’t used it for a long time, and it feels very uncomfortable. familiar. . You need to strengthen yourself more. .

The above is the detailed content of JavaScript implements automatic left-sliding carousel (code example). For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:csdn.net. If there is any infringement, please contact admin@php.cn delete