自適應輪播圖

制作時間:13:30 - 15:30

基本實現步驟如下:

1. 圖片橫向排列

html代碼:

<div id="box">
    <ul>
        <li><img src="./images/華為輪播1.jpg"></li>
        <li><img src="./images/華為輪播2.jpg"></li>
        <li><img src="./images/華為輪播3.jpg"></li>
    </ul>
    <div id="btn">
        <a href="javascript:;" class="active"></a>
        <a href="javascript:;"></a>
        <a href="javascript:;"></a>
    </div>
</div>

css代碼:

*{ padding: 0; margin: 0; }
ul{ list-style: none; }
a{ text-decoration: none; cursor: pointer;display: inline-block; }
#box{ min-width: 1000px; height: 396px; position: relative; overflow: hidden; }
#box ul{ position: absolute; left: 0; }
#box ul li{ float: left; }
#box ul li img{ position: relative; }
#btn{ position: absolute; bottom: 0; text-align: center; width: 100%; }
#btn a{ width: 11px; height: 11px; background-color: #666; cursor: pointer; display: inline-block; }
#btn a.active{ background-color: #fff; }
#btn a:hover{ background-color: #fff;  }

為了讓所有圖片排成一列笔咽,那勢必要把 ul 的寬度設置正確。
js代碼:

var $oBox = $("#box");
    var $oUl = $("ul");
    var $aLi = $("li");
    var $aImg = $("img");

    var $oBtn = $("#btn");
    var $aBtn = $("a");
var imgWidth = 1920;

$oUl.css({width:imgWidth*$aImg.length+"px"});

2. 每張圖片居中顯示

原因:圖片很寬霹期,有1920px叶组,比瀏覽器可視窗口寬。
解決思路:

計算圖片左偏移.png

js代碼:

for(var i=0;i<$aImg.length;i++){
    $aImg.eq(i).css({ left:-(imgWidth-viewWidth)/2 });
}

3. 以1000px為分界線历造,如果瀏覽器窗口大于1000px則要求圖片自適應甩十,小于1000則出現滾動條.

涉及的知識點:

jquery獲取瀏覽器可視窗口寬度 : $(window).width()

jquery監(jiān)聽瀏覽器窗口大小變化事件 : $(window).resize(function(){})

所以js代碼如下:

function reSize(){
    var viewWidth = $(window).width();
    if(viewWidth > 1000){
        for(var i=0;i<$aImg.length;i++){
            $aImg.eq(i).css({ left:-(imgWidth-viewWidth)/2 });
        }
    }
}
reSize();
$(window).resize(function(){
    reSize();
})

頁面效果如下:

頁面效果

4. 實現點擊切換

涉及的知識點:

addClass() : 添加class
removeClass() : 移除class
siblings() :獲取同輩元素
$(" xx ").index() : 獲取元素的索引值

所以js代碼如下:


Paste_Image.png

劃紅線處是計算元素的偏移。
我們通過下面的圖來看一下是如何怎么計算的吭产。

計算偏移.png

假如我們點第二個按鈕侣监,也就是顯示第二張圖,那么偏移的就是一張圖片的寬度臣淤。即 1*imgWidth
假如點擊第三個按鈕使第三張圖顯示橄霉,那么圖3就要移動兩張圖片的寬度。即 2*imgWidth
所以可以看出邑蒋,其實是 圖片的索引值*imgWidth

5. 實現自動切換

注意的一點是當切換到最后一張的時候姓蜂,要切換到第一張。
這里需要定義一個計數器 inow

function autoSwitch(){
    setInterval(run,5000);
}

autoSwitch();

function run(){
    var imgNum = $aImg.length;
    if(inow == imgNum-1){
        inow=0;
    }else{
        inow++;
    }
    $aBtn.eq(inow).addClass("active").siblings().removeClass("active");
    $oUl.animate({left:-inow*imgWidth})
}

不過医吊,測試一下之后钱慢,發(fā)現切換回第一張時,出現了瑕疵卿堂。
那接下去就要解決這個問題束莫。

6. 無縫切換

當切換到最后一張時,想要實現無縫切換的解決辦法:
將第一張偏移到最后一張的后面草描,那么動畫接下去就是緊接著切換回第一張的視覺效果览绿。

無縫切換

這里需要再添加一個計數器: inow2
js代碼改進:

function autoSwitch(){
    setInterval(run,5000);
}

autoSwitch();

function run(){
    var imgNum = $aImg.length;
    if(inow == imgNum-1){
        inow=0;
        $aLi.eq(0).css({position: "relative"});
        $aLi.eq(inow).css({left: imgNum*imgWidth});
    }else{
        inow++;
    }
     inow2++;
    $aBtn.eq(inow).addClass("active").siblings().removeClass("active");
    $oUl.animate({left:-inow*imgWidth})
}

到這里已經解決了一半了。那接下來就是切回第一張后陶珠,應該怎么做挟裂?就是一切歸零享钞,從頭開始揍诽,洗心革面诀蓉。。暑脆。
$oUl.animate({left:-inow*imgWidth}) 上動手腳渠啤。
添加一個回調函數。

回調函數

判斷 inow == 0 就是已經切換回第一張了添吗。
接下來要將第一張的position值改為static沥曹。
inow2也歸零。
這樣就可以循環(huán)切換啦啦啦碟联。妓美。。鲤孵。

自適應輪播圖效果結束壶栋。

不積跬步無以至千里

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市普监,隨后出現的幾起案子贵试,更是在濱河造成了極大的恐慌,老刑警劉巖凯正,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件毙玻,死亡現場離奇詭異,居然都是意外死亡廊散,警方通過查閱死者的電腦和手機桑滩,發(fā)現死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奸汇,“玉大人畔师,你說我怎么就攤上這事∈扰龋” “怎么了省有?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長贯涎。 經常有香客問我听哭,道長,這世上最難降的妖魔是什么塘雳? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任陆盘,我火速辦了婚禮,結果婚禮上败明,老公的妹妹穿的比我還像新娘隘马。我一直安慰自己,他們只是感情好妻顶,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布酸员。 她就那樣靜靜地躺著蜒车,像睡著了一般。 火紅的嫁衣襯著肌膚如雪幔嗦。 梳的紋絲不亂的頭發(fā)上酿愧,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機與錄音邀泉,去河邊找鬼嬉挡。 笑死,一個胖子當著我的面吹牛汇恤,可吹牛的內容都是我干的庞钢。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼因谎,長吁一口氣:“原來是場噩夢啊……” “哼焊夸!你這毒婦竟也來了?” 一聲冷哼從身側響起蓝角,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤阱穗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后使鹅,有當地人在樹林里發(fā)現了一具尸體揪阶,經...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年患朱,在試婚紗的時候發(fā)現自己被綠了鲁僚。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡裁厅,死狀恐怖冰沙,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情执虹,我是刑警寧澤拓挥,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站袋励,受9級特大地震影響侥啤,放射性物質發(fā)生泄漏。R本人自食惡果不足惜茬故,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一盖灸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧磺芭,春花似錦赁炎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽琅攘。三九已至,卻和暖如春松邪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背哨查。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工逗抑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寒亥。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓邮府,卻偏偏與公主長得像,于是被迫代替她去往敵國和親溉奕。 傳聞我的和親對象是個殘疾皇子褂傀,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內容