jQuery图片切换动画效果


Posted in Javascript onFebruary 28, 2017

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

效果图:

jQuery图片切换动画效果

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{ 
     // 特殊情?r 左移时,从第一张图切换到最后一张图时 
     // 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{ 
     // 特殊情?r 右移时,从最后一张图切换到第一张图时 
     // 判断 是否是第一张图, 如果不是则再变成左移时,无需刷新小图的显示状态 
     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(); 集合使用效果更佳。 

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

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

Javascript 相关文章推荐
jQuery的初始化与对象构建之浅析
Apr 12 Javascript
Jquery AJAX POST与GET之间的区别
Nov 14 Javascript
node.js中的path.delimiter方法使用说明
Dec 09 Javascript
使用jQuery实现Web页面换肤功能的要点解析
May 12 Javascript
浅谈JavaScript中面向对象的的深拷贝和浅拷贝
Aug 01 Javascript
VueJs路由跳转——vue-router的使用详解
Jan 10 Javascript
JavaScript阻止表单提交方法(附代码)
Aug 15 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
Oct 20 Javascript
Webpack之tree-starking 解析
Sep 11 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
Nov 08 Javascript
d3.js 地铁轨道交通项目实战
Nov 27 Javascript
微信小程序实现日历签到
Sep 21 Javascript
jQuery 判断元素整理汇总
Feb 28 #Javascript
jQuery倒计时代码(超简单)
Feb 27 #Javascript
js实现图片左右滚动效果
Feb 27 #Javascript
jquery横向纵向鼠标滚轮全屏切换
Feb 27 #Javascript
原生js实现旋转木马轮播图效果
Feb 27 #Javascript
jQuery实现弹窗居中效果类似alert()
Feb 27 #Javascript
js实现简单的手风琴效果
Feb 27 #Javascript
You might like
php中批量替换文件名的实现代码
2011/07/20 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
2014/11/12 PHP
修改PHP脚本使WordPress拦截垃圾评论的方法示例
2015/12/10 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
2016/10/28 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
2018/03/15 PHP
Yii框架模拟组件调用注入示例
2019/11/11 PHP
Z-Blog中用到的js代码
2007/03/15 Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
2013/06/06 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
2013/06/14 Javascript
关闭ie窗口清除Session的解决方法
2014/01/10 Javascript
javascript 终止函数执行操作
2014/02/14 Javascript
js时间比较示例分享(日期比较)
2014/03/05 Javascript
深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解
2015/03/05 Javascript
BootStrap3使用错误记录及解决办法
2016/12/22 Javascript
bootstrap选项卡使用方法解析
2017/01/11 Javascript
JS document文档的简单操作完整示例
2020/01/13 Javascript
vue实现商品列表的添加删除实例讲解
2020/05/14 Javascript
JS猜数字游戏实例讲解
2020/06/30 Javascript
javascript实现简易计算器功能
2020/09/23 Javascript
python标准日志模块logging的使用方法
2013/11/01 Python
python实现ftp客户端示例分享
2014/02/17 Python
Python Pillow Image Invert
2019/01/22 Python
简单分析python的类变量、实例变量
2019/08/23 Python
基于梯度爆炸的解决方法:clip gradient
2020/02/04 Python
解决django 向mysql中写入中文字符出错的问题
2020/05/18 Python
pycharm进入时每次都是insert模式的解决方式
2021/02/05 Python
Orlebar Brown官网:设计师泳裤和泳装
2020/12/08 全球购物
深圳-东方伟业笔试部分
2015/02/11 面试题
木工主管岗位职责
2013/12/08 职场文书
企业演讲稿范文大全
2014/05/20 职场文书
酒会邀请函
2015/01/31 职场文书
2019中秋节祝福语大全,提前收藏啦
2019/09/10 职场文书
python实现图片九宫格分割的示例
2021/04/25 Python
Oracle设置DB、监听和EM开机启动的方法
2021/04/25 Oracle
解决go在函数退出后子协程的退出问题
2021/04/30 Golang
Go归并排序算法的实现方法
2022/04/06 Golang