91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

jQuery 仿寫京東輪播廣告圖

發布時間:2020-07-23 21:33:01 來源:網絡 閱讀:1219 作者:frwupeng517 欄目:web開發

基本樣式:


HTML代碼:

<div class="container">
    <div class="list">
        <!--輪播廣告圖-->
        <ul class="listImg clearfix" >
            <li><a href="#"><img src="img/6.jpg" alt="圖片六"></a></li>
            <li><a href="#"><img src="img/1.jpg" alt="圖片一"></a></li>
            <li><a href="#"><img src="img/2.jpg" alt="圖片二"></a></li>
            <li><a href="#"><img src="img/3.jpg" alt="圖片三"></a></li>
            <li><a href="#"><img src="img/4.jpg" alt="圖片四"></a></li>
            <li><a href="#"><img src="img/5.jpg" alt="圖片五"></a></li>
            <li><a href="#"><img src="img/6.jpg" alt="圖片六"></a></li>
            <li><a href="#"><img src="img/1.jpg" alt="圖片一"></a></li>
        </ul>
        <!--中間的6個小按鈕-->
        <ul class="buttons clearfix">
            <li class="active"><span index="1"></span></li>
            <li><span index="2"></span></li>
            <li><span index="3"></span></li>
            <li><span index="4"></span></li>
            <li><span index="5"></span></li>
            <li><span index="6"></span></li>
        </ul>
        <!--左右點擊按鈕-->
        <a href="#" class="arrow" id="prev">&lt;</a>
        <a href="#" class="arrow" id="next">&gt;</a>
    </div>
</div>


CSS代碼:

