您现在的位置>>.Net中文社区>>AJAX编程

jquery模仿百度图片幻灯浏览效果

浏览量: 作者:未知 来源:博客园

使用jquery来实现百度图片幻灯浏览,先看下效果图:

第一种实现方式,缺点是当浏览到靠后面的图片时页面动态加载元素太多,不支持大数据,完整代码如下:

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ImgShow.aspx.cs" Inherits="testbaidu_ImgShow" %> 
  2.  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  4. <html xmlns="http://www.w3.org/1999/xhtml"> 
  5. <head runat="server"> 
  6.     <title>模拟百度图片浏览</title> 
  7.     <link href="css/Style.css" rel="stylesheet" type="text/css" /> 
  8.  
  9.     <script src="../JavaScript/JQuery/Jquery.js" type="text/javascript"></script> 
  10.  
  11.     <script language="javascript" type="text/javascript"> 
  12.         var count = 9; //总记录数 
  13.         var showCount = 4; //每页显示数 
  14.         var pageIndex = 0; //当前页码 
  15.         var pageCount = 10; //每页加载数 
  16.         var i = 0; //当前翻转值,不能大于总数减去每页数 
  17.         var myTimepre; //向上定时器 
  18.         var myTimenext; //向下定时器i 
  19.          
  20.         //传入值 
  21.         var posti=7
  22.         var postion=2;//每次定位到第二个 
  23.          
  24.         //状态初始化 
  25.         $(function() { 
  26.             SetPosition();  
  27.             SetSliderPreClass(false); 
  28.             SetSlidereNextClass(false); 
  29.              
  30.             //处理向上按钮事件 
  31.             $("#slidePre").click(function() { 
  32.                 PreDel(); 
  33.             }); 
  34.             //处理向上按钮事件 
  35.             $("#slidePre").mousedown(function() { 
  36.                 myTimepre = window.setInterval(function() { 
  37.                     PreDel(); 
  38.                 }, 120); 
  39.             }); 
  40.             //关闭 
  41.             $("#slidePre").mouseup(function() { 
  42.                 window.clearInterval(myTimepre); 
  43.             }); 
  44.  
  45.             //处理向下按钮事件 
  46.             $("#slideNext").click(function() { 
  47.                 NextDel(); 
  48.             }); 
  49.             //处理向下按钮事件 
  50.             $("#slideNext").mousedown(function() { 
  51.                 myTimenext = window.setInterval(function() { 
  52.                     NextDel(); 
  53.                 }, 120); 
  54.             }); 
  55.             //关闭 
  56.             $("#slideNext").mouseup(function() { 
  57.                 window.clearInterval(myTimenext); 
  58.             }); 
  59.  
  60.             //鼠标移动到按钮的事件 
  61.             $("#slidePre").hover(function() { SetSliderPreHoverClass(); }, function() { SetSliderPreClass(); }); 
  62.             $("#slideNext").hover(function() { SetSliderNextHoverClass(); }, function() { SetSlidereNextClass(); }); 
  63.             //select 
  64.             
  65.  
  66.         }); 
  67.          
  68.         function TrggleEvent() 
  69.         {  
  70.             $("#imgList p").click(function() { 
  71.                 //alert("oh yes"); 
  72.                  
  73.               posti=  $("#imgList p").index($(this)); 
  74.               SetPosition(); 
  75.               
  76.               SetSliderPreClass(false); 
  77.               SetSlidereNextClass(false); 
  78.                 //alert($(this).attr("class")); 
  79.             }); 
  80.         } 
  81.          
  82.          
  83.  
  84.         //向上按钮点击函数 
  85.         function PreDel() { 
  86.             if (i > 0) { 
  87.                 i--; showImg(i); 
  88.                 SetSliderPreClass(true); 
  89.                 SetSlidereNextClass(false); 
  90.             } 
  91.         } 
  92.  
  93.         function NextDel() { 
  94.             if (i < count - showCount) { 
  95.                 i++; 
  96.                 LoadData() 
  97.                 showImg(i); 
  98.                 SetSlidereNextClass(true); 
  99.                 SetSliderPreClass(false); 
  100.             } 
  101.         } 
  102.  
  103.  
  104.  
  105.         //设置正常状态下向上按钮样式 
  106.         function SetSliderPreClass(isclick) { 
  107.  
  108.             if (i > 0) { 
  109.                 if (!isclick) { 
  110.                     $("#slidePre").removeClass(); 
  111.                     $("#slidePre").addClass("preNormal"); 
  112.                 } 
  113.             } 
  114.             else { 
  115.                 $("#slidePre").removeClass(); 
  116.                 $("#slidePre").addClass("preNone"); 
  117.             } 
  118.  
  119.         } 
  120.  
  121.         //设置正常状态下向下按钮样式 
  122.         function SetSlidereNextClass(isclick) { 
  123.             if (i >= count - showCount) { 
  124.                 $("#slideNext").removeClass(); 
  125.                 $("#slideNext").addClass("nextNone"); 
  126.                 $("#ImgOn").removeClass().addClass("lastPage"); 
  127.             } 
  128.             else { 
  129.                 if (!isclick) { 
  130.                     $("#slideNext").removeClass(); 
  131.                     $("#slideNext").addClass("nextNormal"); 
  132.                     $("#ImgOn").removeClass().addClass("nextPage"); 
  133.                 } 
  134.             } 
  135.  
  136.         } 
  137.  
  138.         //设置鼠标滑动下向上按钮样式 
  139.         function SetSliderPreHoverClass() { 
  140.             if ($("#slidePre").attr("class") != "preNone") { 
  141.                 $("#slidePre").removeClass(); 
  142.                 $("#slidePre").addClass("preHover"); 
  143.             } 
  144.         } 
  145.  
  146.         //设置鼠标滑动下向上按钮样式 
  147.         function SetSliderNextHoverClass() { 
  148.             if ($("#slideNext").attr("class") != "nextNone") { 
  149.                 $("#slideNext").removeClass(); 
  150.                 $("#slideNext").addClass("nextHover"); 
  151.             } 
  152.  
  153.         } 
  154.  
  155.         // 关键函数:通过控制top ,来显示不通的幻灯片 
  156.         function showImg(i) { 
  157.             $("#imgList").stop(true, false).animate({ top: -125 * i }, 120); 
  158.         } 
  159.         function LoadData() { 
  160.             var tempindex=0
  161.             if (pageIndex * pageCount - showCount < i) { 
  162.                 //动态先添加数据,计算需要加载的条数 
  163.                 var curLoadCount = 0
  164.                 if ((count - pageIndex * pageCount) / pageCount > 1) { 
  165.                     curLoadCount = pageCount
  166.                 } 
  167.                 else 
  168.                 { curLoadCount = count % pageCount; } 
  169.                 for (k = 0; k < curLoadCount; k++) { 
  170.                     $('<p class="noselect"><img  src="images/loadTree.gif" /></p>').appendTo($("#imgList")); 
  171.                 } 
  172.                 tempindex =pageIndex
  173. //                $.get("ImgContent.aspx",{ pageIndex: pageIndex, pageCount: pageCount }, function(imgurls){ 
  174. //                retarr=imgurls.split(','); 
  175. //                  for (k = 0; k < curLoadCount; k++) { 
  176. //                   $("#imgList p").eq(tempindex * pageCount+k).find("img").attr("src",retarr[k]); 
  177. //                } 
  178. //               
  179. //                //绑定后台数据 
  180. //                });   
  181.                 $.ajax({ 
  182.                        type: "get", 
  183.                        url: "ImgContent.aspx", 
  184.                        data: "pageIndex="+ pageIndex+"&pageCount="+pageCount, 
  185.                        async: false, 
  186.                        success: function(imgurls){ 
  187.                                     retarr=imgurls.split(','); 
  188.                                       for (k = 0; k < curLoadCount; k++) { 
  189.                                        $("#imgList p").eq(tempindex * pageCount+k).find("img").attr("src",retarr[k]); 
  190.                                     } 
  191.                          } 
  192.                         });  
  193.                 TrggleEvent(); 
  194.                 pageIndex++; 
  195.                 LoadData(); 
  196.             } 
  197.         } 
  198.          
  199.         //初始化定位 
  200.         function SetPosition() 
  201.         { 
  202.         if(posti+1-(showCount-postion)>0&&posti+1-(showCount-postion)<count-showCount
  203.         { 
  204.             i=posti+1-(showCount-postion); 
  205.         } 
  206.         else if(posti+1-(showCount-postion)>=count-showCount) 
  207.         { 
  208.             i=count-showCount; 
  209.         }   
  210.         LoadData(); 
  211.         $("#imgList p").eq(posti).siblings("p").removeClass().addClass("noselect").end().removeClass().addClass('select'); 
  212.         showImg(i); 
  213.         $("#ImgOn").attr("src",$("#imgList p").eq(posti).find("img").attr("src")); 
  214.         }                       
  215.     </script> 
  216.  
  217. </head> 
  218. <body> 
  219.     <form id="form1" runat="server"> 
  220.     <div style="text-align: center"> 
  221.         <h1> 
  222.             百度图片浏览模拟程序</h1> 
  223.     </div> 
  224.     <div id="imgContainer"> 
  225.         <div id="detailImg"> 
  226.             <table id="imgFrom" cellpadding="0" cellspacing="0" style="margin: 0 auto;"> 
  227.                 <tr> 
  228.                     <td style="text-align: center"> 
  229.                         图片名称: 
  230.                     </td> 
  231.                 </tr> 
  232.             </table> 
  233.             <table id="picWrap"> 
  234.                 <tr> 
  235.                     <td id="srcPic" align="center" valign="middle"> 
  236.                         <img id="ImgOn" src="" width="600px" height="450px" /> 
  237.                     </td> 
  238.                 </tr> 
  239.             </table> 
  240.             <table id="picInfo"> 
  241.                 <tr> 
  242.                     <td width="38%" align="left"> 
  243.                         <span id="imgTitle" style="font-size: 12px"></span> 
  244.                     </td> 
  245.                     <td align="right"> 
  246.                         <span class="rate">预览图比例:<span class="fontBar" id="rate"></span></span> 
  247.                     </td> 
  248.                     <td style="width: 70px" align="left"> 
  249.                         <a href="javascript:void(0)" class="zoomsrc" id="zoomSrc">查看原图</a> 
  250.                     </td> 
  251.                 </tr> 
  252.             </table> 
  253.         </div> 
  254.         <div id="album"> 
  255.             <div id="slidePre" class="preNormal"> 
  256.                 &nbsp; 
  257.             </div> 
  258.             <div id="smallImgs"> 
  259.                 <div id="imgList"> 
  260.                 </div> 
  261.             </div> 
  262.             <div id="slideNext"> 
  263.                 &nbsp; 
  264.             </div> 
  265.         </div> 
  266.     </div> 
  267.     </form> 
  268. </body> 
  269. </html> 

第二种,动态加载数据,当然js局部可以做出修改(完整示例代码如下)

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ImgSlider2.aspx.cs" Inherits="testbaidu_ImgSlider2" %> 
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  3. <html xmlns="http://www.w3.org/1999/xhtml"> 
  4. <head id="Head1" runat="server"> 
  5.     <title>模拟百度图片浏览</title> 
  6.     <link href="css/Style.css" rel="stylesheet" type="text/css" /> 
  7.     <script src="../JavaScript/JQuery/Jquery.js" type="text/javascript"></script> 
  8.     <script language="javascript" type="text/javascript"> 
  9.         var showCount = 4//每页显示数 
  10.         var count = 9; //总记录数 
  11.         var postion = 2; //每次定位到第二个 
  12.         var i = 0; //轮转值 
  13.         //传入值 
  14.         var postindex = 6
  15.         var loadStart = 0
  16.         var loadEnd = 0
  17.         var myTimepre; //向上定时器 
  18.         var myTimenext; //向下定时器i 
  19.         //第一次计算仅仅是初始化计算 
  20.         function setLoadStartAndEnd() { 
  21.             //为了便于理解没有进行等式的简化 
  22.             //只显示当前页的图片 
  23.             if (postindex + 1 - postion > 0 && postindex <= count - showCount) { 
  24.                 loadStart = postindex - postion + 1; 
  25.                 loadEnd = postindex - postion + showCount; 
  26.             } 
  27.             //向下按钮为灰色 
  28.             else if (postindex > count - showCount) { 
  29.                 loadStart = count - showCount; 
  30.                 loadEnd = count - 1; 
  31.             } 
  32.             //向上按钮为灰色 
  33.             else if (postindex + 1 - postion <= 0) { 
  34.                 loadStart = 0
  35.                 loadEnd = showCount - 1; 
  36.             } 
  37.         } 
  38.  
  39.         //计算出数值后开始加载数据 
  40.         function loadData() { 
  41.             //            alert(loadStart); 
  42.             //            alert(loadEnd); 
  43.             $("#imgList").html(""); 
  44.             for (j = loadStart; j <= loadEnd; j++) { 
  45.                 $('<p class="noselect"><img imgindex="' + j + '"  src="../temp/' + j + '.jpg" /></p>').appendTo($("#imgList")); 
  46.             } 
  47.             TrggleEvent(); 
  48.             //alert($("#imgList").html()); 
  49.         } 
  50.         //设置正常状态下向上按钮样式 
  51.         function SetSliderPreClass(isclick) { 
  52.             if (loadStart > 0) { 
  53.                 if (!isclick) { 
  54.                     $("#slidePre").removeClass(); 
  55.                     $("#slidePre").addClass("preNormal"); 
  56.                 } 
  57.             } 
  58.             else { 
  59.                 $("#slidePre").removeClass(); 
  60.                 $("#slidePre").addClass("preNone"); 
  61.             } 
  62.         } 
  63.         //设置正常状态下向下按钮样式 
  64.         function SetSlidereNextClass(isclick) { 
  65.             if (loadEnd >= count - 1) { 
  66.                 $("#slideNext").removeClass(); 
  67.                 $("#slideNext").addClass("nextNone"); 
  68.                 $("#ImgOn").removeClass().addClass("lastPage"); 
  69.             } 
  70.             else { 
  71.                 if (!isclick) { 
  72.                     $("#slideNext").removeClass(); 
  73.                     $("#slideNext").addClass("nextNormal"); 
  74.                     $("#ImgOn").removeClass().addClass("nextPage"); 
  75.                 } 
  76.             } 
  77.         } 
  78.         //设置鼠标滑动下向上按钮样式 
  79.         function SetSliderPreHoverClass() { 
  80.             if ($("#slidePre").attr("class") != "preNone") { 
  81.                 $("#slidePre").removeClass(); 
  82.                 $("#slidePre").addClass("preHover"); 
  83.             } 
  84.         } 
  85.         //设置鼠标滑动下向上按钮样式 
  86.         function SetSliderNextHoverClass() { 
  87.             if ($("#slideNext").attr("class") != "nextNone") { 
  88.                 $("#slideNext").removeClass(); 
  89.                 $("#slideNext").addClass("nextHover"); 
  90.             } 
  91.         } 
  92.         function PreDel() { 
  93.             if (loadStart > 0) { 
  94.                 temp = $("#imgList").html(); 
  95.                 $("#imgList").html(""); 
  96.                 $('<p class="noselect"><img alt="" imgindex="' + (loadStart - 1) + '"  src="../temp/' + (loadStart - 1) + '.jpg" /></p>').appendTo($("#imgList")); 
  97.                 $(temp).appendTo($("#imgList")); 
  98.                 temp = ""
  99.                 $("#imgList").css("top", "-125"); 
  100.                 postindex--; 
  101.                 loadStart--; 
  102.                 loadEnd--; 
  103.                 $("#imgList").stop(true, false).animate({ top: 0 }, 120); 
  104.                 window.setTimeout(function() { 
  105.                     $("#imgList p").eq(4).remove(); 
  106.                     SetSliderPreClass(true); 
  107.                     SetSlidereNextClass(false); 
  108.                     TrggleEvent(); 
  109.                 }, 120); 
  110.             } 
  111.         } 
  112.         function NextDel() { 
  113.             if (loadEnd < count - 1) { 
  114.                 $('<p class="noselect"><img alt="" imgindex="' + (loadEnd + 1) + '" src="../temp/' + (loadEnd + 1) + '.jpg" /></p>').appendTo($("#imgList")); 
  115.                 postindex++; 
  116.                 loadStart++; 
  117.                 loadEnd++; 
  118.                 $("#imgList").stop(true, false).animate({ top: -125 }, 120); 
  119.                 window.setTimeout(function() { 
  120.                 $("#imgList").css("top", "0");  
  121.                     $("#imgList p").eq(0).remove(); 
  122.                     SetSliderPreClass(false); 
  123.                     SetSlidereNextClass(true); 
  124.                     TrggleEvent(); 
  125.                 }, 150); 
  126.  
  127.             } 
  128.         } 
  129.         $(function() { 
  130.             setLoadStartAndEnd(); 
  131.             loadData(); 
  132.             SetPosition(); 
  133.             //鼠标移动到按钮的事件 
  134.             $("#slidePre").hover(function() { SetSliderPreHoverClass(); }, function() { SetSliderPreClass(false); }); 
  135.             $("#slideNext").hover(function() { SetSliderNextHoverClass(); }, function() { SetSlidereNextClass(false); }); 
  136.             SetSliderPreClass(false); 
  137.             SetSlidereNextClass(false); 
  138.             //处理向上按钮事件 
  139.             $("#slidePre").click(function() { 
  140.                 if ($("#slidePre").attr("class") != "preNone") { 
  141.                     PreDel(); 
  142.                 } 
  143.             }); 
  144.             //处理向上按钮事件 
  145.             $("#slidePre").mousedown(function() { 
  146.                 myTimepre = window.setInterval(function() { 
  147.                     PreDel(); 
  148.                 }, 150); 
  149.             }); 
  150.             //关闭 
  151.             $("#slidePre").mouseup(function() { 
  152.                 window.clearInterval(myTimepre); 
  153.             }); 
  154.  
  155.             //处理向下按钮事件 
  156.             $("#slideNext").click(function() { 
  157.                 if ($("#slideNext").attr("class") != "nextNone") { 
  158.                     NextDel(); 
  159.                 } 
  160.             }); 
  161.             //处理向下按钮事件 
  162.             $("#slideNext").mousedown(function() { 
  163.                 myTimenext = window.setInterval(function() { 
  164.                     NextDel(); 
  165.                 }, 150); 
  166.             }); 
  167.             //关闭 
  168.             $("#slideNext").mouseup(function() { 
  169.                 window.clearInterval(myTimenext); 
  170.             }); 
  171.         }); 
  172.  
  173.         function SetPosition() { 
  174.             //为了便于理解没有进行等式的简化 
  175.             //只显示当前页的图片 
  176.             if (postindex + 1 - postion > 0 && postindex <= count - showCount) { 
  177.                 $("#imgList p").eq(1).siblings("p").removeClass().addClass("noselect").end().removeClass().addClass('select'); 
  178.                 $("#ImgOn").attr("src", $("#imgList p").eq(1).find("img").attr("src")); 
  179.             } 
  180.             //向下按钮为灰色 
  181.             else if (postindex > count - showCount) { 
  182.                 $("#imgList p").eq(postindex - (count - showCount)).siblings("p").removeClass().addClass("noselect").end().removeClass().addClass('select'); 
  183.                 $("#ImgOn").attr("src", $("#imgList p").eq(postindex - (count - showCount)).find("img").attr("src")); 
  184.             } 
  185.             //向上按钮为灰色 
  186.             else if (postindex + 1 - postion <= 0) { 
  187.                 //alert(postindex); 
  188.                 $("#imgList p").eq(postindex).siblings("p").removeClass().addClass("noselect").end().removeClass().addClass('select'); 
  189.                 $("#ImgOn").attr("src", $("#imgList p").eq(postindex).find("img").attr("src")); 
  190.             } 
  191.         } 
  192.         function TrggleEvent() { 
  193.             //选中图片的处理程序 
  194.             $("#imgList p").click(function() { 
  195.                 //alert($(this).find("img").attr("imgindex")); 
  196.                 postindex = parseInt($(this).find("img").attr("imgindex")); 
  197.                 setLoadStartAndEnd(); 
  198.                 loadData(); 
  199.                 SetPosition(); 
  200.                 SetSliderPreClass(false); 
  201.                 SetSlidereNextClass(false); 
  202.             }); 
  203.         } 
  204.     </script> 
  205. </head> 
  206. <body> 
  207.     <form id="form1" runat="server"> 
  208.     <div style="text-align: center"> 
  209.         <h1> 
  210.             百度图片浏览模拟程序</h1> 
  211.     </div> 
  212.     <div id="imgContainer"> 
  213.         <div id="detailImg"> 
  214.             <table id="imgFrom" cellpadding="0" cellspacing="0" style="margin: 0 auto;"> 
  215.                 <tr> 
  216.                     <td style="text-align: center"> 
  217.                         图片名称: 
  218.                     </td> 
  219.                 </tr> 
  220.             </table> 
  221.             <table id="picWrap"> 
  222.                 <tr> 
  223.                     <td id="srcPic" align="center" valign="middle"> 
  224.                         <img id="ImgOn" src="" width="600px" height="450px" /> 
  225.                     </td> 
  226.                 </tr> 
  227.             </table> 
  228.             <table id="picInfo"> 
  229.                 <tr> 
  230.                     <td width="38%" align="left"> 
  231.                         <span id="imgTitle" style="font-size: 12px"></span> 
  232.                     </td> 
  233.                     <td align="right"> 
  234.                         <span class="rate">预览图比例:<span class="fontBar" id="rate"></span></span> 
  235.                     </td> 
  236.                     <td style="width: 70px" align="left"> 
  237.                         <a href="javascript:void(0)" class="zoomsrc" id="zoomSrc">查看原图</a> 
  238.                     </td> 
  239.                 </tr> 
  240.             </table> 
  241.         </div> 
  242.         <div id="album"> 
  243.             <div id="slidePre" class="preNormal"> 
  244.                 &nbsp; 
  245.             </div> 
  246.             <div id="smallImgs"> 
  247.                 <div id="imgList"> 
  248.                 </div> 
  249.             </div> 
  250.             <div id="slideNext" class="nextNormal"> 
  251.                 &nbsp; 
  252.             </div> 
  253.         </div> 
  254.     </div> 
  255.     </form> 
  256. </body> 
  257. </html> 
本站部份资源来于互联网,只供学习之用,不得用于商业,如有侵犯版权请联系告知,本站将第一时间删除!
站长QQ:373638128 邮箱:navy1015@126.com
copyright © 2008 .Net中文社区 ASPXCS.NET™.All Rights Reserved 滇ICP备08102132号