zoukankan      html  css  js  c++  java
  • JQuery制作基础的无缝轮播与左右点击效果

    在网页中我们想要的无缝轮播左右循环有好多好多中,这是我第一个轮播效果,也是最基础的,和大家分享一下,对于初学者希望你们能有所借鉴,对于大神我想让你们尽情的虐我给我宝贵的意见。

    这个是我要的效果

    进入正题,首先是布局,布局的原理就是在DIV中创建ul标签,ul中插入li标签,在里插入图片,你想要几个图片轮播,插入几个li。布局上主要的点在于div设置大小,加上overflow:hidden;让超出部分隐藏,ul的长度是所有图片的总长度,li浮动。

     1             <div id="djlb">
     2                 <div id="bigul">
     3                     <ul>
     4                         <li>
     5                             <img src="../images/djlb1.gif" alt="">
     6                             <p class="zt4">赵茜</p>
     7                             <p class="zt22">北京大学历史系研究生</p>
     8                         </li>
     9                         <li>
    10                             <img src="../images/yc2.gif" alt="yc2">
    11                         </li>
    12                     </ul>
    13                     <ul>
    14                         <li>
    15                             <img src="../images/djlb2.gif" alt="">
    16                             <p class="zt4">赵茜</p>
    17                             <p class="zt22">北京大学历史系研究生</p>
    18                         </li>
    19                         <li>
    20                             <img src="../images/yc2.gif" alt="yc2">
    21                         </li>
    22 
    23                     </ul>
    24                     <ul>
    25                         <li>
    26                             <img src="../images/djlb3.gif" alt="">
    27                             <p class="zt4">赵茜</p>
    28                             <p class="zt22">北京大学历史系研究生</p>
    29                         </li>
    30                         <li>
    31                             <img src="../images/yc2.gif" alt="yc2">
    32                         </li>
    33                     </ul>
    34                     <ul>
    35                         <li>
    36                             <img src="../images/djlb2.gif" alt="">
    37                             <p class="zt4">赵茜</p>
    38                             <p class="zt22">北京大学历史系研究生</p>
    39                         </li>
    40                         <li>
    41                             <img src="../images/yc2.gif" alt="yc2">
    42                         </li>
    43                     </ul>
    44                     <ul>
    45                         <li>
    46                             <img src="../images/djlb2.gif" alt="">
    47                             <p class="zt4">赵茜</p>
    48                             <p class="zt22">北京大学历史系研究生</p>
    49                         </li>
    50                         <li>
    51                             <img src="../images/yc2.gif" alt="yc2">
    52                         </li>
    53                     </ul>
    54                     <ul>
    55                         <li>
    56                             <img src="../images/djlb2.gif" alt="">
    57                             <p class="zt4">赵茜</p>
    58                             <p class="zt22">北京大学历史系研究生</p>
    59                         </li>
    60                         <li>
    61                             <img src="../images/yc2.gif" alt="yc2">
    62                         </li>
    63                     </ul>
    64                 </div>
    65             </div>
    66             <div id="aniu">
    67                 <div id="bleft"></div>
    68                 <div id="bright"></div>
    69             </div>   
    70 
    71         </div>
    html代码
     1 #djlb {
     2      1200px;
     3     height: 600px;
     4     overflow: hidden;
     5 }
     6 #bigul {
     7      1800px;
     8     height: 560px;
     9 }
    10 #bigul > ul {
    11     position: relative;
    12      300px;
    13     height: 560px;
    14     float: left;
    15 }
    16 #bigul > ul > li:nth-child(even) {
    17     position: absolute;
    18     display: none;
    19 }
    20 #bigul > ul > li {
    21      300px;
    22     height: 560px;
    23     float: left;    
    24 }
    25 #aniu {
    26     position: relative;
    27 }
    28 #aniu > div {
    29     position: absolute;
    30 }
    31 #aniu > div:first-child{
    32     left:-55px;
    33     top: -290px;
    34     display: inline-block;
    35     border-left: 6px solid #c2c2c2;
    36     border-top: 6px solid #c2c2c2;
    37      37px;
    38     height: 37px;
    39     transform: rotate(-45deg);
    40 }
    41 #aniu > div:last-child{
    42     left: 1210px;
    43     top: -290px;
    44     display: inline-block;
    45     border-right: 6px solid #c2c2c2;
    46     border-bottom: 6px solid #c2c2c2;
    47      37px;
    48     height: 37px;
    49     transform: rotate(-45deg);
    50 }
    51 #aniu > div:first-child:hover{
    52     border-left: 6px solid #ffcc00;
    53     border-top: 6px solid  #ffcc00;
    54 }
    55 #aniu > div:last-child:hover {
    56     border-right: 6px solid #ffcc00;
    57     border-bottom: 6px solid #ffcc00;
    58 }
    css代码

    主要说明一下我js的思路;

    
    

    $(function () {
      var i = 0, tick, list, ul = $("#bigul");
      $("#bright").click(function () {
      $("#bigul").animate({ "margin-left": -300 }, 30000, function () {//当你执行完了后发生的事件
          list =ul.find("ul");   //正常的话ul就是li,因为我这个需要鼠标浮动显示隐藏,结构一样    
          ul.append(list.first()); //ul追加到最后一个
          ul.css("margin-left",0); //在每一次点击过后,margin-left初始化为零,为什么嘛要初始化呢? 思考一下?
       });//这样就向右无限循环了,就像队列一样
      if (tick) {
       clearTimeout(tick);
      }  //清除上一次定时器
      tick = setTimeout(function () {
          $("#bright").click();
      }, 30000);  定时器自动的部分
      });
      $("#bleft").click(function(){
         list = ul.find("ul");  
         list.last().insertBefore(list.first()); // 当第一次点击时,把最后的搬到前面来,
         ul.css("margin-left",-300);
         ul.animate({ "margin-left": 0 }, 3000); //同样这个问题?? 
      if (tick) {
         clearTimeout(tick);
      }
      tick = setTimeout(function () {
         $("#bleft").click();
      }, 3000);
      });
      $("#bright").click(); //自动向右事件
    });

    
    

     现在和你说为什么,如果不初始化,你点击右边的时候,他会重第一张到第三张,因为当你把第一个搬到后面一个时,ul父盒子左边是0,下一次移动他会自动补全他的位置,也就是两个位置,所以直接就是第三张图了,我是画图才想明白的嘻嘻!

    整个思路:

    运用animate让li移动,

    当向右点击时,运用append()方法把第一个张追加到最后一张,而且要每次移动要清除一下子。

    向左点击时,运用insertBefore()把最后一张插入第一张,也要清除一下

    tick是我们定义的定时器settimeout

    最后一句就是自动向右事件了

    鼠标移动显示隐藏就是用到了mouseout() 和show(),hide()就ok了

  • 相关阅读:
    复制对象
    element.classList属性及方法应用
    Object.defineProperty
    965. Univalued Binary Tree
    700. Search in a Binary Search Tree
    561, Array Partition Ⅰ
    933. Number of Recent Calls
    999.Available Capture for rook
    961. N-Repeated Element in Size 2N Array
    709. To Lower Case
  • 原文地址:https://www.cnblogs.com/cqy1125/p/9029032.html
Copyright © 2011-2022 走看看