第八周第三天筆記之輪播圖左右切換實(shí)例

輪播圖左右切換實(shí)例

  • 思路:
    1. 搭建頁面結(jié)構(gòu):創(chuàng)建固定寬度的外容器wrap闺兢,創(chuàng)建固定寬度的boxBanner卤妒,寬度超出wrap容器范圍息尺,利用left的變化來進(jìn)行左右切換域庇;
    2. 獲取元素
    3. 在boxBanner里面四張圖片的后面添加一張跟第一張一樣的圖片嵌戈,作為假圖片,完成boxBanner的瞬間移動(dòng)肉眼誤差听皿,同時(shí)一定要重新設(shè)置boxBanner的寬度熟呛;
    4. 創(chuàng)建全局變量n,作為圖片運(yùn)動(dòng)的left值設(shè)置尉姨,以及對(duì)應(yīng)的按鈕的設(shè)置惰拱,為最重要的值,通過n值的變化啊送,來跳轉(zhuǎn)位置偿短,及按鈕設(shè)置;
    5. autoMove函數(shù)的創(chuàng)建馋没,代表的是一個(gè)運(yùn)動(dòng)過程昔逗,從指定位置開始,在規(guī)定時(shí)間內(nèi)以什么樣的運(yùn)動(dòng)效果篷朵,到達(dá)目標(biāo)位置勾怒,然后做什么事情婆排;指的就是一個(gè)位置改變的過程;
    6. 圖片自動(dòng)輪播笔链,實(shí)質(zhì)就是創(chuàng)建一個(gè)定時(shí)器段只,在間隔時(shí)間內(nèi),不斷的改變位置鉴扫,調(diào)用autoMove函數(shù)赞枕;
    7. 焦點(diǎn)li元素按鈕,跟隨圖片自動(dòng)輪播時(shí)坪创,代表相對(duì)應(yīng)的按鈕顏色炕婶;
    8. 鼠標(biāo)移入移出事件,給外容器wrap添加莱预;
    9. 按鈕li元素添加點(diǎn)擊事件柠掂,點(diǎn)擊每個(gè)按鈕,就跳轉(zhuǎn)到相對(duì)應(yīng)的圖片依沮,通過判斷i值與n值的關(guān)系來設(shè)置涯贞;
    10. 左右按鈕a元素添加點(diǎn)擊事件,注意邊界值的判斷危喉;
  • 注意點(diǎn):
    • 全局變量n的設(shè)置宋渔,貫穿整個(gè)實(shí)例,通過n值的變化姥饰,改變boxBanner位置,達(dá)到輪播效果孝治;其中焦點(diǎn)按鈕跟隨設(shè)置列粪、焦點(diǎn)按鈕點(diǎn)擊事件、左右按鈕點(diǎn)擊事件都與n值相關(guān)聯(lián)谈飒;
    • autoMove函數(shù)中邊界點(diǎn)的判斷岂座,需要細(xì)細(xì)琢磨;
    • 焦點(diǎn)按鈕點(diǎn)擊事件中杭措,需注意n值與i值的關(guān)系费什,需細(xì)細(xì)思考;
  • 代碼:
    • HTML代碼:
     <!DOCTYPE html>
     <html lang="en">
     <head>
         <meta charset="UTF-8">
         <title>左右輪播圖實(shí)例</title>
         <style type="text/css">
             *{
                 margin: 0;
                 padding: 0;
                 list-style: none;
             }
             .wrap{
                 width: 750px;
                 height: 292px;
                 margin: 30px auto;
                 position: relative;
                 overflow: hidden;
             }
             .wrap .boxbanner{
                 position: absolute;
                 left: 0;
                 top: 0;
                 width: 3000px;
                 height: 292px;
             }
             .wrap .boxbanner img{
                 float: left;
                 width: 750px;
                 height: 292px;
                 vertical-align: middle;
             }
             .wrap ul{
                 position: absolute;
                 width: 140px;
                 left: 50%;
                 margin-left: -70px;
                 bottom: 10px;
             }
             .wrap ul li{
                 width: 20px;
                 height: 20px;
                 border-radius: 50%;
                 background-color: lightslategray;
                 float: left;
             }
             .wrap ul li+li{
                 margin-left: 20px;
             }
             .wrap ul li.active{
                 background-color: orangered;
             }
             .wrap a{
                 position: absolute;
                 width: 43px;
                 height: 67px;
                 top:50%;
                 margin-top: -30px;
                 background-image: url("image1/6.png");
                 background-repeat: no-repeat;
                 opacity: 0.5;
                 filter: alpha(opacity=50);
                 display: none;
             }
             .wrap a.Left{
                 left: 10px;
                 background-position: 0 0;
             }
             .wrap a.Right{
                 right: 10px;
                 background-position: -63px 0;
             }
             .wrap a:hover{
                 opacity: 1;
                 filter: alpha(opacity=100);
             }
         </style>
     </head>
     <body>
     <div class="wrap">
         <div class="boxbanner">
             <img src="image1/1.jpg" alt="">
             <img src="image1/2.jpg" alt="">
             <img src="image1/3.jpg" alt="">
             <img src="image1/4.jpg" alt="">
         </div>
         <ul>
             <li class="active"></li>
             <li></li>
             <li></li>
             <li></li>
         </ul>
         <a href="javascript:void(0);" class="Left"></a>
         <a href="javascript:void(0);" class="Right"></a>
     </div>
     <script src="utils.js"></script>
     <script src="moveEffect.js"></script>
     <script src="animatSuper.js"></script>
     <script src="banner.js"></script>
     </body>
     </html>
    
    • JS代碼:
     //1 獲取元素
     var oWrap=utils.getByClass("wrap",document)[0];
     var oboxBanner=utils.getByClass("boxbanner",oWrap)[0];
     var aImg=oboxBanner.getElementsByTagName("img");
     var aBtn=oWrap.getElementsByTagName("li");
     var Left=utils.getByClass("Left",oWrap)[0];
     var Right=utils.getByClass("Right",oWrap)[0];
     //2 在最后添加一張與第一張相同的圖片手素,調(diào)整寬度
     oboxBanner.innerHTML+='<img src="image1/1.jpg" alt="">';
     oboxBanner.style.width=3750+"px";
     //3 創(chuàng)建全局變量n鸳址,作為圖片運(yùn)動(dòng)的left值設(shè)置,及對(duì)應(yīng)的按鈕的設(shè)置
     var n=0;
     //4 圖片自動(dòng)輪播泉懦,開啟定時(shí)器自動(dòng)輪播
     var timer=setInterval(autoMove,2000);
     //autoMove是一個(gè)運(yùn)動(dòng)過程
     function autoMove() {
         //邊界值判斷
         if(n>=aImg.length-1){
             n=0;
             oboxBanner.style.left=0;
         }
         n++;
         //此處的n值為:1,2,3,4,1,2,3,4依次循環(huán)
         //oboxBanner.style.left=-n*750+"px";
         //移動(dòng)的效果用運(yùn)動(dòng)效果來實(shí)現(xiàn)稿黍,animate
         animate({
             ele:oboxBanner,
             duration: 500,
             effect:2,
             target:{
                 left:-n*750//此處left不能設(shè)置單位;
             }
         });
         bannerTip();
     }
     //5 焦點(diǎn)跟隨輪播
     function bannerTip() {
         for(var i=0; i<aBtn.length; i++){
             aBtn[i].className=i==n%4?"active":null;
         }
     }
     //6 鼠標(biāo)移入停止運(yùn)動(dòng)
     oWrap.onmouseover=function () {
         clearInterval(timer);
         Left.style.display=Right.style.display="block";
     };
     //7 鼠標(biāo)移出繼續(xù)運(yùn)動(dòng)
     oWrap.onmouseout=function () {
         timer=setInterval(autoMove,2000);
         Left.style.display=Right.style.display="none";
     };
     //8 點(diǎn)擊li元素時(shí)崩哩,顯示對(duì)應(yīng)的圖片
     handleChange();
     function handleChange() {
         for(var i=0; i<aBtn.length; i++){
             (function (index) {
                 aBtn[index].onclick=function () {
                     n=index-1;
                     autoMove();
                 }
             })(i);
         }
     }
     //9 左右按鈕點(diǎn)擊運(yùn)動(dòng)
     handleLeftRight();
     function handleLeftRight() {
         Left.onclick=function () {
             if(n<=0){
                 n=aImg.length-1;
                 oboxBanner.style.left=-n*750+"px";
             }
             n--;
             animate({
                 ele:oboxBanner,
                 duration: 500,
                 effect:2,
                 target:{
                     left:-n*750//此處left不能設(shè)置單位巡球;
                 }
             });
             bannerTip();
         };
         Right.onclick=function () {
             autoMove();
         }
     }
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末言沐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子酣栈,更是在濱河造成了極大的恐慌险胰,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件矿筝,死亡現(xiàn)場離奇詭異起便,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)跋涣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門缨睡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人陈辱,你說我怎么就攤上這事奖年。” “怎么了沛贪?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵陋守,是天一觀的道長。 經(jīng)常有香客問我利赋,道長水评,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任媚送,我火速辦了婚禮中燥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘塘偎。我一直安慰自己疗涉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布吟秩。 她就那樣靜靜地躺著咱扣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涵防。 梳的紋絲不亂的頭發(fā)上闹伪,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音壮池,去河邊找鬼偏瓤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛椰憋,可吹牛的內(nèi)容都是我干的硼补。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼熏矿,長吁一口氣:“原來是場噩夢啊……” “哼已骇!你這毒婦竟也來了离钝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤褪储,失蹤者是張志新(化名)和其女友劉穎卵渴,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鲤竹,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡浪读,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辛藻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碘橘。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖吱肌,靈堂內(nèi)的尸體忽然破棺而出痘拆,到底是詐尸還是另有隱情,我是刑警寧澤氮墨,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布纺蛆,位于F島的核電站,受9級(jí)特大地震影響规揪,放射性物質(zhì)發(fā)生泄漏桥氏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一猛铅、第九天 我趴在偏房一處隱蔽的房頂上張望字支。 院中可真熱鬧,春花似錦奸忽、人聲如沸堕伪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽刃跛。三九已至抠艾,卻和暖如春苛萎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背检号。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國打工腌歉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人齐苛。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓翘盖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親凹蜂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子馍驯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容