成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

前端實(shí)例練習(xí) - 輪播圖

wall2flower / 1388人閱讀

摘要:輪播圖代碼儲(chǔ)存在效果預(yù)覽初衷很多人在初學(xué)前端的時(shí)候都會(huì)問(wèn),如何入門(mén)前端同為在前端學(xué)習(xí)道路上,奮力追趕的一員,本人對(duì)于目前網(wǎng)絡(luò)上所能看到的入門(mén)級(jí)的教材并不太滿意。在這里本人整理了目前頁(yè)面上常見(jiàn)功能實(shí)現(xiàn)的具體實(shí)例。

輪播圖

代碼儲(chǔ)存在Github
效果預(yù)覽

初衷:很多人在初學(xué)前端的時(shí)候都會(huì)問(wèn),“如何入門(mén)前端?”
同為在前端學(xué)習(xí)道路上,奮力追趕的一員,本人對(duì)于目前網(wǎng)絡(luò)上所能看到的 “入門(mén)級(jí)” 的教材并不太滿意。學(xué)習(xí)一門(mén)新知識(shí),實(shí)例是尤其重要的。在這里本人整理了目前頁(yè)面上常見(jiàn)功能實(shí)現(xiàn)的具體實(shí)例。愿能為大家提供一些幫助。
希望能夠與大家互相分享,共同進(jìn)步。

效果預(yù)覽

HTML部分

創(chuàng)建輪播圖容器

添加多個(gè)輪播頁(yè)面

    

未來(lái)用來(lái)顯示輪播頁(yè)所在頁(yè)碼位置

為輪播頁(yè)面加上輪播圖片

添加 [前翻] [后翻] 按鈕

        
         
        
          
        

在輪播容器里面,我們?cè)谳啿ロ?yè)面之后再為容器加上“前翻” 和 “后翻” 按鈕。
通過(guò)這兩個(gè)按鍵我們可以控制輪播頁(yè)面向前翻,或者向后翻。
此處在標(biāo)簽里面是 UTF-8 字符,我們可以用這些字符來(lái)表示很多特殊符號(hào)。

延展閱讀: UTF-8 符號(hào)

添加圓點(diǎn)坐標(biāo)按鈕組

    
    

繼續(xù)在之前的代碼后面,為輪播容器加上圓點(diǎn)坐標(biāo)按鈕組(也就是輪播圖最下面的小圓點(diǎn)點(diǎn)),通過(guò)這些按鈕我們可以清楚的看到每張輪播圖片所在圖片組的位置,并且可以通過(guò)點(diǎn)擊按鈕,來(lái)快速切換到我們想要的位置。

到這里我們的HTML代碼就寫(xiě)完了,大家現(xiàn)在可以在瀏覽器里預(yù)覽一下。

怎么樣?很不像話吧。

接下來(lái),就讓我們開(kāi)始用CSS來(lái)進(jìn)一步完善它吧!

CSS 部分

重置CSS

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

margin, padding 默認(rèn)為0,將padding和border算入寬度

延展閱讀:box-sizing 屬性

為輪播容器設(shè)置樣式

/* 輪播圖容器 */
.slideshow-container {
  max-width: 800px;
  position: relative;       /*設(shè)置為相對(duì)定位,以讓子元素相對(duì)它進(jìn)行絕對(duì)定位*/
  margin: 0 auto;           /*居中*/
}

為輪播頁(yè)面設(shè)置樣式

.slide {
  display: none;     /*默認(rèn)為不顯示*/
}

.slide img {
    width: 100%;     /*寬度最大不超過(guò)父元素(輪播容器)*/
}

.slideIndex {        /*設(shè)置頁(yè)標(biāo)樣式*/
  color: #f2f2f2;
  font-size: 12px;
  padding: 8px 12px;
  position: absolute;
  top: 0;
}

為"前翻","后翻" 按鈕設(shè)置樣式

/* 前進(jìn) & 后退 */
.prev, .next {
  cursor: pointer;
  position: absolute;    /*在輪播容器內(nèi)絕對(duì)定位*/
  top: 50%;              /*在垂直方向調(diào)到中間*/
  margin-top: -22px;
  padding: 16px;
  color: white;
  font-weight: bold;
  font-size: 18px;
  transition: 0.6s ease; /*加入動(dòng)畫(huà)特效*/
}

.prev {
    left: 0;   
    border-radius: 0 3px 3px 0;
}


.next {
    right: 0;
    border-radius: 3px 0 0 3px;
}

/*當(dāng)鼠標(biāo)Hover時(shí),背景色改變,提升用戶體驗(yàn)*/
.prev:hover, .next:hover {
  background-color: rgba(0,0,0,0.8);
}

為按鈕組添加樣式

