輪播

無縫輪播

  • css需要讓圖片或者文本水平排列,overflow:hidden隱藏其他圖片
  • 整體圖片向左/右偏移,就會出現不同的照片

        /*設置父容器寬高,隱藏后面的元素*/
        .carousel{
            width: 320px;
            height: 180px;
            overflow: hidden;

        }

        /*特別重要的一步,不管容器有多寬,元素排成一列*/
        .carousel .img-ct{
            width: 1280px;
            overflow: hidden;
        }
輪播示意圖

元素排成一列,設置總寬度
  • 但是當我們到最后一張照片時,后面就沒有了,怎么循環輪播呢?
    • 可以clone頭位元素和末尾元素
    • 可以改變dom的順序
  • 立刻整體移位,由clone的3,移位到真正的3
    clone元素

把css樣式寫好,我們就用jQuery把邏輯寫一下

  • 克隆第一個元素
//圖片容器
var $imgCt = $("img-ct")
//獲取圖片的數量
var $imgs = $(".carousel .img-ct>li")
var imgCount = $imgs.length
//圖片的寬度
var imgWidth = $imgs.width()
//把第一個圖片clone到最后
$imgCt.append($imgs.first().clone())

注意有一點區別

jQuery區別

當我門克隆元素完成的時候,需要注意一點的是圖片的總寬度

clone元素跑下面了

我們可以看到多出來兩個克隆的元素,超出ul的長度,不水平排列了,所以我們應該設置長度在js中,而不是css里,不然一旦是其他數量的圖片修改特別麻煩

//計算父容器總寬度
$imgCt.width((imgCount +2)*imgWidth)

但是我們clone以后第一張圖片往后跑了一格,我們來把它弄回來

//讓用戶看到的是第一張圖片我們就偏移圖片
$imgCt.css({left: -imgWidth})

我們一點點的寫,下面就是寫兩個函數,一個往左點擊偏移,一個往右點擊偏移

//函數展示上一頁
$nextBtn.click(function(){
    playNext()
})
//展示下一頁
$preBtn.click(function(){
    playPre()
})
//點擊下一頁圖片往左偏移
function playNext(){
    $imgCt.animate({
        //原來基礎上在減小寬度
        left: "-=" +imgWidth
    })
}
function playPre(){
    $imgCt.animate({
        //原來基礎上在減小寬度
        left: "+=" +imgWidth
    })
}

但是有出先了一個問題,當我一直往一邊點擊時,當圖片偏移完了.結果出現了空白,該怎么解決呢?我們需要讓點擊到最后一張圖片時,立即回到第一張,循環,該怎么做呢?

//把上面的函數改一下
var pageIndex = 0
//點擊下一頁圖片往左偏移
function playNext(){
    $imgCt.animate({
        //原來基礎上在減小寬度
        left: "-=" +imgWidth
    },function(){
        //點擊一次pageIndex加一次
        pageIndex++
        //如果pageindex的值等于了圖片的數量
        if (pageIndex === imgCount) {
            //pageindex立刻回到第一張圖片
            pageIndex = 0
            //容器初始化值為圖片寬度
            $imgCt.css({left: -imgWidth})
        }
    })
}
打印pageIndex

大家看上面的動圖,會發現,pageIndex,一直在0123循環,因為圖片數量為4,所以判斷當pageIndex為圖片的數量時,使pageindex值返回去做判斷,設置偏移量就可以了

  • 那怎么配合下面的選項卡點擊呢?
//把這個函數調用放在左右點擊click事件中
function setBullet(){
    //獲取li,然后移除所有的active,并給下標添加class為actie
    $bullets.removeClass("active").eq(pageIndex).addClass("active")
}
圓點的樣式跟著點擊
  • 現在可以寫當點擊下面圓點圖片動畫的函數
//點擊選項卡
$bullets.click(function(){
    // 獲取下標
    var index = $(this).index()
    console.log(index)
    //如果點擊的下標比輪播圖片的下標大
    if (index > pageIndex) {
        //執行next函數,往左偏移,到達對應位置
        playNext(index - pageIndex)
    }else if (index < pageIndex) {
        playPre(pageIndex-index)
    }
})

當然還需要修改一下其他函數的參數
  • 最后再添加一個定時器,就可以自動輪播了
setInterval(function(){
    playNext(1)
},2000)

我們還可以把代碼優化一下,防止多次重復點擊,

// 變量
var isAnimate = false

//點擊下一頁圖片往左偏移
function playNext(len){
  if(isAnimate) return  // 如果動畫return 掉
  isAnimate = true 
    $imgCt.animate({
        //原來基礎上在減小寬度
        left: "-=" +len*imgWidth
     },function(){
      pageIndex += len
      
      if(pageIndex == imgCount){
        pageIndex = 0
        $imgCt.css({left: -imgWidth})
      }
      setBullet()
      isAnimate = false  // 設為false 關掉
      
    })
}

漸變輪播

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,501評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,673評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,610評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,939評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,668評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,004評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,001評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,173評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,705評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,426評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,656評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,139評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,833評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,247評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,580評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,371評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,621評論 2 380

推薦閱讀更多精彩內容