>웹 프론트엔드 >JS 튜토리얼 >jquery는 마우스 호버 중지 캐러셀 특수 효과를 구현합니다_jquery

jquery는 마우스 호버 중지 캐러셀 특수 효과를 구현합니다_jquery

WBOY
WBOY원래의
2016-05-16 15:26:333220검색

이 문서의 예에서는 마우스 가리키기 중지 캐러셀 특수 효과 코드의 jquery 구현을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 내용은 다음과 같습니다.
실행 중인 효과의 스크린샷은 다음과 같습니다.

구체적인 코드는 다음과 같습니다.

1. 주요 프로그램

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>轮播图①(手动点击轮播)</title>
    <link type="text/css" rel="stylesheet" href="css/layout.css" />
  </head>
  <body>
    <div class="slideShow">
      <!--图片布局开始-->
      <ul>
        <li><a href="#"><img src="img/picture01.jpg" /></a></li>
        <li><a href="#"><img src="img/picture02.jpg" /></a></li>
        <li><a href="#"><img src="img/picture03.jpg" /></a></li>
        <li><a href="#"><img src="img/picture04.jpg" /></a></li>
      </ul>
      <!--图片布局结束-->
      
      <!--按钮布局开始-->
      <div class="showNav">
        <span class="active">1</span>
        <span>2</span>
        <span>3</span>
        <span>4</span>
      </div>
      <!--按钮布局结束-->
    </div>
    <script src="js/jquery-1.11.3.js"></script>
    <script src="js/layout.js"></script>
  </body>
</html>

2. CSS 스타일

*{
  margin: 0;
  padding: 0;
}
ul{
  list-style: none;
}
.slideShow{
  width: 346px;
  height: 210px;   /*其实就是图片的高度*/
  border: 1px #eeeeee solid;
  margin: 100px auto;
  position: relative;
  overflow: hidden;  /*此处需要将溢出框架的图片部分隐藏*/
}
.slideShow ul{
  width: 2000px;
  position: relative;   /*此处需注意relative : 对象不可层叠,但将依据left,right,top,bottom等属性在正常文档流中偏移位置,如果没有这个属性,图片将不可左右移动*/
}
.slideShow ul li{
  float: left;   /*让四张图片左浮动,形成并排的横着布局,方便点击按钮时的左移动*/
  width: 346px;
}
.slideShow .showNav{   /*用绝对定位给数字按钮进行布局*/
  position: absolute;
  right: 10px;
  bottom: 5px;
  text-align:center;
  font-size: 12px;  
  line-height: 20px;
}
.slideShow .showNav span{
  cursor: pointer;
  display: block;
  float: left;
  width: 20px;
  height: 20px;
  background: #ff5a28;
  margin-left: 2px;
  color: #fff;
}
.slideShow .showNav .active{
  background: #b63e1a;
}

3. jQuery 프로그램
먼저 마우스 호버 이미지 캐러셀을 중지하는 원리에 대해 이야기해 보겠습니다.

  • 1. 프레임 위로 마우스를 가져가면 타이머를 지우고 ClearInterval(타이머)를 사용하여 타이머를 닫아 자동 캐러셀을 중지합니다.
  • 2. 마우스가 프레임을 벗어나면 타이머를 다시 시작하세요
  • 3. 호버 기능은 마우스를 호버링하고 떠나는 데 사용됩니다

hover(over,out) 호버 이벤트(마우스가 개체 위 또는 개체 밖으로 이동)를 시뮬레이션하는 메서드입니다. 이는 자주 사용되는 작업에 대해 "유지" 상태를 제공하는 사용자 정의 방법입니다.
매개변수:
Over(기능): 마우스가 요소 위로 이동할 때 트리거되는 기능입니다.
out(함수): 마우스가 요소 밖으로 이동할 때 트리거되는 함수입니다.

jQuery 프로그램을 살펴보겠습니다.