.dotGroup {
    text-align: center;      /*使按鈕組居中*/
    position: relative;      /*使其脫離文檔流,不會(huì)被圖片擋住*/
    margin-top: -30px;       /*向上移,使其出現(xiàn)在在圖片底端位置*/
}

.dot {                   
  cursor:pointer;
  height: 13px;
  width: 13px;
  margin: 0 2px;
  background-color: #bbb;
  border-radius: 50%;
  display: inline-block;
  transition: background-color 0.6s ease;
}

.active, .dot:hover { 
  background-color: #717171;
}

現(xiàn)在在瀏覽器里打開(kāi)再看一下。

是不是什么也看不到?

沒(méi)關(guān)系,我們馬上就要見(jiàn)證奇跡啦,接下來(lái)讓我完成最后的部分吧!

Javascript 部分

離開(kāi)全局

(function() {
    
})();

把JS代碼放到一個(gè)多帶帶的自調(diào)用匿名函數(shù)中。

擴(kuò)展閱讀:[深入理解(function() {
})();](http://www.jb51.net/article/5...

創(chuàng)建輪播對(duì)象

    var slideshow = {};       /*創(chuàng)建輪播對(duì)象*/
        
    slideshow.slides = document.getElementsByClassName("slide");   /*操作DOM獲得輪播頁(yè)面組*/
    slideshow.dots = document.getElementsByClassName("dot");       /*操作DOM獲得圓點(diǎn)按鈕組*/
    slideshow.prevBtn = document.getElementById("slideShowPrev");  /*操作DOM獲得前翻頁(yè)按鈕*/
    slideshow.nextBtn = document.getElementById("slideShowNext");  /*操作DOM獲得后翻頁(yè)按鈕*/

顯示目標(biāo)頁(yè)面

    /*顯示指定輪播頁(yè)面*/
    slideshow.showSlide = function(num) {  /*num 目標(biāo)頁(yè)面在頁(yè)面組中的位置*/
        var index,
            slides = this.slides,         
            dots = this.dots,
            slidesLength = slides.length,
            dotsLength = dots.length;
        
        /*num值在范圍內(nèi)輪環(huán),以此來(lái)實(shí)現(xiàn)輪播*/
        if(num > slidesLength) {     /*當(dāng)超過(guò)最大值,num返回第一個(gè)*/
            num = 1;
        } else if(num < 1) {
            num = slidesLength;      /*當(dāng)超出最小值,num提升至第一個(gè)*/
        }
        
        /*關(guān)閉全部輪播頁(yè)面顯示*/
        for(index = 0; index < slidesLength; index++) {  
            slides[index].style.display = "none";
        }
        
        /*清除所有圓點(diǎn)按鈕的 ".active" */ 
        for(index = 0; index < dotsLength; index++) {
            dots[index].classList.remove("active");
        }
        
        /*使目標(biāo)頁(yè)面顯示,相對(duì)應(yīng)圓點(diǎn)按鈕添加 ".active" */
        /*因?yàn)閿?shù)組從0開(kāi)始,所以此處 num-1 代表相對(duì)應(yīng)的index*/
        slides[num - 1].style.display = "block"; 
        dots[num - 1].classList.add("active");
    }

為前翻,后翻按鈕添加功能

    /*通過(guò)前翻,后翻按鈕切換頁(yè)面  
    (num = 1:前翻)(num = -1:后翻)*/
    slideshow.changeSlide = function(num) {
        var index,
            currentSlideIndex,
            slides = this.slides,
            slidesLength = slides.length;

        for(index = 0; index < slides.length; index++) {
            if(slides[index].style.display == "block") {  /*檢測(cè)到正在顯示的頁(yè)面的index*/
                currentSlideIndex = index + 1;            /*因?yàn)橄聵?biāo)從0開(kāi)始,所有此處 + 1*/
                 break;                                   /*此時(shí) currentSlideIndex 為函數(shù)調(diào)用時(shí),輪播圖正在顯示的頁(yè)面的index*/
            }
        }
        
        this.showSlide(currentSlideIndex += num);         /*與num值相加,作為參數(shù)調(diào)用 showSlide()*/
    }

自動(dòng)輪播

    /*自動(dòng)輪播功能*/
    slideshow.automaticShow = function() {
        var index,
            currentSlideIndex,
            slides = this.slides,
            slidesLength = slides.length,
            that = this;
        
        /*循環(huán)執(zhí)行代碼,每隔三秒切換至下一張頁(yè)面*/
        var autoLoop = setInterval(function() {              
            for(index = 0; index < slidesLength; index++) {
                if(slides[index].style.display == "block") { /*獲得正在顯示的頁(yè)面的index*/
                    currentSlideIndex = index + 1;
                    break;
                }
            }
            that.showSlide(currentSlideIndex + 1);
        }, 3000);
    }

添加事件監(jiān)聽(tīng)

    /*添加事件監(jiān)聽(tīng)*/
    slideshow.addHandler = function() {
        var index,
            prevBtn = this.prevBtn,
            nextBtn = this.nextBtn,
            dots = this.dots,
            dotsLength = dots.length,
            that = this;      /*此處that為slideshow對(duì)象*/

        prevBtn.addEventListener("click", function() {
            that.changeSlide(-1); /*作用域改變,this不再指slideshow對(duì)象*/
        }, false);
    
        nextBtn.addEventListener("click", function() {
            that.changeSlide(1);
        }, false);
        
        /*點(diǎn)擊圓點(diǎn)按鈕,切換至對(duì)應(yīng)頁(yè)面*/
        for(index = 0; index < dotsLength; index++) {
            (function(index) {  /*閉包*/
                dots[index].addEventListener("click", function() {
                    that.showSlide(index + 1); /*index從0開(kāi)始,所以 + 1*/
                }, false);
            })(index);  
        }
    }

擴(kuò)展閱讀: 淺談JavaScript for循環(huán) 閉包

初始化

    /*初始化*/
    slideshow.init = function() {
        this.showSlide(1);    /*初始默認(rèn)頁(yè)面*/
        this.automaticShow();
        this.addHandler();
    }

調(diào)用

slideshow.init();

好啦,現(xiàn)在所有的代碼都寫(xiě)完啦!

趕快打開(kāi)瀏覽器,看看效果吧!

在這里,只是給大家提供一種思路,參考。
具體的實(shí)現(xiàn),每個(gè)人都可以有不同的方法。
請(qǐng)大家趕快發(fā)揮想象,把你最想實(shí)現(xiàn)的功能,在電腦敲出來(lái)吧!

參考自w3cschools

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/86923.html

相關(guān)文章

  • 【連載】前端個(gè)人文章整理-從基礎(chǔ)到入門(mén)

    摘要:個(gè)人前端文章整理從最開(kāi)始萌生寫(xiě)文章的想法,到著手開(kāi)始寫(xiě),再到現(xiàn)在已經(jīng)一年的時(shí)間了,由于工作比較忙,更新緩慢,后面還是會(huì)繼更新,現(xiàn)將已經(jīng)寫(xiě)好的文章整理一個(gè)目錄,方便更多的小伙伴去學(xué)習(xí)。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個(gè)人前端文章整理 從最開(kāi)始萌生寫(xiě)文章的想法,到著手...

    madthumb 評(píng)論0 收藏0
  • task0002(四)- 練習(xí):數(shù)據(jù)處理、輪播及交互

    摘要:獲取下一個(gè)元素節(jié)點(diǎn),存在的話,取消現(xiàn)有選中狀態(tài),設(shè)置下一個(gè)元素節(jié)點(diǎn)為選擇中,調(diào)用運(yùn)動(dòng)框架實(shí)現(xiàn)動(dòng)畫(huà),添加定時(shí)器,調(diào)用該函數(shù),實(shí)現(xiàn)自動(dòng)播放。移出時(shí),開(kāi)啟定時(shí)器,繼續(xù)輪播。輪播間隔時(shí)間單位為毫秒,默認(rèn)為,在內(nèi)部,以下部分進(jìn)行修改或添加。 轉(zhuǎn)載自我的個(gè)人博客 歡迎大家批評(píng)指正 包括5部分: 小練習(xí)1-處理用戶輸入 小練習(xí)2-日期對(duì)象的使用 小練習(xí)3:輪播圖 小練習(xí)4:輸入提示框 小練習(xí)...

    cnTomato 評(píng)論0 收藏0
  • task0002(四)- 練習(xí):數(shù)據(jù)處理、輪播及交互

    摘要:獲取下一個(gè)元素節(jié)點(diǎn),存在的話,取消現(xiàn)有選中狀態(tài),設(shè)置下一個(gè)元素節(jié)點(diǎn)為選擇中,調(diào)用運(yùn)動(dòng)框架實(shí)現(xiàn)動(dòng)畫(huà),添加定時(shí)器,調(diào)用該函數(shù),實(shí)現(xiàn)自動(dòng)播放。移出時(shí),開(kāi)啟定時(shí)器,繼續(xù)輪播。輪播間隔時(shí)間單位為毫秒,默認(rèn)為,在內(nèi)部,以下部分進(jìn)行修改或添加。 轉(zhuǎn)載自我的個(gè)人博客 歡迎大家批評(píng)指正 包括5部分: 小練習(xí)1-處理用戶輸入 小練習(xí)2-日期對(duì)象的使用 小練習(xí)3:輪播圖 小練習(xí)4:輸入提示框 小練習(xí)...

    趙春朋 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<