zoukankan      html  css  js  c++  java
  • jQuery控制图片墙自动+手动淡入淡出切换

    先来看一下效果:http://39.105.101.122/myhtml/Jquery/img_switch/img_switch.html(甄嬛的眼睛有木有变大

    添加一个div(class=container),设置宽度和高度,这里设置了宽800px,高450px。添加居中的定位。在div里面添加一个ul(class="img")列表用来盛放图片,设置ul里面的li标签position为absolute,这时图片会重合在一起,同时设置display为none。图片设置宽度和高度与container相同。在container里面再添加一个ul列表用来盛放下面的一排数字,然后进行相应的定位和设置。添加两个div:left和right,分别是左右两个按钮,进行相应的定位和设置,里面的箭头分别是大于号和小于号。

    实现原理:

    当鼠标移动到对应的数字上面的时候,用$(this).index()获得数字所在容器里面的序号,然后将序号传递到eq()函数里面获得 li 标签,然后添加函数fadeIn();这样隐藏的图片就显示出来了,同时调用sibling().fadeOut(),让同级的兄弟节点隐藏起来,这样之前显示的图片就隐藏了起来。

    添加setInterval()函数,让图片每隔相同的时间变换一次。

    我觉得一个主要的问题就是自动切换和手动切换的冲突,当鼠标移动到图片上面的时候应该停止自动切换,在这里用的方法是:

    给container添加hover函数,当鼠标移动到container里面的时候用clearInterval()函数去掉时间间隔函数,这样当鼠标移动到图片上面的时候,图片就不会切换了,当鼠标移出的时候添加setInterval()函数。这样图片就能继续切换了。

    注意:i 和 t 需要设置成全局变量,这样不同的函数才能共用。i 表示当前显示图片的索引。t 是setInterval的ID。当鼠标移出的时候不用再var一个t了,只需:t=setInterval(time_fun,1500);即可。

    eq(n):找到第n个元素

    eg:$('li').eq(2).css('background-color', 'red');//设置第二个li标签的背景颜色为红色

    index():找到该元素的索引值

    有兴趣的研究一下代码:

      1 <!DOCTYPE html>
      2 <html lang="en">
      3 <head>
      4     <meta charset="UTF-8">
      5     <title>jquery_img_switch</title>
      6 </head>
      7 <style type="text/css">
      8 *{
      9     margin: 0;
     10     padding: 0;
     11 }
     12     .container{
     13         width: 800px;
     14         height: 450px;
     15         margin: 100px auto;
     16         position: relative;
     17     }
     18     .container .img{
     19         list-style: none;
     20         /*position: absolute;*/
     21     }
     22     .container .img li{
     23         position: absolute;
     24         display: none;
     25 
     26     }
     27     .container .img img{
     28         width: 800px;
     29         height: 450px;
     30     }
     31     .container .num{
     32         position: absolute;
     33         list-style: none;
     34         font-size: 0;
     35         bottom: 20px;
     36         width: 100%;
     37         text-align: center; 
     38     }
     39     .container .num li{
     40         width: 30px;
     41         height: 30px;
     42         background: rgba(255,255,255,0.5);
     43         border-radius: 50%;
     44         color: #000;
     45         display: inline-block;
     46         line-height: 30px;
     47         text-align: center;
     48         font-size: 20px;
     49         margin-right: 10px;
     50         cursor: pointer;
     51     }
     52     .left, .right{
     53         width: 50px;
     54         height: 60px;
     55         text-align: center;
     56         line-height: 60px;
     57         background-color: rgba(0,0,0,0.5);
     58         color: #fff;
     59         position: absolute;
     60         top: 50%;
     61         margin-top: -30px; 
     62         font-size: 40px;
     63         cursor: pointer;
     64     }
     65     .left{
     66         left: 20px;
     67     }
     68     .right{
     69         right: 20px;
     70     }
     71     .container .num .active{
     72         background: rgba(255,0,0,1);
     73         color: #fff;
     74     }
     75 </style>
     76 <script type="text/javascript" src="../jquery-2.2.1.min.js"></script>
     77 <script type="text/javascript">
     78     var i=0;
     79     var t;
     80     $(document).ready(function(){
     81         $(".container .img li").eq(i).fadeIn().siblings().fadeOut();    
     82 
     83         $(".container .num li").on("mouseover",active);
     84 
     85         t=setInterval(time_fun,1500);
     86 
     87         $(".container").hover(in_fun,out_fun);
     88 
     89         $(".container .left").on("click",left_fun);
     90         $(".container .right").on("click",right_fun);
     91     });
     92 
     93     function time_fun(){
     94         i++;
     95         if(i==10){
     96             i=0;
     97         }
     98         $(".container .num li").eq(i).addClass("active").siblings().removeClass("active");
     99         $(".container .img li").eq(i).fadeIn(300).siblings().fadeOut(300);
    100     }
    101 
    102     function in_fun(){
    103        
    104         clearInterval(t);
    105     }
    106     function out_fun(){
    107         t=setInterval(time_fun,1500);
    108     }
    109     function active(){
    111         $(this).addClass("active").siblings().removeClass("active");
    112         $(".container .img li").eq($(this).index()).fadeIn(300).siblings().fadeOut(300);
    113         i=$(this).index();
    114     }
    115     function left_fun(){
    116         i--;
    117         if(i==-1){
    118             i=9;
    119         }
    120         $(".container .num li").eq(i).addClass("active").siblings().removeClass("active");
    121         $(".container .img li").eq(i).fadeIn(300).siblings().fadeOut(300);
    122     }
    123     function right_fun(){
    124         i++;
    125         if(i==10){
    126             i=0;
    127         }
    128         $(".container .num li").eq(i).addClass("active").siblings().removeClass("active");
    129         $(".container .img li").eq(i).fadeIn(300).siblings().fadeOut(300);
    130     }
    131 </script>
    132 <body>
    133     <div class="container">
    134         <ul class="img">
    135             <li ><img src="../../Img/1.jpg"></li>
    136             <li><img src="../../Img/2.jpg"></li>
    137             <li><img src="../../Img/3.jpg"></li>
    138             <li><img src="../../Img/4.jpg"></li>
    139             <li><img src="../../Img/5.jpg"></li>
    140             <li><img src="../../Img/6.jpg"></li>
    141             <li><img src="../../Img/7.jpg"></li>
    142             <li><img src="../../Img/8.jpg"></li>
    143             <li><img src="../../Img/9.jpg"></li>
    144             <li><img src="../../Img/10.jpg"></li>
    145         </ul>
    146         <ul class="num">
    147             <li class="active">1</li>
    148             <li>2</li>
    149             <li>3</li>
    150             <li>4</li>
    151             <li>5</li>
    152             <li>6</li>
    153             <li>7</li>
    154             <li>8</li>
    155             <li>9</li>
    156             <li>10</li>
    157         </ul>
    158         <div class="left"><</div>
    159         <div class="right">></div>
    160     </div>
    161 </body>
    162 </html>
  • 相关阅读:
    php数组的循环遍历
    Mysql中的字符串函数
    关于给居于网络里面的计算机发送消息的问题
    WINDOWS系统服务详解
    GET DATA
    无法移动或重命名“Documents and Settings”文件夹
    瑞星升级包 下载网站
    ARP本机绑定 批处理
    如何获得各个运行进程的id
    如何通过程序知道有哪些计算机与自己的电脑连接
  • 原文地址:https://www.cnblogs.com/huizit1/p/5471326.html
Copyright © 2011-2022 走看看