当前位置:Gxlcms > JavaScript > jQuery图片切换动画效果

jQuery图片切换动画效果

时间:2021-07-01 10:21:17 帮助过:479人阅读

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

效果图:


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

直接上代码:

  1. //////
  2. // 2017-2-27 //
  3. //////
  4. $(function(){
  5. var num = 0;
  6. var divStr = '#imageShowSmallAnchor'; // 移动 div
  7. var s = 300;
  8. $('.imgNum').click(function(){
  9. var _this = $(this);
  10. var status = _this.attr('data-status');
  11. var total_num = _this.parent().find('ul li').length;
  12. var numSPic = 4;//最多显示的小图的个数
  13. var src;
  14. if(status == 'left'){
  15. if(num <= 0){
  16. num = total_num-1;
  17. }else{
  18. num--;
  19. }
  20. }else{
  21. if(num >= total_num-1){
  22. num = 0;
  23. }else{
  24. num++;
  25. }
  26. }
  27. // 4 一次做多显示四张小图 $("#div").stop(false, true);//让当前动画直接到达末状态 ,继续下一个动画
  28. // 第一种情况 当小图数量小于5时, 直接进行右移。
  29. if (total_num <= numSPic) {$(divStr).stop(true,false).animate(
  30. {left:num*106+39+"px"},s);
  31. } else{
  32. ////////
  33. // 图片左移 //
  34. ////////
  35. if (status == 'left') {
  36. if (num < total_num - numSPic) {
  37. _this.parent().find('ul li').eq(num).show();
  38. } else{
  39. // 特殊情況 左移时,从第一张图切换到最后一张图时
  40. // if判断 当前是否显示最后张图,如果不是最后一张图 则当变成右移时,无需刷新小图的显示状态。
  41. // 左移时,需要将李 全部隐藏后, 再将最后的 numSPice 张图显示出来,
  42. if (num == total_num - 1) {
  43. _this.parent().find('ul li').hide();
  44. for (var x = total_num-1; x >= total_num - numSPic; x--) {
  45. _this.parent().find('ul li').eq(x).show();
  46. }
  47. }
  48. }
  49. } else{
  50. ////////
  51. // 图片右移 //
  52. ////////
  53. if (num >= numSPic) {
  54. _this.parent().find('ul li').eq(num-numSPic).hide();
  55. } else{
  56. // 特殊情況 右移时,从最后一张图切换到第一张图时
  57. // 判断 是否是第一张图, 如果不是则再变成左移时,无需刷新小图的显示状态
  58. if (num == 0) {
  59. for (var x = 0; x < numSPic; x ++) {
  60. _this.parent().find('ul li').eq(x).show();
  61. }
  62. }
  63. }
  64. }
  65. // 快速点击切换时吗,动画出现滞后和反复问题,
  66. // 让当前动画直接到达末状态 ,继续下一个动画 $('#div').stop(false, ture); $('#div').stop().animate(); 集合使用效果更佳。
  67. $(divStr).stop(false, true);
  68. ////////
  69. // 样式左移 //
  70. ////////
  71. if (status == 'left') {
  72. // 39 定位divStr 的left距离 父级元素的像素距离
  73. // 等样式移动到最右边时,样式位置固定
  74. // $(divStr).position().left 获取定位元素 left值。
  75. if ($(divStr).position().left <= 39 ) {
  76. $(divStr).stop().animate({left:"39px"});
  77. // 当从第一张切换到最后一张时,样式应在最右边。
  78. if (num==total_num-1) {
  79. $(divStr).stop().animate({left:3 * 106 + 39 + "px"},s);
  80. }
  81. } else{
  82. $(divStr).stop().animate({left:"-=106px"},s);
  83. }
  84. } else{
  85. ////////
  86. // 样式右移 //
  87. ////////
  88. if ($(divStr).position().left >= 357) {
  89. $(divStr).stop().animate({left:"357px"});
  90. // 当从最后一张切换到第一张时,样式应在最左边。
  91. if (num==0) {
  92. $(divStr).stop().animate({left:"39px"},s);
  93. }
  94. } else{
  95. $(divStr).stop().animate({left:"+=106px"},s);
  96. }
  97. }
  98. }
  99. src = _this.parent().find('ul li').eq(num).find('img').attr('src');
  100. _this.parents('.xq-imgSW').find('.imgSW-top li img').attr('src',src);
  101. });
  102. // 点击小图切换 大图 和小图上的样式。
  103. $('.imgSW-bt li').click(function(){
  104. var _this = $(this);
  105. var src;
  106. num = _this.index();
  107. // parseInt(10/3); 整除
  108. // 获取点击的位置,来计算 样式的位置。
  109. var X = parseInt(_this.position().left/106);
  110. $(divStr).stop().animate({left:X*106+39+"px"},s);
  111. src = _this.find('img').attr('src');
  112. _this.parents('.xq-imgSW').find('.imgSW-top li img').attr('src',src);
  113. });
  114. });

HTML 界面代码:

  1. <div class="xq-imgSW">
  2. <div class="imgSW-top">
  3. <ul>
  4. <li><img src="images/xq-img1.png" alt=""></li>
  5. </ul>
  6. </div>
  7. <div class="clear"></div>
  8. <div class="imgSW-bt">
  9. <input class="imgSW-zuo imgNum" type="button" data-status="left">
  10. <div id="imageShowSmallAnchor"></div>
  11. <ul>
  12. <li class="imgSW-xz"><img class="imgex" src="images/xq-img-s1.png" style="width:90px;height:60px;" alt="">
  13. <div class="imgSW-bot">户型1</div>
  14. </li>
  15. <li><img src="images/xq-img-s2.png" style="width:90px;height:60px;" alt="">
  16. <div class="imgSW-bot">户型2</div>
  17. </li>
  18. <li><img src="images/xq-img-s3.png" style="width:90px;height:60px;" alt="">
  19. <div class="imgSW-bot">户型3</div>
  20. </li>
  21. <li><img src="images/xq-img-s4.png" style="width:90px;height:60px;" alt="">
  22. <div class="imgSW-bot">户型4</div>
  23. </li>
  24. <li><img src="images/xq-img-s4.png" style="width:90px;height:60px;" alt="">
  25. <div class="imgSW-bot">户型5</div>
  26. </li>
  27. <li><img src="images/xq-img-s4.png" style="width:90px;height:60px;" alt="">
  28. <div class="imgSW-bot">户型6</div>
  29. </li>
  30. <li><img src="images/xq-img-s4.png" style="width:90px;height:60px;" alt="">
  31. <div class="imgSW-bot">户型7</div>
  32. </li>
  33. <li><img src="images/xq-img-s4.png" style="width:90px;height:60px;" alt="">
  34. <div class="imgSW-bot">户型8</div>
  35. </li>
  36. </ul>
  37. <input class="imgSW-you imgNum" data-status="right" type="button">
  38. </div>
  39. </div>

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

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

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

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

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

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

人气教程排行