国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

jquery——左右按鈕點擊切換一組圖片功能

2024-04-27 15:02:24
字體:
來源:轉載
供稿:網友

一、最終效果

二、功能分析

1、需求分析

點擊左邊PRe按鈕,顯示前面三個圖片,點擊右邊的next按鈕,顯示后面的一組(三個)圖片。初始化只顯示next按鈕,到最后一組只顯示pre按鈕,中間過程兩按鈕都顯示。

效果圖是最終效果有做響應式,但這不是重點,不做介紹。

2、html結構分析

 <div class="activity" id="activity-slide">        <a href="javascr class="pg_left ps_pre"></a>        <a href="Javascript:void(0)" class="pg_right ps_next" ></a>          <ul class="clearfix">            <li><a href="javascript:;"><img src="images/activity01-1410.jpg"></a></li>            <li><a href="javascript:;"><img src="images/activity02-1410.jpg"></a></li>            <li><a href="javascript:;"><img src="images/activity03-1410.jpg"></a></li>            <li><a href="javascript:;"><img src="images/activity03-1410.jpg"></a></li>            <li><a href="javascript:;"><img src="images/activity02-1410.jpg"></a></li>      </ul></div>

 #activity-slide是整個幻燈的入口,后面會將其作為參數來調用幻燈功能。

 兩個按鈕ps_pre和ps_next將添加click事件響應點擊切換功能。

 3、功能分析

因為左右切換都是三個為一組的切換,如果li總個數不是3的倍數時,需要增加li節點填滿。

//需要追加的li節點個數var addli = 0;//一組切換3個livar num=3;var lisize = a.find("ul li").size();//獲取li個數//判斷需要添加的li節點數量var reminder=lisize%num;if(lisize%num!=0){addli = num-reminder;}else{addli = 0;}addlist();

上面是判斷得到需要追加的個數lisize,然后調用addlist追加。

addlist如下,從ul的第一個li開始復制,需要幾個就復制出幾個節點追加。節點追加完畢后重新計算ul的寬度。

        function addlist(){            for(i=0;i<addli;i++){                var html = a.find("ul li").eq(i).html();                a.find("ul").append("<li>"+html+"</li>");                }            a.find("ul").CSS({"width":(w_li+margin_li*2)*(lisize+addli)});        }

