中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么做一個輪播圖?(思路+代碼)

發布時間:2020-07-05 10:25:11 來源:網絡 閱讀:591 作者:專注地一哥 欄目:web開發

在頁面中寫好結構和樣式(根據情況而定)

?

外層用一個$(function(){})函數包裹起來,代表等頁面的內容加載完成后再去執行jquery的功能代碼。

?

獲取到包裹ulli的大盒子元素:const $div = $('#div');和包裹圖片的ul元素:$ul = $div.children('ul');再獲取到包裹圖片的每個li元素:$imgs = $ul.children();再獲取到li的所有長度,因為后面我們要clone第一張到最后一張,所以不用具體的數字,為:const len = $imgs.length;此外還需再獲取到一個li的寬度,為:const width = $imgs.eq(0).outerwidth()

?

需要聲明兩個變量記錄下一張和上一張的狀態,var index = 0

var lastindex = 0

?

此外,為了防止后面用戶點得太快,輪播圖出現bug,需要聲明一個變量來記錄輪播圖的運動狀態

var ismove = false(運動狀態默認為false)、

?

開始做之前,我們需要知道一件事,就是當我們點到第五張的時候,如果直接跳回第一張,肯定會給到用戶不好的體驗,所以,此時,我們應該把第一張clone,放到最后一張后面,讓兩張相同的圖片來進行跳轉,這樣其實我們是使用了一個障眼法來迷惑了用戶。

$imgs.eq(0).clone().appendTo($ul)

?

把第一張克隆放到最后一張后,我們就緊接著去計算所有的li的長度。因為這時的長度,才是真正我們想要的長度。

$ul.width((len+1)*width)

?

其實這兩句完全可以寫為一句。

$ul.append($imgs.eq(0).clone()).width((len+1)*width)

?

以上的準備工作做好了之后,我們要開始創建下面的小按鈕

??for(var i = 0; i <len; i++){

??$('<li>').html(i+1).addclass(i === 0 ? 'ac' : '').appendTo('#div ol')

??}

因為在css中寫好了樣式,創建好了之后會到之前寫好的位置當中,i+1的意思是按鈕的內容,會按12345…排列好,這也會讓第一個小按鈕默認為第一個,并具備ac這個樣式。

?

li創建好,并插入到(''#div ol')中后,這時我們要獲取這元素

const $btns = $('#div ol li')

?

獲取完成之后,要給他添加一個點擊事件,讓他能夠點擊切換

???$btns.on('click',function(){

???

???})

添加好之后我們要開始在里面寫內容了,還記得上面的ismove =false嗎,其實每個事件都要加上這個代碼,不過要進行判斷,如果在動的時候,就停止下面的代碼運行,停止的時候,就為true,讓代碼動起來。

$btns.on('click',function(){

ifismovereturn

ismove = true

})

做好上一步之后,我們還要用之前聲明的index = 0lastindex =0,來存儲我們點擊的時候的上一個和下一個的索引,這樣就不用把五個事件都加進來清空了,

$btns.on('click,function(){

if(ismove) return;

ismove =true;

//可以把這一步理解為,把現任變成前任,

//再給現任賦值他當前的索引

lastindex = index;

index = $(this).index()

}')

//接下來,我們要移出掉前任的“記憶”,把美好的“記憶”給現任

$btns.on('click',function(){

if(ismove) return

ismove = true

lastindex = index

index = $(this).index()

$btns.eq(lastindex).removeclass('ac')

$btns.eq(index).addclass('ac')

})

接下來,我們既然已經控制好了點擊的狀態,不會讓他暴躁,也獲取了下一個和上一個li的索引,并給當前的li添加了’ac‘和上一個li移出’ac‘,那么接下來,就是讓它動起來了!!!其實只需給它添加一個自定義動畫函數即可~~~

???$btns.on('click',function(){

???if(ismove) return

???ismove = true

???lastindex = index

???index = $(this).index()

???$btns.eq(lastindex).removeclass('ac')

???$btns.eq(index).addclass('ac')

???$ul.animate({

???//這句代碼表示,移動的距離是當前的索引值*width

???//因為是向左移動,所以,用-index,肯定有人問,為什么不在left前加符號,因為left是一個屬性值

???left: -index * width

???}1000function(){

???ismove = false

???//這個是回調函數,是運動結束之后要去執行的代碼,ismove = false,讓本次運動結束,如果運動結束之后沒什么事干,就可以不用寫回調函數

???})

???})

到此,我們下面的小圖標的運動輪播圖的切換就算完成了!!!

接下來,我們要寫的是向右點擊的大箭頭切換。
其實上面也說了一些思路,這里我直接寫一點

???$('#goNext').on('click',function(){ //XM http://www.xmchinese.com/

???if(ismove) ?return

???ismove = true

???lastindex = index

???index++

???})

上面的開頭,看起來其實很熟悉,對吧,接下來,其實我們要做的就是點擊的時候,當點到了最后一張,不是出現空白,而是讓他跳轉到第一張,并且下面的小按鈕也跟著改變。

$('#goNext').on('click',function(){

?

if (ismove) return

?

ismove = true

?

lastindex = index

?

index++

?

if(index === len){

?

index = 0

?

//本次動畫的意義在于,當移動到最后一張時,下標為len,讓ul瞬間回到0的位置

?

$ul.stop().animate({

?

left = -len*width

?

},1000,function(){

?

//css'left',0)可以讓它回到初始位置

?

$ul.css('left',0)

?

ismove = false

?

})

?

}else{

?

$ul.stop().animate({

?

left = -index*width;

?

},1000,function(){

?

ismove = false

?

})

?

}

?

$btns.eq(lastindex).removeclass('ac')

?

$btns.eq(index).addclass('ac')

?

})

接下來,我們需要做的是向左點擊切換的大箭頭
其實向右點擊,我們需要做的是,當點擊到第一張之前時,要讓它跳到最后一張:len - 1

???$('#goPrev').on('click',function(){

???if(ismove = false)

???ismove ?= true

???lastindex = index

???index--

???//index小于0,即超出邊界時,讓index = len - 1

???if(index < 0){

???index = len - 1

???$ul.css('left',-len * width).animate({

???left = -index * width

???},1000,function(){

???ismove = false

???})

???}else{

???$ul.animate({

???left = -index*width

???},1000,function(){

???ismove = false

???})

???}

???$btns.eq(lastindex).removeclass('ac')

???$btns.eq(index).addclass('ac')

???})

其實除了以上的東西,我們還要做的一個東西是,當鼠標移入時,這個輪播圖停止,離開時繼續自動播放。

???div1.hover(() => {

???????clearInterval($div1.timer)

?????}, (function auto () {

???????$div1.timer = setInterval(() => {

?????????$('#goNext').trigger('click')

???????}, 3000)

???????return auto

?????})())

???})

???

到這里,我們的輪播圖就算是完成了!!!

?

?


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

css
AI

甘肃省| 安国市| 通榆县| 天等县| 壶关县| 将乐县| 邵东县| 五莲县| 舒城县| 牙克石市| 大同县| 澜沧| 昌图县| 宜宾县| 曲麻莱县| 新昌县| 砚山县| 临汾市| 龙门县| 兴文县| 资中县| 亚东县| 富顺县| 那坡县| 隆安县| 永川市| 方城县| 枣庄市| 龙井市| 东台市| 宣武区| 北海市| 根河市| 鲁甸县| 蒙城县| 体育| 永城市| 斗六市| 安化县| 靖边县| 颍上县|