$(document).ready(function(){
  var slideShow=$(".slideShow"),   //获取最外层框架的名称
    ul=slideShow.find("ul"),   
    showNumber=slideShow.find(".showNav span"),//获取按钮
    oneWidth=slideShow.find("ul li").eq(0).width();  //获取每个图片的宽度
    var timer=null;  //定时器返回值,主要用于关闭定时器
    var iNow=0;   //iNow为正在展示的图片索引值,当用户打开网页时首先显示第一张图,即索引值为0
    
    /*手动点击按钮进行图片轮播代码开始*/
    showNumber.on("click",function(){      //为每个按钮绑定一个点击事件   
      $(this).addClass("active").siblings().removeClass("active");  //按钮点击时为这个按钮添加高亮状态,并且将其他按钮高亮状态去掉
      var index=$(this).index(); //获取哪个按钮被点击,也就是找到被点击按钮的索引值
      iNow=index;
      ul.animate({
        "left":-oneWidth*iNow,  //注意此处用到left属性,所以ul的样式里面需要设置position: relative; 让ul左移N个图片大小的宽度,N根据被点击的按钮索引值iNow确定
      })
    });
    /*手动点击按钮进行图片轮播代码结束*/
    
    
    /*定时自动轮播图片代码开始*/
    timer=setInterval(function(){    //打开定时器
      iNow++;             //让图片的索引值次序加1,这样就可以实现顺序轮播图片
      if(iNow>showNumber.length-1){  //当到达最后一张图的时候,让iNow赋值为第一张图的索引值,轮播效果跳转到第一张图重新开始
        iNow=0;
      }
      showNumber.eq(iNow).trigger("click");  //模拟触发数字按钮的click
    },2000);  //2000为轮播的时间
    /*定时自动轮播图片代码结束*/
    
    /*鼠标悬浮图片停止轮播代码开始*/
    slideShow.hover(
      function(){
        clearInterval(timer);
      },function(){
        timer=setInterval(function(){    //打开定时器
          iNow++;             //让图片的索引值次序加1,这样就可以实现顺序轮播图片
          if(iNow>showNumber.length-1){  //当到达最后一张图的时候,让iNow赋值为第一张图的索引值,轮播效果跳转到第一张图重新开始
            iNow=0;
          }
          showNumber.eq(iNow).trigger("click");  //模拟触发数字按钮的click
        },2000);  //2000为轮播的时间
      }
    );
    /*鼠标悬浮图片停止轮播代码结束*/
})

위 그림에서 볼 수 있듯이 타이머를 시작하는 코드가 반복되므로 여기서는 자동 재생 기능 autoPlay()를 정의하여 코드를 단순화할 수 있습니다.

/*定时自动轮播图片代码开始*/
    function autoPlay(){
      timer=setInterval(function(){    //打开定时器
      iNow++;             //让图片的索引值次序加1,这样就可以实现顺序轮播图片
      if(iNow>showNumber.length-1){  //当到达最后一张图的时候,让iNow赋值为第一张图的索引值,轮播效果跳转到第一张图重新开始
        iNow=0;
      }
      showNumber.eq(iNow).trigger("click");  //模拟触发数字按钮的click
      },2000);  //2000为轮播的时间
    }
    autoPlay();
 /*定时自动轮播图片代码结束*/

정의가 완료된 후 이 함수(예: autoPlay())를 호출하는 것을 잊지 마세요.
그러면 jQuery 프로그램의 최종 버전은 다음과 같습니다.

$(document).ready(function(){
  var slideShow=$(".slideShow"),   //获取最外层框架的名称
    ul=slideShow.find("ul"),   
    showNumber=slideShow.find(".showNav span"),//获取按钮
    oneWidth=slideShow.find("ul li").eq(0).width();  //获取每个图片的宽度
    var timer=null;  //定时器返回值,主要用于关闭定时器
    var iNow=0;   //iNow为正在展示的图片索引值,当用户打开网页时首先显示第一张图,即索引值为0
    
    /*手动点击按钮进行图片轮播代码开始*/
    showNumber.on("click",function(){      //为每个按钮绑定一个点击事件   
      $(this).addClass("active").siblings().removeClass("active");  //按钮点击时为这个按钮添加高亮状态,并且将其他按钮高亮状态去掉
      var index=$(this).index(); //获取哪个按钮被点击,也就是找到被点击按钮的索引值
      iNow=index;
      ul.animate({
        "left":-oneWidth*iNow,  //注意此处用到left属性,所以ul的样式里面需要设置position: relative; 让ul左移N个图片大小的宽度,N根据被点击的按钮索引值iNow确定
      })
    });
    /*手动点击按钮进行图片轮播代码结束*/
    
    
    /*定时自动轮播图片代码开始*/
    function autoPlay(){
      timer=setInterval(function(){    //打开定时器
      iNow++;             //让图片的索引值次序加1,这样就可以实现顺序轮播图片
      if(iNow>showNumber.length-1){  //当到达最后一张图的时候,让iNow赋值为第一张图的索引值,轮播效果跳转到第一张图重新开始
        iNow=0;
      }
      showNumber.eq(iNow).trigger("click");  //模拟触发数字按钮的click
      },2000);  //2000为轮播的时间
    }
    autoPlay();
    /*定时自动轮播图片代码结束*/
    
    /*鼠标悬浮图片停止轮播代码开始*/
    slideShow.hover(
      function(){
        clearInterval(timer);
      },autoPlay
    );
    /*鼠标悬浮图片停止轮播代码结束*/
})

위 내용은 이 글의 전체 내용입니다.

기사 1: jQuery 수동 클릭으로 이미지 캐러셀 효과 얻기

기사 2: jquery는 예약된 자동 캐러셀 효과를 구현합니다

이 기사가 jQuery 프로그래밍을 배우는 모든 사람에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.