現在準備工作已經完成了。接下來就是給按鈕添加響應事件。在幻燈切換時涉及到左右按鈕的顯示和隱藏,所以先說這個按鈕顯示功能,將此分裝成一個函數btnshow。

        /***        參數說明:        now:當前是第幾組,默認是0        c:總共有幾組        d:初始化時li的個數        e:每組顯示li個數        ***/        function btnshow(now,c,d,e){            if(d<=e){//如果初始化時li的個數小于一組要顯示的數,則不顯示pre和next按鈕                a.find(".ps_next").hide();                a.find(".ps_pre").hide();            }else if(now==0){//初始化now=0,顯示第一組,只顯示next                a.find(".ps_next").show();                a.find(".ps_pre").hide();                }else if(now==c-1){//顯示到最后一組,只顯示pre                a.find(".ps_next").hide();                a.find(".ps_pre").show();                }else{//顯示中間組,pre和next都需要顯示                a.find(".ps_next").show();                a.find(".ps_pre").show();            }        }

 接下來幻燈切換。這里a是傳入的參數,也就是 #activity-slide。給它下面的所以的pre和next添加響應。

向前一組,組數now減一,now是幾,就讓ul的margin-left為負幾倍的組寬(即3倍的(li寬度+margin寬度)),然后顯示對于按鈕即可。

向后滑動一組li同理。

        function photoscroll(){            a.find(".ps_pre").on("click",function(){//console.log(num);                    now--;                if(now >= 0){                                      a.find("ul").animate({"margin-left":-now*num*(w_li+margin_li*2)});                    btnshow(now,parseInt((lisize+addli)/num),lisize,num);                }            });            a.find(".ps_next").on("click",function(){//console.log(num);                    now++;                if(now < (lisize+addli)/num){                        a.find("ul").animate({"margin-left":-now*num*(w_li+margin_li*2)});                    btnshow(now,parseInt((lisize+addli)/num),lisize,num);                }                });                btnshow(now,parseInt((lisize+addli)/num),lisize,num);                }

4、問題

可能是jquery寫的原因,加了瀏覽器縮放尺寸響應后點擊切換按鈕響應有延時。

三、代碼

1、用到圖片

2、完整代碼

完整代碼

<!DOCTYPE HTML><html><head><meta charset="utf-8"><title></title><link rel="stylesheet" type="text/css" href="css/style.css"><script>window.onresize=function(){    var winWidth = document.body.clientWidth;    if(winWidth <=1180){        body.className="grid-960";     }else  if (winWidth<= 1410){        body.className="grid-1180";     }else if (winWidth>1410){        body.className="grid-1410";     }else {        alert("do not know!");    }}</script></head><body id="body" class=""><script>//初始化狀態顯示樣式判斷,放在body后面var winWidth = document.body.clientWidth;if (winWidth <=1180){    body.className="grid-960"; }else  if (winWidth<= 1410){    body.className="grid-1180"; }else if (winWidth>1410){    body.className="grid-1410"; }else {    alert("do not know!");}</script><div class="wapper">        <div class="section">        <h2 class="title">熱門活動</h2>        <div class="activity" class="movie" id="activity-slide">            <a href="javascript:void(0)" class="pg_left ps_pre"></a>            <a href="javascript:void(0)" class="pg_right ps_next" ></a>            <ul class="clearfix">                <li><a href="javascript:;"><img src="images/activity01-1410.jpg"></a></li>                <li><a href="javascript:;"><img src="images/activity02-1410.jpg"></a></li>                <li><a href="javascript:;"><img src="images/activity03-1410.jpg"></a></li>                <li><a href="javascript:;"><img src="images/activity03-1410.jpg"></a></li>                <li><a href="javascript:;"><img src="images/activity02-1410.jpg"></a></li>            </ul>        </div>    </div></div></body></html><script src="http://code.jquery.com/jquery-latest.js"></script><script>//首頁圖片滾動切換(function($){    $.photolist=function(a){                var w_li = a.find("li").width();        var h_li = a.find("li").height();        var margin_li=parseInt(a.find("li").css("marginLeft"));        var now = 0;        var num = 0;        var addli = 0;        var lisize = a.find("ul li").size();        var htmlall = a.find("ul").html();                //判斷每次滾動數量        /*        var w_body = $("body").width();        if(w_body <=1170){            var num = 3;        }else if(w_body<= 1380){            var num = 4;        }else if(w_body>1380){            var num = 5;        }        */        var num=3;                //判斷需要添加的li節點數量        var reminder=lisize%num;        if(lisize%num!=0){addli = num-reminder;}        else{addli = 0;}        addlist();        //點擊滾動事件        photoscroll();                $(window).resize(function(){            //location.reload();            now = 0;            addli = 0;            a.find("ul").html(htmlall);//html內容還原初始值            a.find(".ps_next").show();//按鈕樣式初始化            a.find(".ps_pre").hide();            //判斷每次滾動數量            /*            var w_body = $("body").width();            if(w_body <=1170){                var num = 3;            }else if(w_body<= 1380){                var num = 4;            }else if(w_body>1380){                var num = 5;            }            */            var num=3;            //判斷需要添加的li節點數量            var reminder=lisize%num;            if(lisize%num!=0){addli = num-reminder;}            else{addli = 0;}            addlist();            w_li = a.find("li").width();            margin_li=parseInt(a.find("li").css("marginLeft"));            a.find("ul").css({"width":(w_li+margin_li*2)*(lisize+addli)});            a.find("ul").animate({"margin-left":0});//ul位置還原            btnshow(now,parseInt((lisize+addli)/num),lisize,num);        });                        function addlist(){            for(i=0;i<addli;i++){                var html = a.find("ul li").eq(i).html();                a.find("ul").append("<li>"+html+"</li>");                }            a.find("ul").css({"width":(w_li+margin_li*2)*(lisize+addli)});            //console.log(a.find("ul li").size());        }        function photoscroll(){            a.find(".ps_pre").on("click",function(){//console.log(num);                    now--;                if(now >= 0){                                      a.find("ul").animate({"margin-left":-now*num*(w_li+margin_li*2)});                    btnshow(now,parseInt((lisize+addli)/num),lisize,num);                }            });            a.find(".ps_next").on("click",function(){//console.log(num);                    now++;                if(now < (lisize+addli)/num){                        a.find("ul").animate({"margin-left":-now*num*(w_li+margin_li*2)});                    btnshow(now,parseInt((lisize+addli)/num),lisize,num);                }                });                btnshow(now,parseInt((lisize+addli)/num),lisize,num);                }        /***        參數說明:        now:當前是第幾組,默認是0        c:總共有幾組        d:初始化時li的個數        e:每組顯示li個數        ***/        function btnshow(now,c,d,e){            if(d<=e){//如果初始化時li的個數小于一組要顯示的數,則不顯示pre和next按鈕                a.find(".ps_next").hide();                a.find(".ps_pre").hide();            }else if(now==0){//初始化now=0,顯示第一組,只顯示next                a.find(".ps_next").show();                a.find(".ps_pre").hide();                }else if(now==c-1){//顯示到最后一組,只顯示pre                a.find(".ps_next").hide();                a.find(".ps_pre").show();                }else{//顯示中間組,pre和next都需要顯示                a.find(".ps_next").show();                a.find(".ps_pre").show();            }        }            }})(jQuery); $.photolist($("#activity-slide"));</script>
View Code
上一篇:jQuery中eq()方法用法實例

下一篇:照片墻

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安塞县| 延安市| 盐城市| 竹北市| 平顺县| 建昌县| 密山市| 惠来县| 独山县| 营口市| 山阴县| 泽库县| 车险| 原阳县| 和平县| 师宗县| 长阳| 夏邑县| 望城县| 兰考县| 延津县| 邳州市| 五寨县| 青海省| 达拉特旗| 兰西县| 莒南县| 藁城市| 宣汉县| 铜陵市| 三明市| 山西省| 吉安县| 定边县| 根河市| 石棉县| 雷州市| 宝山区| 安泽县| 元谋县| 德格县|