经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » jQuery » 查看文章
jQuery淡入淡出轮播图实现
来源:cnblogs  作者:QD小白  时间:2019/10/17 9:20:25  对本文有异议

  大家好我是QD小白,这是人生第一次写博客,准备写的内容是Jquery淡入淡出轮播图实现,在此之前学习JS写的轮播图效果都感觉不怎么好,学习了jQuery里的淡入淡出效果后又写了一次轮播图效果明显感觉好了许多。现在我就来分享下自己写轮播图的思路和方法。

 

HTML部分:

  1. <div id="img-box" style="width:700px; height:350px;">
  2. <img style="opacity: 1;" width="700px" height="350px" id="imgis" alt="《雪人奇缘》动画电影桌面壁纸"
  3. src="https://img.ivsky.com/img/bizhi/pre/201909/25/abominable-003.jpg">
  4. <img width="700px" height="350px" id="imgis" alt="葱翠的竹林图片"
  5. src="https://img.ivsky.com/img/tupian/pre/201902/13/zhulin.jpg">
  6. <img width="700px" height="350px" id="imgis" alt="汹涌的海浪图片"
  7. src="https://img.ivsky.com/img/tupian/pre/201903/14/hailang-001.jpg">
  8. <img width="700px" height="350px" id="imgis" alt="计时的沙漏图片"
  9. src="https://img.ivsky.com/img/tupian/pre/201903/14/shalou-002.jpg">
  10. <img width="700px" height="350px" id="imgis" alt="油菜花图片"
  11. src="https://img.ivsky.com/img/tupian/pre/201902/13/youcaihua-002.jpg">
  12. <img width="700px" height="350px" id="imgis" alt="紫乐多肉图片"
  13. src="https://img.ivsky.com/img/tupian/pre/201902/13/zile_duorou.jpg">
  14. <div id="img-left"> < </div>
  15. <div id="img-right"> > </div>
  16. <div id="img-num">
  17. <li class="num-one">0</li>
  18. <li class="num-two">1</li>
  19. <li class="num-three">2</li>
  20. <li class="num-four">3</li>
  21. <li class="num-five">4</li>
  22. <li class="num-six">5</li>
  23. </div>
  24. </div>
HTML:

 CSS部分:

  1. <style>
  2. * {
  3. margin: 0;
  4. padding: 0;
  5. }
  6. #img-box {
  7. position: relative;
  8. border: 25px solid #ccc;
  9. margin: 100px auto;
  10. }
  11. #img-box img {
  12. position: absolute;
  13. display: block;
  14. opacity: 0;
  15. float: left;
  16. cursor:pointer;
  17. }
  18. #img-box #img-left,
  19. #img-box #img-right{
  20. position: absolute;
  21. width: 65px;
  22. height: 120px;
  23. border: 4px solid thistle;
  24. border-radius: 6px;
  25. background-color: black;
  26. opacity: 0.6;
  27. cursor: pointer;
  28. color: #fff;
  29. font-size: 30px;
  30. text-align: center;
  31. line-height: 120px;
  32. }
  33. #img-box #img-left {
  34. left: 1px;
  35. top: 31%;
  36. }
  37. #img-box #img-right {
  38. right: 1px;
  39. top: 31%;
  40. }
  41. #img-box #img-num{
  42. position:absolute;
  43. width:500px;
  44. height:50px;
  45. /* border:2px solid red; */
  46. bottom:0px;
  47. left:15%;
  48. display:flex;
  49. flex-direction:row;
  50. justify-content:space-around;
  51. }
  52. #img-box #img-num li{
  53. display:inline-block;
  54. list-style:none;
  55. font-size:14px;
  56. color:#fff;
  57. text-align: center;
  58. line-height: 40px;
  59. cursor: pointer;
  60. width:45px;
  61. height:40px;
  62. border-radius: 50%;
  63. background-color:black;
  64. }
  65. </style>

   这是HTML 和 CSS两部分。展示的效果是这样的:

 下面的就是JS部分:

  1. <script src="jqwj/jquery-1.12.4.js"></script>
  2. <script>
  3. $(document).ready(function () {
  4. var imgLeath = $("img").length;
  5. var liLeath = $("li").length;
  6. // 显示图片的下标 (全局变量)
  7. var n = 0;
  8. //设置定时器timer
  9. var timer = setInterval(time, 4000);
  10. // 轮播函数
  11. // index 为 隐藏图片 ondex为显示的图片
  12. function time() {
  13. n++;
  14. if (n == imgLeath) {
  15. n = 0;
  16. }
  17. for(var i=0; i<imgLeath; i++) {
  18. $("#img-box img").eq(i).fadeTo(0,0);
  19. }
  20. $("#img-box img").eq((n)).delay(50).fadeTo(500, 1);
  21. }
  22. //设置点击切换效果 (右)
  23. var rightteum;
  24. $("#img-right").click(function () {
  25. for (var i = 0; i < imgLeath; i++)
  26. {
  27. if ($("#img-box img").eq(i).css("opacity") != '0')
  28. {
  29. // 获取当前图片显示的下标
  30. righteum = i;
  31. }
  32. }
  33. if(righteum == 5)
  34. {
  35. righteum = 5;
  36. }
  37. n = (righteum);
  38. time();
  39. });
  40. // 设置点击切换效果 (左)
  41. var lefteum;
  42. $("#img-left").click(function () {
  43. for(var i=0; i<imgLeath; i++){
  44. if($("#img-box img").eq(i).css("opacity") != '0'){
  45. // 获取当前图片的下标
  46. lefteum = i;
  47. }
  48. }
  49. if(lefteum == 0){
  50. lefteum = 6;
  51. }
  52. n = (lefteum-2);
  53. time();
  54. });
  55. // 当鼠标移入框内 轮播图停止
  56. $("#img-box").mouseover(function(){
  57. clearInterval(timer);
  58. });
  59. //当鼠标移出框内 轮播图进行
  60. $("#img-box").mouseout(function(){
  61. timer = setInterval(time,4000);
  62. });
  63. //点击li序号 图片就切换到那一张
  64. for(var i=0; i<liLeath; i++) {
  65. //闭包问题
  66. (function(i){
  67. $("#img-num li").eq(i).click(function(){
  68. // i为切换图片的下标
  69. console.log(i);
  70. //把 (i-1) 传给 n 因为在 time() 函数中 要进行 n++
  71. n = (i-1);
  72. time();
  73. });
  74. })(i)
  75. }
  76. })
  77. </script>

 

   我就来说说我写这个轮播图的想法和思路:

  这个 time()函数 是整个轮播图的关键,轮播图通过jQuery的 fadeTo() 实现显示和隐藏, 定义的是显示哪一张图片的下标, time() 里的 for循环是在显示下一张图片之前 遍历所有图片都隐藏 防止有图片和显示的图片透明度都为1的情况。

  点击按钮切换效果中: for循坏的目的是为了获取6张图片里显示的那一张图片的下标,然后根据 左 右切换的情况 传值 给 n 并且 执行函数 time()。

  鼠标移入移出函数: 启动计时器: timer = setInterval(time,4000);  停止计时器 :clearInterval(timer); 。

  点击li序号切换图片: 通过for()循坏遍历整个li, 这还有个闭包问题 必须使用 立即执行函数,思路和 点击按钮切换效果相同。

 

  这就是写整个轮播图的要用到的,希望大家可以采纳,博客的图片来自天堂图片网挺好看的 。蟹蟹大家哦!!

 

                                                                                                2019-10-16 20:57:14

原文链接:http://www.cnblogs.com/ye16p/p/11688451.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号