溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

javascript如何實(shí)現(xiàn)自動(dòng)左滑的輪播圖

發(fā)布時(shí)間:2020-10-20 17:00:00 來源:億速云 閱讀:123 作者:小新 欄目:web開發(fā)

這篇文章主要介紹了javascript如何實(shí)現(xiàn)自動(dòng)左滑的輪播圖,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

最近做項(xiàng)目總是只會(huì)調(diào)用別人做好的各種插件效果,想起很久沒來自己寫點(diǎn)小插件,久了會(huì)忘記的,就趕緊來補(bǔ)一下,前端程序員必備,實(shí)現(xiàn)一個(gè)js輪播圖。

html代碼:

<!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>

此次的小demo樣例用了4張圖片,由于要實(shí)現(xiàn)無縫銜接,即最后一張順暢地跳轉(zhuǎn)到第一張,故在寫html的時(shí)候,再重復(fù)了最后一張圖片,然后通過直接定位,在輪播到最后一張圖片的時(shí)候,將整個(gè)ul定位到第一張,由于第一張和最后一張是一樣的,故效果看起來則順暢自然的輪播。

css代碼:

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

css中需要注意的是定位的時(shí)候,整個(gè)外部的p是相對(duì)定位,而里面的內(nèi)容ul則相對(duì)于外部p進(jìn)行絕對(duì)定位,通過left,top等來設(shè)置位置

js代碼:

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

var number = 1;  //設(shè)置為全局變量

//輪播圖圖片主體
function startSlide() {
	dealRadius(number);
	if(number == 4) {
		number = 0;
		$('#slide_img').css({left: '0px'});  //處理無縫銜接圖
		 dealRadius(0); // 處理無縫銜接小圓點(diǎn)的跳轉(zhuǎn)
	}
	number++;
	var imageLeft = -1000 * number;
	$('#slide_img').animate({left: imageLeft});
}	
var timer = setInterval(startSlide,3000);



//小圓點(diǎn)的輪播實(shí)現(xiàn)
function dealRadius(num) {
	var lis = $('#num li');
	lis.eq(num).css('background-color', 'red');
	for(var i = 0; i < num; i++) {
		lis.eq(i).css('background-color','white');
	}
	for(var i = num + 1; i < 4; i++) {
		lis.eq(i).css('background-color','white');
	}
}

//初始化小圓點(diǎn)
function initRadius() {
	var lis = $('#num li');
	lis.eq(0).css('background-color', 'red');
}


//左右按鈕的實(shí)現(xiàn)
$('#left').mousedown (function() {
	clearInterval(timer);
	if(number == 0) {
		$('#slide_img').css({left: '-4000px'}); 
		number = 4;
	}
	var imageLeft = -1000 * (number-1);
	$('#slide_img').animate({left: imageLeft});
	number--;
	if(number == 0) {
		dealRadius(3);
	} else {
			dealRadius(number-1);
	}
});
$('#left').mouseup(function() {
	timer = setInterval(startSlide,3000);
});

$('#right').mousedown (function() {
	clearInterval(timer);
	if(number == 4) {
		number = 0;
		$('#slide_img').css({left: '0px'});  //處理無縫銜接圖
	}
	var imageLeft = -1000 * (number+1);
	$('#slide_img').animate({left: imageLeft});
	dealRadius(number);
	number++;

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


//小圓點(diǎn)的點(diǎn)擊實(shí)現(xiàn)
$('#num').on('click','li',function(){
	clearInterval(timer);
	var _number = $(this).index() + 1;
	number = _number
	dealRadius(number-1);
	var imageLeft = -1000 * number;
	$('#slide_img').animate({left: imageLeft});
	timer = setInterval(startSlide,3000);
});

js代碼中,首先要知道關(guān)于定時(shí)器的使用,其中,關(guān)于dom的使用,好久沒用啊,感覺很不熟悉。。自己得多來加強(qiáng)。。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享javascript如何實(shí)現(xiàn)自動(dòng)左滑的輪播圖內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,遇到問題就找億速云,詳細(xì)的解決方法等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI