jQuery图片切换动画效果

最近在写前端页面,作为只写过两个月前端的人来说,感觉用jq什么的写出来自己想要的效果真的是太棒了,刚好今天花了一下午完成了一个图片切换的特效:

效果图:

jq 代码,都是自己写出来的,弄了一下午完成的,初学者,整理以后留着用。

直接上代码:

//////
// 2017-2-27 //
//////
$(function(){
 var num = 0;
 var divStr = '#imageShowSmallAnchor'; // 移动 div
 var s  = 300;
 $('.imgNum').click(function(){
  var _this  = $(this);
  var status = _this.attr('data-status');
  var total_num = _this.parent().find('ul li').length;
  var numSPic = 4;//最多显示的小图的个数
  var src; 

  if(status == 'left'){
   if(num <= 0){
    num = total_num-1;
   }else{
    num--;
   }
  }else{
   if(num >= total_num-1){
    num = 0;
   }else{
    num++;
   }
  }
  // 4 一次做多显示四张小图 $("#div").stop(false, true);//让当前动画直接到达末状态 ,继续下一个动画
  // 第一种情况 当小图数量小于5时, 直接进行右移。
  if (total_num <= numSPic) {$(divStr).stop(true,false).animate(
   {left:num*106+39+"px"},s);
  } else{
   ////////
   // 图片左移 //
   ////////
   if (status == 'left') {
    if (num < total_num - numSPic) {
     _this.parent().find('ul li').eq(num).show();
    } else{
     // 特殊情況 左移时,从第一张图切换到最后一张图时
     // if判断 当前是否显示最后张图,如果不是最后一张图 则当变成右移时,无需刷新小图的显示状态。
     // 左移时,需要将李 全部隐藏后, 再将最后的 numSPice 张图显示出来,
     if (num == total_num - 1) {
      _this.parent().find('ul li').hide();
      for (var x = total_num-1; x >= total_num - numSPic; x--) {
       _this.parent().find('ul li').eq(x).show();
      }
     }
    }
   } else{
    ////////
    // 图片右移 //
    ////////
    if (num >= numSPic) {
     _this.parent().find('ul li').eq(num-numSPic).hide();
    } else{
     // 特殊情況 右移时,从最后一张图切换到第一张图时
     // 判断 是否是第一张图, 如果不是则再变成左移时,无需刷新小图的显示状态
     if (num == 0) {
      for (var x = 0; x < numSPic; x ++) {
       _this.parent().find('ul li').eq(x).show();
      }
     }
    }
   }
   // 快速点击切换时吗,动画出现滞后和反复问题,
   // 让当前动画直接到达末状态 ,继续下一个动画 $('#div').stop(false, ture); $('#div').stop().animate(); 集合使用效果更佳。
   $(divStr).stop(false, true);
   ////////
   // 样式左移 //
   ////////
   if (status == 'left') {
    // 39 定位divStr 的left距离 父级元素的像素距离
    // 等样式移动到最右边时,样式位置固定
    // $(divStr).position().left 获取定位元素 left值。
    if ($(divStr).position().left <= 39 ) {
     $(divStr).stop().animate({left:"39px"});
     // 当从第一张切换到最后一张时,样式应在最右边。
     if (num==total_num-1) {
      $(divStr).stop().animate({left:3 * 106 + 39 + "px"},s);
     }
    } else{
     $(divStr).stop().animate({left:"-=106px"},s);
    }
   } else{
    ////////
    // 样式右移 //
    ////////
    if ($(divStr).position().left >= 357) {
     $(divStr).stop().animate({left:"357px"});
     // 当从最后一张切换到第一张时,样式应在最左边。
     if (num==0) {
      $(divStr).stop().animate({left:"39px"},s);
     }
    } else{
     $(divStr).stop().animate({left:"+=106px"},s);
    }
   }
  }
  src = _this.parent().find('ul li').eq(num).find('img').attr('src');
  _this.parents('.xq-imgSW').find('.imgSW-top li img').attr('src',src);
 }); 

 // 点击小图切换 大图 和小图上的样式。
 $('.imgSW-bt li').click(function(){
  var _this = $(this);
  var src;
  num = _this.index();
  // parseInt(10/3); 整除
  // 获取点击的位置,来计算 样式的位置。
  var X = parseInt(_this.position().left/106); 

  $(divStr).stop().animate({left:X*106+39+"px"},s);
  src = _this.find('img').attr('src');
  _this.parents('.xq-imgSW').find('.imgSW-top li img').attr('src',src);
 });
});

HTML 界面代码:

<div class="xq-imgSW">
  <div class="imgSW-top">
   <ul>
    <li><img src="images/xq-img1.png" alt=""></li>
   </ul>
  </div>
  <div class="clear"></div>
  <div class="imgSW-bt">
   <input class="imgSW-zuo imgNum" type="button" data-status="left">
   <div id="imageShowSmallAnchor"></div>
   <ul>
    <li class="imgSW-xz"><img class="imgex" src="images/xq-img-s1.png" style="width:90px;height:60px;" alt="">
     <div class="imgSW-bot">户型1</div>
    </li> 

    <li><img src="images/xq-img-s2.png" style="width:90px;height:60px;" alt="">
     <div class="imgSW-bot">户型2</div>
    </li>
    <li><img src="images/xq-img-s3.png" style="width:90px;height:60px;" alt="">
     <div class="imgSW-bot">户型3</div>
    </li>
    <li><img src="images/xq-img-s4.png" style="width:90px;height:60px;" alt="">
     <div class="imgSW-bot">户型4</div>
    </li>
    <li><img src="images/xq-img-s4.png" style="width:90px;height:60px;" alt="">
     <div class="imgSW-bot">户型5</div>
    </li>
    <li><img src="images/xq-img-s4.png" style="width:90px;height:60px;" alt="">
     <div class="imgSW-bot">户型6</div>
    </li>
    <li><img src="images/xq-img-s4.png" style="width:90px;height:60px;" alt="">
     <div class="imgSW-bot">户型7</div>
    </li>
    <li><img src="images/xq-img-s4.png" style="width:90px;height:60px;" alt="">
     <div class="imgSW-bot">户型8</div>
    </li>
   </ul>
   <input class="imgSW-you imgNum" data-status="right" type="button">
  </div>
 </div> 

<div id="imageShowSmallAnchor"></div> 是定位上去的

另外:
快速点击是会出现动画延迟现象,影响体验,处理动画延迟jQuery stop()语法:

$("#div").stop();//停止当前动画,继续下一个动画
$("#div").stop(true);//清除元素的所有动画
$("#div").stop(false, true);//让当前动画直接到达末状态 ,继续下一个动画
$("#div").stop(true, true);//清除元素的所有动画,让当前动画直接到达末状态

在jq中有用到并有注释。
// 让当前动画直接到达末状态 ,继续下一个动画 $('#div').stop(false, ture); $('#div').stop().animate(); 集合使用效果更佳。

作为前端新手,记录下,以后可能会用到。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • jQuery插件slick实现响应式移动端幻灯片图片切换特效

    jQuery响应式手机端移动端幻灯片图片切换特效插件slick,基于jQuery,功能非常强大,支持左右按钮切换.支持圆点切换.支持自定义切换数量,支持自定义切换速度.支持图片预加载.支持自动播放定义,效果非常的不错,众多的参数自定义支持,觉得可以的可以参考他们的参数配置,还是值得学习使用的. 使用方法: 1.加载插件和jQuery <script src="//code.jquery.com/jquery-1.11.0.min.js"></script> &l

  • 基于jquery实现左右按钮点击的图片切换效果

    jQuery可以制作出与Flash媲美的动画效果,这点绝对毋庸置疑,本文将通过实例演示一个左右按钮点击的图片切换效果. 一.最终效果 二.功能分析 1.需求分析 点击左边pre按钮,显示前面三个图片,点击右边的next按钮,显示后面的一组(三个)图片.初始化只显示next按钮,到最后一组只显示pre按钮,中间过程两按钮都显示. 2.html结构分析 <div class="activity" id="activity-slide"> <a href

  • jQuery简单实现banner图片切换

    主要运用了定时器的原理,bind,trigger应用等 复制代码 代码如下: <!DOCTYPE html><html><head>    <meta charset="utf-8">    <title>banner切换实现</title>    <style type="text/css">        /*        * @description: banner切换样式 

  • jQuery插件Slider Revolution实现响应动画滑动图片切换效果

    这是一款非常强大的内容切换插件,它基于jQuery,它充分响应,支持移动设备,支持手机触摸,键盘翻页:它内置幻灯.视频播放计时器,它拥有各种模式:自定义,自动响应,全屏:它有多种动画效果.3d效果...总之你想到的效果它都做到了,它的名字叫Slider Revolution. HTML Slider Revolution是一款基于jQuery的插件,使用它时需要先载入jQuery库文件,以及Slider Revolution依赖的css和js文件. <script src="js/jque

  • jQuery图片切换插件jquery.cycle.js使用示例

    Cycle是一个很棒的jQuery图片切换插件,提供了非常好的功能来帮助大家更简单的使用插件的幻灯功能 下载cycle插件并引入,此时,注意把引入它的代码放在引入jQuery主文件之后. 复制代码 代码如下: <head> <script type="text/javascript" src="js/jquery-1.8.0.min.js"></script> <script type="text/javascri

  • jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果

    复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>jquery图片滚动仿QQ商城带左右按钮控制焦点图片切换滚动</title> <meta name="description" cont

  • 一个基于jquery的图片切换效果

    下面的代码对于学习jquery的朋友是个参考html代码: 代码 复制代码 代码如下: <div class="warp" id="warp"> <img src="http://images.cnblogs.com/cnblogs_com/zhangle/252347/t_pic1.bmp" alt="" class="imgBig" /> <img src="ht

  • jQuery 一个图片切换的插件

    以下是参数说明:  参数名称  描述  delay  图片切换速度,单位毫秒  maskOpacity  遮罩层透明度,1为不透明,0为全透明  numOpacity  数字按钮透明度,1为不透明,0为全透明  maskBgColor  遮罩层背景色  textColor  标题字体颜色  numColor  数字按钮字体颜色  numBgColor  数字按钮背景色  alterColor  数字按钮选中项字体颜色  alterBgColor  数字按钮选中项背景颜色插件代码及调用 - 插件名

  • JQuery页面图片切换和新闻列表滚动效果的具体实现

    最近用到一个页面上图片左右切换和新闻列表滚动呈现的效果,整理如下: 前段代码: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"&g

  • 基于Jquery的简单图片切换效果

    复制代码 代码如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> <script type="text/javascrip

随机推荐