輪播的實(shí)現(xiàn)

題目1 輪播的實(shí)現(xiàn)原理是怎樣的慢洋?如果讓你來(lái)實(shí)現(xiàn)副编,你會(huì)抽象出哪些函數(shù)(or接口供使用?(比如 play())

  • 和iOS的實(shí)現(xiàn)原理一樣,在要循環(huán)輪播的一組圖片的第一張加上此組圖片的最后一張涝影,在此組圖片的最后一張后面加上第一張。這樣就當(dāng)用戶(hù)從第一張向左滾動(dòng)時(shí)争占,看到的此組最后一張圖片燃逻,其實(shí)是你添加的此組最后一張圖片,等到滾動(dòng)完成后臂痕,直接改變位置(用戶(hù)是看不到這個(gè)效果的)伯襟,這時(shí)候才真正是此組最后一張圖片。最后一張向后滾動(dòng)如是握童。
  • 設(shè)置向下一張滾動(dòng)的方法playNext()
  • 設(shè)置向上一張滾動(dòng)的方法playPre()
  • 設(shè)置顯示當(dāng)前頁(yè)數(shù)的方法setCurrentPage()

題目2:

<!doctype html>
<html>

<head>
    <meta charset="utf-8">
    <title>gaoyang</title>
    <style>
        .contain {
            position: relative;
            width: 500px;
            height: 400px;
            margin: 50px auto;
            overflow: hidden;
        }
        
        .cycle {
            position: absolute;
            margin: 0;
            list-style: none;
            padding: 0;
            width: 3000px;
            height: 100%;
            overflow: hidden;
        }
        
        .cycle>li {
            width: 500px;
            height: 100%;
            margin: 0;
            padding: 0;
            float: left;
            font-size: 0;
        }
        
        .cycle>li img {
            width: 100%;
            height: 100%;
        }
        
        .btn {
            display: inline-block;
            position: absolute;
            color: #fff;
            text-decoration: none;
            width: 60px;
            height: 60px;
            border-radius: 30px;
            background: #333;
            opacity: 0.7;
            text-align: center;
            font-size: 25px;
            top: 170px;
        }
        
        .btn-pre {
            left: 20px;
        }
        
        .btn-next {
            right: 20px;
        }
        
        .btn span {
            display: block;
            margin-top: 8px;
        }
        
        .page {
            position: absolute;
            width: 100%;
            bottom: 20px;
            margin: 0;
            padding: 0;
            list-style: none;
            text-align: center;
        }
        
        .page>li {
            display: inline-block;
            margin: 5px;
            padding: 0;
            /*float: left;*/
            width: 20px;
            height: 6px;
            background-color: #333;
            border-radius: 5px;
            cursor: pointer;
            font-size: 0;
        }
        
        .page>li>a {
            display: inline-block;
            width: 100%;
            height: 100%;
            text-decoration: none;
        }
        
        .page>li.active {
            background-color: #fff;
        }
    </style>
</head>

<body>
    <div class="contain">
        <ul class='cycle'>
            <li>
                <a href="javascript:;">![](http://upload-images.jianshu.io/upload_images/1909214-76cf0df54c6a8bc1.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)</a>
            </li>
            <li>
                <a href="javascript:;">![](http://upload-images.jianshu.io/upload_images/1909214-3588f8ad9708d2ab.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)</a>
            </li>
            <li>
                <a href="javascript:;">![](http://upload-images.jianshu.io/upload_images/1909214-eb53bcee7eb6b277.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)</a>
            </li>
            <li>
                <a href="javascript:;">![](http://upload-images.jianshu.io/upload_images/1909214-080e4fa82be772c5.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)</a>
            </li>
            <li>
                <a href="javascript:;">![](http://upload-images.jianshu.io/upload_images/1909214-76cf0df54c6a8bc1.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)</a>
            </li>
            <li>
                <a href="javascript:;">![](http://upload-images.jianshu.io/upload_images/1909214-3588f8ad9708d2ab.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)</a>
            </li>
        </ul>
        <a href="javascript:;" class="btn btn-pre"><span><</span></a>
        <a href="#" class="btn btn-next"><span>></span></a>
        <ul class="page">
            <li class="active">
                <!--<a href="javascript:;"></a>-->
            </li>
            <li>
                <!--<a href="javascript:;"></a>-->
            </li>
            <li>
                <!--<a href="javascript:;"></a>-->
            </li>
            <li>
                <!--<a href="javascript:;"></a>-->
            </li>
        </ul>
    </div>
    <script src="jquery.js"></script>
    <script>
        var $cycle = $('.cycle');
        $cycle.css('left', '-500px');
        var $btnNext = $('.btn.btn-next');
        var $btnPre = $('.btn.btn-pre');
        var $pageCon = $('.page');
        var currentPage = 0;
        var continueP = true;

        //點(diǎn)擊下一張
        $btnNext.on('click', function (e) {
            e.preventDefault()
            playNext();
        })

        //點(diǎn)擊上一張
        $btnPre.on('click', function () {
            playPre();
        })

        //點(diǎn)擊page跳到相對(duì)應(yīng)圖片
        $('.page>li').on('click', function () {
            var index = $(this).index();
            playPage(index);
        })


        function playPage(index) {
            continueP = false;
            $cycle.animate({ left: -(index + 1) * 500 }, function () {
                currentPage = index;
                continueP = true;
                pageControll();
            })
        }

        function playNext(n) {
            if (!continueP) {
                return;
            };
            continueP = false;
            $cycle.animate({ left: '-=500' }, function () {
                currentPage++;
                if (currentPage === $cycle.children().length - 2) {
                    $cycle.css('left', '-500px');
                    currentPage = 0;
                }
                continueP = true;
                pageControll();
            })


        }


        function playPre(n) {
            if (!continueP) {
                return;
            };
            continueP = false;
            $cycle.animate({ left: '+=500' }, function () {
                currentPage--;
                if (currentPage === -1) {
                    $cycle.css('left', -($cycle.children().length - 2) * 500);
                    currentPage = 3;
                }
                continueP = true;
                pageControll();
            })

        }

        function pageControll() {
            $pageCon.children()
                .removeClass('active')
                .eq(currentPage)
                .addClass('active');
        }
    </script>
</body>

</html>

題目3:

<!doctype html>
<html>

<head>
    <meta charset="utf-8">
    <title>gaoyang</title>
    <style>
        .contain {
            position: relative;
            width: 500px;
            height: 400px;
            margin: 50px auto;
            overflow: hidden;
        }
        
        .cycle {
            position: relative;
            margin: 0;
            list-style: none;
            padding: 0;
            width: 500px;
            height: 100%;
            overflow: hidden;
        }
        
        .cycle>li {
            position: absolute;
            width: 500px;
            height: 100%;
            margin: 0;
            padding: 0;
            /*float: left;*/
            font-size: 0;
            z-index: -2;
            display: none;
        }
        
        .cycle>li.active {
            display: block;
        }
        
        .cycle>li img {
            width: 100%;
            height: 100%;
        }
        
        .btn {
            display: inline-block;
            position: absolute;
            color: #fff;
            text-decoration: none;
            width: 60px;
            height: 60px;
            border-radius: 30px;
            background: #333;
            opacity: 0.7;
            text-align: center;
            font-size: 25px;
            top: 170px;
        }
        
        .btn-pre {
            left: 20px;
        }
        
        .btn-next {
            right: 20px;
        }
        
        .btn span {
            display: block;
            margin-top: 8px;
        }
        
        .page {
            position: absolute;
            width: 100%;
            bottom: 20px;
            margin: 0;
            padding: 0;
            list-style: none;
            text-align: center;
        }
        
        .page>li {
            display: inline-block;
            margin: 5px;
            padding: 0;
            /*float: left;*/
            width: 20px;
            height: 6px;
            background-color: #333;
            border-radius: 5px;
            cursor: pointer;
            font-size: 0;
        }
        
        .page>li>a {
            display: inline-block;
            width: 100%;
            height: 100%;
            text-decoration: none;
        }
        
        .page>li.active {
            background-color: #fff;
        }
    </style>
</head>

<body>
    <div class="contain">
        <ul class='cycle'>
            <li class="active">
                <a href="javascript:;">![](http://upload-images.jianshu.io/upload_images/1909214-3588f8ad9708d2ab.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)</a>
            </li>
            <li>
                <a href="javascript:;">![](http://upload-images.jianshu.io/upload_images/1909214-d88fc49c7f1f8879.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)</a>
            </li>
            <li>
                <a href="javascript:;">![](http://upload-images.jianshu.io/upload_images/1909214-080e4fa82be772c5.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)</a>
            </li>
            <li>
                <a href="javascript:;">![](http://upload-images.jianshu.io/upload_images/1909214-24a354ffde9f653e.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)</a>
            </li>
        </ul>
        <a href="javascript:;" class="btn btn-pre"><span><</span></a>
        <a href="#" class="btn btn-next"><span>></span></a>
        <ul class="page">
            <li class="active">
                <!--<a href="javascript:;"></a>-->
            </li>
            <li>
                <!--<a href="javascript:;"></a>-->
            </li>
            <li>
                <!--<a href="javascript:;"></a>-->
            </li>
            <li>
                <!--<a href="javascript:;"></a>-->
            </li>
        </ul>
    </div>
    <script src="jquery.js"></script>
    <script>
        var $cycle = $('.cycle');
        var $btnNext = $('.btn.btn-next');
        var $btnPre = $('.btn.btn-pre');
        var $pageCon = $('.page');
        var currentPage = 0;
        var continueP = true;
        var timer;
        var clearTimer;
        //開(kāi)始計(jì)時(shí)
        setIn();

        //點(diǎn)擊下一張
        $btnNext.on('click', function (e) {
            e.preventDefault()
            playNext();
            clearIn();
        })

        //點(diǎn)擊上一張
        $btnPre.on('click', function () {
            playPre();
            clearIn();
        })

        //點(diǎn)擊page跳到相對(duì)應(yīng)圖片
        $('.page>li').on('click', function () {
            var index = $(this).index();
            playPage(index);
            clearIn();
        })


        function playPage(index) {
            $cycle.children().eq(currentPage).fadeOut(800)
            currentPage = index;
            $cycle.children().eq(currentPage).fadeIn(800, function () {
                continueP = true;
                pageControll();

                if (clearTimer === timer) {
                    setIn();
                }

            })
        }

        function playNext(n) {
            if (!continueP) {
                return;
            };
            continueP = false;
            $cycle.children().eq(currentPage).fadeOut(800)
            currentPage++;
            if (currentPage === $cycle.children().length) {

                currentPage = 0;
            }
            $cycle.children().eq(currentPage).fadeIn(800, function () {
                continueP = true;
                pageControll();
                if (clearTimer === timer) {
                    setIn();
                }


            })
        }

        function playPre(n) {
            if (!continueP) {
                return;
            };
            continueP = false;
            $cycle.children().eq(currentPage).fadeOut(800)
            currentPage--;
            if (currentPage === -1) {

                currentPage = 3;
            }
            $cycle.children().eq(currentPage).fadeIn(800, function () {
                continueP = true;
                pageControll();

                if (clearTimer === timer) {
                    setIn();
                }

            })
        }

        function pageControll() {
            $pageCon.children()
                .removeClass('active')
                .eq(currentPage)
                .addClass('active');
        }
        function setIn() {
            timer = setInterval(function () {
                playNext();
            }, 3000);
        }
        function clearIn() {
            clearTimer = timer;
            clearInterval(timer)
        }
    </script>
</body>

</html>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末姆怪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌稽揭,老刑警劉巖俺附,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異溪掀,居然都是意外死亡事镣,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)揪胃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)璃哟,“玉大人,你說(shuō)我怎么就攤上這事喊递∷嫔粒” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵册舞,是天一觀的道長(zhǎng)蕴掏。 經(jīng)常有香客問(wèn)我,道長(zhǎng)调鲸,這世上最難降的妖魔是什么盛杰? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮藐石,結(jié)果婚禮上即供,老公的妹妹穿的比我還像新娘。我一直安慰自己于微,他們只是感情好逗嫡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著株依,像睡著了一般驱证。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上恋腕,一...
    開(kāi)封第一講書(shū)人閱讀 51,708評(píng)論 1 305
  • 那天抹锄,我揣著相機(jī)與錄音,去河邊找鬼荠藤。 笑死伙单,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的哈肖。 我是一名探鬼主播吻育,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼淤井!你這毒婦竟也來(lái)了布疼?” 一聲冷哼從身側(cè)響起摊趾,我...
    開(kāi)封第一講書(shū)人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎游两,沒(méi)想到半個(gè)月后严就,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡器罐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年梢为,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片轰坊。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡铸董,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肴沫,到底是詐尸還是另有隱情粟害,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布颤芬,位于F島的核電站悲幅,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏站蝠。R本人自食惡果不足惜汰具,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望菱魔。 院中可真熱鬧留荔,春花似錦、人聲如沸澜倦。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)藻治。三九已至碘勉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間桩卵,已是汗流浹背验靡。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吸占,地道東北人晴叨。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓凿宾,卻偏偏與公主長(zhǎng)得像矾屯,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子初厚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

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

  • 題目1:輪播的實(shí)現(xiàn)原理是怎樣的件蚕?如果讓你來(lái)實(shí)現(xiàn)孙技,你會(huì)抽象出哪些函數(shù)(or接口)供使用?(比如 play()) 滾動(dòng)...
    撫年華輕過(guò)閱讀 402評(píng)論 0 0
  • 題目1: 輪播的實(shí)現(xiàn)原理是怎樣的排作?如果讓你來(lái)實(shí)現(xiàn)牵啦,你會(huì)抽象出哪些函數(shù)(or接口)供使用?(比如 play()) 左...
    cctosuper閱讀 249評(píng)論 0 0
  • 輪播的實(shí)現(xiàn)原理妄痪? 以四個(gè)圖片的輪播為例html部分:圖片存放在ul li標(biāo)簽內(nèi)哈雏,并使用一個(gè)div包裹ulcss部分...
    放風(fēng)箏的小小馬閱讀 615評(píng)論 0 0
  • 題目1: 輪播的實(shí)現(xiàn)原理是怎樣的?如果讓你來(lái)實(shí)現(xiàn)衫生,你會(huì)抽象出哪些函數(shù)(or接口)供使用裳瘪?(比如 play()) 原...
    魔王卡卡閱讀 157評(píng)論 0 0
  • 題目1: 輪播的實(shí)現(xiàn)原理是怎樣的?如果讓你來(lái)實(shí)現(xiàn)罪针,你會(huì)抽象出哪些函數(shù)(or接口)供使用彭羹?(比如 play()) 橫...
    饑人谷_js_chen閱讀 401評(píng)論 0 0