學(xué)習(xí)記錄:簡(jiǎn)單的焦點(diǎn)圖輪播效果

這次學(xué)習(xí)的是慕課網(wǎng)的視頻教程Tab選項(xiàng)卡切換效果,視頻教的是Tab選項(xiàng)卡切換效果,作業(yè)寫的是焦點(diǎn)圖輪播效果,這兩者基本原理是一樣的。
實(shí)現(xiàn)效果描述:隨著鼠標(biāo)滑過相對(duì)應(yīng)標(biāo)簽,對(duì)應(yīng)的內(nèi)容也進(jìn)行切換,鼠標(biāo)移開后,內(nèi)容會(huì)進(jìn)行自動(dòng)切換展示。
首先寫html,把展示內(nèi)容用列表標(biāo)簽進(jìn)行裝載,圖片和相對(duì)應(yīng)的文字分別裝在列表中,寫好基本的CSS樣式。

  <div class="wrap" id='wrap'>
    <ul id="pic">
      <li>![](images/54111cd9000174cd04900170.jpg)</li>
      <li>![](images/54111dac000118af04900170.jpg)</li>
      <li>![](images/54111d9c0001998204900170.jpg)</li>
      <li>![](images/54111d8a0001f41704900170.jpg)</li>
      <li>![](images/54111d7d00018ba604900170.jpg)</li>    
    </ul>
    <ol id="list">
      <li class="on">1</li>
      <li>2</li>
      <li>3</li>
      <li>4</li>
      <li>5</li>
    </ol>
  </div>

無論是TAB標(biāo)簽還是焦點(diǎn)圖輪播實(shí)現(xiàn)原理就是先設(shè)置活動(dòng)類樣式和普通類樣式,然后編寫事件函數(shù),當(dāng)事件發(fā)生時(shí)對(duì)元素使用活動(dòng)類樣式,否則就使用普通類樣式,在這個(gè)焦點(diǎn)圖例子里,圖片的切換使用了直接用腳本添加樣式的方式進(jìn)行設(shè)置,而文字的切換使用腳本調(diào)動(dòng)樣式表的方式進(jìn)行設(shè)置,具體例子為:

// 對(duì)元素添加類達(dá)到控制顯示
lilist[i].className="";
lilist[i].className = "on";
//直接對(duì)元素的樣式屬性display進(jìn)行設(shè)置控制顯示
liimg[i].style.display="none";
liimg[i].style.display = "block";

整個(gè)切換函數(shù)的原理是把除了目標(biāo)之外的其它同類隱藏,然后單獨(dú)對(duì)目標(biāo)進(jìn)行設(shè)置使之顯示:

function change(crindex){
    for(var i=0;i<lilist.length;i++){
        lilist[i].className="";
        liimg[i].style.display="none";
        }
    lilist[crindex].className = "on";
    liimg[crindex].style.display = "block";
    index = crindex; //將當(dāng)前索引值傳遞給全局索引
    }

在切換過程中的重點(diǎn)是索引的關(guān)聯(lián)和傳遞,圖片列表中的項(xiàng)目和文字列表中的項(xiàng)目是一一按順序?qū)?yīng)的。
手動(dòng)切換效果達(dá)到后,開始進(jìn)行自動(dòng)切換的編寫,主要是用到setInterval()函數(shù),先自定義一個(gè)播放函數(shù),然后用setInterval()函數(shù)每隔2秒運(yùn)行,并且當(dāng)列表歷遍完后會(huì)重頭開始?xì)v遍。

function autoplay(){ 
    index++;       
    if(index>=lilist.length){
        index=0;
        }
    change(index);
    }
timer = setInterval(autoplay,2000)

接著實(shí)現(xiàn)當(dāng)鼠標(biāo)滑過整個(gè)內(nèi)容時(shí)停止自動(dòng)播放,鼠標(biāo)離開整個(gè)容器時(shí)繼續(xù)播放下一張,這里重點(diǎn)是在上面的播放函數(shù)中一開始就讓全局索引數(shù)自加1,另外還要在切換函數(shù)最后將當(dāng)前切換的索引值傳遞給全局索引,這樣每次運(yùn)行播放函數(shù)時(shí)就會(huì)從下一張開始。

divwrap.onmouseover = function(){
    clearInterval(timer);
    }
divwrap.onmouseout = function(){
    timer = setInterval(autoplay,2000)
    }

至此一個(gè)簡(jiǎn)單的焦點(diǎn)圖輪播效果就寫完了,另外還可以對(duì)其添加其它擴(kuò)展比如鼠標(biāo)點(diǎn)擊才切換或者添加切換動(dòng)畫,可以多種組合靈活使用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容