*{margin:0; padding:0;}
ul{list-style:none;}
a{text-decoration:none;}
.clearfix{zoom:1;}
.clearfix:after{display:block; content:''; clear: both;}
.container{position:relative; width:790px; height:340px; margin:100px auto; overflow:hidden;}
.listImg{position:absolute; width:6320px; height:340px;}
.listImg li{float:left;}
.listImg li a img{width:100%;}
/*箭頭樣式*/
.arrow{ width:30px; height:60px; line-height:60px; text-align:center; background:rgba(0,0,0,.3); color:#fff; font-size: 2em;
        z-index:100; cursor:pointer; position:absolute; top:40%; display:none;
}
.arrow:hover{background:rgba(0,0,0,0.6);}
#prev{left:20px;}
#next{right:20px;}
.container:hover .arrow{display:block;} /*鼠標進入輪播圖才顯示兩個按鈕*/
/*小按鈕樣式*/
.buttons{position:absolute; bottom:20px; left:45%; z-index:100;}
.buttons li{float:left; margin-right:10px;}
.buttons li span{display:block; width:10px; height:10px; border-radius:50%; background:#fff; cursor:pointer;}
.buttons li.active span{background:#f00;}



第一步:點擊左右箭頭實現圖片左右滾動

每張圖片的寬度是790px,點擊左箭頭時,圖片向左移動,.listImg的left值會減790px;點擊右箭頭時,圖片向右移動,.listImg的left值會加790px

//點擊左箭頭
$('#prev').click(function(e){
    e.preventDefault();
    var left = parseInt($('.listImg').css('left'))-790;
    console.log(left);
    $('.listImg').css('left', left);
});
//點擊右箭頭
$('#next').click(function(e){
    e.preventDefault();
    var left = parseInt($('.listImg').css('left'))+790;
    console.log(left);
    $('.listImg').css('left', left);
});


以上代碼的重復量還是比較大的,點擊左右兩個箭頭,一個是加790,一個是減790,所以,可以封裝一個函數

//點擊左箭頭
$('#prev').click(function(e){
    e.preventDefault();
    play(-790);
});
//點擊右箭頭
$('#next').click(function(e){
    e.preventDefault();
    play(790);
});

function play(offset){
    var left = parseInt($('.listImg').css('left'))+offset;
    console.log(left);
    $('.listImg').css('left', left);
}



效果:

jQuery 仿寫京東輪播廣告圖


第二步:點擊左右箭頭無限滾動


從上例中可以看到,當 left值等于 -790px時,顯示第1張圖片,left值為0時,圖片列表加載到第1張圖片的附屬圖(圖六“每滿1000,立減100”),再次點擊,left變成790px 同時沒有圖片顯示,所以,當left大于 -790px時,要把left值變為-4740px,讓圖片跳到第6張


當left值等于-4740px時,圖片加載到第6張圖,當left值小于-4740px 時,圖片列表加載到第6張圖片的附屬圖(圖一“30天包退,180天包換”),之后就出現了空白,不顯示廣告圖。所以,當left值小于-4740px時,要把left值變成-790px,讓圖片跳到第1張

//點擊左箭頭
$('#prev').click(function(e){
    e.preventDefault();
    play(-790);
});
//點擊右箭頭
$('#next').click(function(e){
    e.preventDefault();
    play(790);
});

function play(offset){
    var lists = $('.listImg');
    var left = parseInt(lists.css('left'))+offset;
    lists.css('left', left);
    //當left值等于-790時,顯示的是第一張圖,點右箭頭,圖片右移
    //再次點擊時,圖片加載到第一張圖的附屬圖(圖6),再點就露白了
    // 所以left大于-790時,讓left變成-4740(跳到第6張圖)
    if(left>-790){
        lists.css('left',-4740);
    //當left值等于-4740時,顯示的是第六張圖,點擊左箭頭,圖片左移
    //再次點擊時,圖片加載到第六張圖的附屬圖(圖一),再點就露白了
    //所以left小于-4740時,讓left變成-790(跳到第1張圖)
    }else if(left<-4740){
        lists.css('left',-790);
    }
}


效果:

jQuery 仿寫京東輪播廣告圖



第三步:圖片滾動時,激活對應的小圓點


獲取所有的小圓點數組,點擊箭頭時,讓數組加1或減1,對應的小圓點加上active 這個class


var lists = $('.listImg');
//當前播放的是哪張圖片對應的小圓點
var index =1;
//獲取所有的小圓點
var btns = $('.buttons li');

//“激活”對應的小圓點
function showButton(){
    //btns的下標從0開始,index從1到6,共6個小圓點,實際的圖片下標是index-1
    btns.eq(index-1).addClass('active').siblings('.active').removeClass('active');
}

//點擊左箭頭
$('#prev').click(function(e){
    e.preventDefault();
    //向左時,index減1
    index-=1;
    showButton();
    play(-790);
});
//點擊右箭頭
$('#next').click(function(e){
    e.preventDefault();
    //向右時,index加1
    index+=1;
    showButton();
    play(790);
});


效果:

jQuery 仿寫京東輪播廣告圖


上圖中有一個問題,當點擊箭頭超過數組最大下標時,就沒有小圓點變紅了,而數組最大下標是5。所以,在點箭頭的時候需要對下標做一個判斷,index=6,就讓index=1;index=1,就讓index=6 (數組的index是0到5,小圓點的index是1到6,數組的index=小圓點index-1)


//點擊左箭頭
$('#prev').click(function(e){
    e.preventDefault();

    //index=1,就讓index=6,否則加1
    index==1?index=6:(index-=1);
    showButton();
    play(-790);
});
//點擊右箭頭
$('#next').click(function(e){
    e.preventDefault();

    //index=6,就讓index=1,否則減1
    index==6?index=1:(index+=1);
    showButton();
    play(790);
});


效果:

jQuery 仿寫京東輪播廣告圖



第四步:點擊小圓點,切換對應的廣告圖


圖片之所以能滾動,最主要是play方法中的 offset參數起了作用,右向滾動一張,則left值加上790px,因此,滾動三張,left值加上790px *3,反之亦然


同樣的道理,當小圓點默認在第一個時,點擊第3個小圓點時,要跳到第三張圖片,left值就是(3-1)*790,即 (targetIndex - index)*790 (targetIndex:要點擊哪個小圓點,index:當前的小圓點)

//點擊小圓點,切換圖片
btns.click(function(){
    //獲取被點擊的小圓點的自定義屬性index的值
    var targetIndex = parseInt($(this).children().attr('index'));
    console.log(targetIndex);
    //定義圖片的偏移量
    var offset = -790 * (targetIndex - index);

    play(offset);
    //更新當前的index
    index = targetIndex;
    showButton();
});


效果:

jQuery 仿寫京東輪播廣告圖


上圖中,當重復點一個小圓點的時候,程序還在不斷的獲取自定義的index值,也就是說還在不斷的去執行play方法,這個是完全沒有必要的。


這里可以做一個判斷

//點擊小圓點,切換圖片
btns.click(function(){
    //如果被點擊的小圓點已經是被選中了的那一個(簡單說就是重復點一個小圓點)
    // 而被選中的小圓點都會加上一個active
    if($(this).hasClass('active')){
        return; //直接退出點擊事件的方法
    }
    //獲取被點擊的小圓點的自定義屬性index的值
    var targetIndex = parseInt($(this).children().attr('index'));
    console.log(targetIndex);
    //定義圖片的偏移量
    var offset = -790 * (targetIndex - index);

    play(offset);
    //更新當前的index
    index = targetIndex;
    showButton();
});


效果:(反復點的時候,不再獲取index為4的值,即不再重復執行其它方法)

jQuery 仿寫京東輪播廣告圖



第五步:添加動畫,自動播放


頁面一加載完成,圖片就自動向左滑動,而向左滑動這個是可以通過點擊右箭頭實現的,所以我們需要定義一個啟動方法,在方法里面為右箭頭匹配點擊事件,并觸發play方法播放動畫

//間隔時間,多少毫秒播一次
var interval = 3000;

var timer;

//啟動動畫
function start() {
    timer = setInterval(function () {
        $('#next').trigger('click');
        play();
    }, interval);
}

start();


效果:

jQuery 仿寫京東輪播廣告圖



第六步:停止動畫


當鼠標進入廣告圖或者是點擊左右箭頭、小圓點的時候,動畫就應該終止

//停止動畫
function stop() {
    clearTimeout(timer);
}

$('.container').hover(stop, start); //鼠標移入停止,移出啟動

//點擊左箭頭
$('#prev').click(function(e){
    e.preventDefault();
    //終止動畫
    if(lists.is(':animated')){
        return;
    }

    //index=1,就讓index=6,否則加1
    index==1?index=6:(index-=1);
    showButton();
    play(-790);
});

//點擊右箭頭
$('#next').click(function(e){
    e.preventDefault();
    //終止動畫
    if(lists.is(':animated')){
        return;
    }

    //index=6,就讓index=1,否則減1
    index==6?index=1:(index+=1);
    showButton();
    play(790);
});

//點擊小圓點,切換圖片
btns.click(function(){
    //如果被點擊的小圓點已經是被選中了的那一個(簡單說就是重復點一個小圓點)
    // 而被選中的小圓點都會加上一個active
    if($(this).hasClass('active') || lists.is(':animated')){
        return; //直接退出點擊事件的方法
    }
    //獲取被點擊的小圓點的自定義屬性index的值
    var targetIndex = parseInt($(this).children().attr('index'));
    //定義圖片的偏移量
    var offset = -790 * (targetIndex - index);

    play(offset);
    //更新當前的index
    index = targetIndex;
    showButton();
});


效果:

jQuery 仿寫京東輪播廣告圖



當然,圖片滑動的時候,最好是能用上animate事件,有一個動畫的效果,而不是直接的切換某一張圖片到哪個位置上。


代碼匯總:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{margin:0; padding:0;}
        ul{list-style:none;}
        a{text-decoration:none;}
        .clearfix{zoom:1;}
        .clearfix:after{display:block; content:''; clear: both;}
        .container{position:relative; width:790px; height:340px; margin:100px auto; overflow:hidden;}
        .listImg{position:absolute; width:6320px; height:340px;}
        .listImg li{float:left;}
        .listImg li a img{width:100%;}
        /*箭頭樣式*/
        .arrow{ width:30px; height:60px; line-height:60px; text-align:center; background:rgba(0,0,0,.3); color:#fff; font-size: 2em;
                z-index:100; cursor:pointer; position:absolute; top:40%; display:none;
        }
        .arrow:hover{background:rgba(0,0,0,0.6);}
        #prev{left:20px;}
        #next{right:20px;}
        .container:hover .arrow{display:block;} /*鼠標進入輪播圖才顯示兩個按鈕*/
        /*小按鈕樣式*/
        .buttons{position:absolute; bottom:20px; left:45%; z-index:100;}
        .buttons li{float:left; margin-right:10px;}
        .buttons li span{display:block; width:10px; height:10px; border-radius:50%; background:#fff; cursor:pointer;}
        .buttons li.active span{background:#f00;}
    </style>
</head>
<body>
<div class="container">
    <div class="list">
        <!--輪播廣告圖-->
        <ul class="listImg clearfix" >
            <li><a href="#"><img src="img/6.jpg" alt="圖片六"></a></li>
            <li><a href="#"><img src="img/1.jpg" alt="圖片一"></a></li>
            <li><a href="#"><img src="img/2.jpg" alt="圖片二"></a></li>
            <li><a href="#"><img src="img/3.jpg" alt="圖片三"></a></li>
            <li><a href="#"><img src="img/4.jpg" alt="圖片四"></a></li>
            <li><a href="#"><img src="img/5.jpg" alt="圖片五"></a></li>
            <li><a href="#"><img src="img/6.jpg" alt="圖片六"></a></li>
            <li><a href="#"><img src="img/1.jpg" alt="圖片一"></a></li>
        </ul>
        <!--中間的6個小按鈕-->
        <ul class="buttons clearfix">
            <li class="active"><span index="1"></span></li>
            <li><span index="2"></span></li>
            <li><span index="3"></span></li>
            <li><span index="4"></span></li>
            <li><span index="5"></span></li>
            <li><span index="6"></span></li>
        </ul>
        <!--左右點擊按鈕-->
        <a href="#" class="arrow" id="prev">&lt;</a>
        <a href="#" class="arrow" id="next">&gt;</a>
    </div>
</div>

<script src="dist/jquery-1.8.3.min.js"></script>
<script>
    var lists = $('.listImg');

    //獲取所有的小圓點
    var btns = $('.buttons li');

    //當前播放的是哪張圖片對應的小圓點
    var index =1;

    //廣告圖片的張數
    var len = 6;

    //間隔時間,多少毫秒播一次
    var interval = 3000;

    var timer;


    //滾動圖片
    function play(offset){

        var left = parseInt(lists.css('left'))+offset;

        if (offset>0) {
            offset = '+=' + offset;
        }
        else {
            offset = '-=' + Math.abs(offset);
        }

        lists.animate({'left':offset},500,function(){
            if(left>-790){
                lists.css('left', -790*len);
            }else if(left< -790*len ){
                lists.css('left', -790);
            }
        })


    }
    //啟動動畫
    function start() {
        timer = setInterval(function () {
            $('#next').trigger('click');
            play();
        }, interval);
    }

    //停止動畫
    function stop() {
        clearTimeout(timer);
    }

    //點擊左箭頭
    $('#prev').click(function(e){
        e.preventDefault();

        if(lists.is(':animated')){
            return;
        }

        //index=1,就讓index=6,否則加1
        index==1?index=len:(index-=1);
        showButton();
        play(-790);
    });

    //點擊右箭頭
    $('#next').click(function(e){
        e.preventDefault();

        if(lists.is(':animated')){
            return;
        }

        //index=6,就讓index=1,否則減1
        index==len?index=1:(index+=1);
        showButton();
        play(790);
    });

    //“激活”對應的小圓點
    function showButton(){
        //btns的下標從0開始,index從1到6,共6個小圓點,實際的圖片下標是index-1
        btns.eq(index-1).addClass('active').siblings('.active').removeClass('active');
    }

    //點擊小圓點,切換圖片
    btns.click(function(){
        //如果被點擊的小圓點已經是被選中了的那一個(簡單說就是重復點一個小圓點)
        // 而被選中的小圓點都會加上一個active
        if($(this).hasClass('active') || lists.is(':animated')){
            return; //直接退出點擊事件的方法
        }
        //獲取被點擊的小圓點的自定義屬性index的值
        var targetIndex = parseInt($(this).children().attr('index'));
        //定義圖片的偏移量
        var offset = -790 * (targetIndex - index);

        play(offset);
        //更新當前的index
        index = targetIndex;
        showButton();
    });

    $('.container').hover(stop, start); //鼠標移入停止,移出啟動

    start();


</script>
</body>
</html>


以上僅僅是閑來無事整理的一個小demo,實際使用中,也可以使用類似 Swiper、Hammer等優秀的插件


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

苏尼特左旗| 永宁县| 武威市| 四会市| 电白县| 大安市| 佛冈县| 德保县| 高唐县| 揭西县| 夏邑县| 凤冈县| 梁河县| 司法| 昭苏县| 陈巴尔虎旗| 垫江县| 双峰县| 阆中市| 扶余县| 东港市| 绿春县| 丹棱县| 肇州县| 沙田区| 绩溪县| 志丹县| 寿阳县| 安陆市| 花莲市| 黑河市| 腾冲县| 襄樊市| 石城县| 正阳县| 从江县| 吉隆县| 拜城县| 邻水| 盐亭县| 驻马店市|