• Jquery版轮播图超详细


    目录

    主要功能介绍:

    1、先搭建框架

    2、html和css代码

    三、jquery代码


    原生js的轮播图也写过,如需观看请您移步我的其他文章~

    主要功能介绍:

    鼠标移动到轮播图中显示左右按钮,轮播图片的定时器停止

    鼠标移出轮播图隐藏左右按钮,轮播图片的定时器开始

    动态创建下面的小圆点

    无缝滚动效果

    点击左右按钮能切换图片,点击小圆点也能切换到对应的图片中,定时器切换图片

    使用时间阀,只有点击左右按钮图片运动完成之后,点击左右按钮才能再次滚动,防止点击左右按钮次数过多,图片滚动过快的情况

    1、先搭建框架

    标签如下图所示

    2、html和css代码

    如下图所示,简单写一下,重要是学习jquery代码 

    html代码:


       
       
       
        轮播图
       
       
       
       


       


           

                 

    •                
                 

    •            

    •                
                 

    •            

    •                
                 

    •            

    •                
                 

    •            

    •                
                 

    •        

           

             

           
           
       

    注意引入文件!

    1. <head>
    2. <meta charset="UTF-8">
    3. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    4. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    5. <title>轮播图</title>
    6. <link rel="stylesheet" href="jquery.min.js">
    7. <link rel="stylesheet" href="index.css">
    8. <script src="jquery.min.js"></script>
    9. <script src="index.js"></script>
    10. </head>
    11. <body>
    12. <div class="focus">
    13. <ul id="slide">
    14. <li>
    15. <img src="images/1.jpg" alt="">
    16. </li>
    17. <li>
    18. <img src="images/2.jpg" alt="">
    19. </li>
    20. <li>
    21. <img src="images/3.jpg" alt="">
    22. </li>
    23. <li>
    24. <img src="images/4.jpg" alt="">
    25. </li>
    26. <li>
    27. <img src="images/5.jpg" alt="">
    28. </li>
    29. </ul>
    30. <ol>
    31. </ol>
    32. <span class="left"></span>
    33. <span class="right"></span>
    34. </div>

    css代码:

    1. * {
    2. margin: 0;
    3. padding: 0;
    4. }
    5. .focus {
    6. overflow: hidden;
    7. border-radius: 20px;
    8. position: relative;
    9. width: 800px;
    10. height: 500px;
    11. background-color: pink;
    12. margin: 0 auto;
    13. }
    14. li {
    15. list-style: none;
    16. }
    17. #slide {
    18. position: absolute;
    19. left: 0;
    20. top: 0;
    21. width: 4900px;
    22. height: 500px;
    23. }
    24. #slide li {
    25. float: left;
    26. width: 800px;
    27. height: 500px;
    28. }
    29. #slide li img {
    30. width: 100%;
    31. }
    32. ol {
    33. position: absolute;
    34. padding: 0 15px;
    35. height: 20px;
    36. bottom: 20px;
    37. left: 50%;
    38. transform: translateX(-50%);
    39. border-radius: 10px;
    40. background-color: rgba(0, 0, 0, .3);
    41. }
    42. .left {
    43. display: none;
    44. position: absolute;
    45. left: 10px;
    46. top: 50%;
    47. transform: translateY(-50%);
    48. width: 40px;
    49. height: 40px;
    50. background-color: rgba(0, 0, 0, .3);
    51. }
    52. .left::after {
    53. content: '';
    54. position: absolute;
    55. top: 10px;
    56. left: 15px;
    57. width: 20px;
    58. height: 20px;
    59. transform: rotate(-135deg);
    60. border-top: 1px solid #fff;
    61. border-right: 1px solid #fff;
    62. }
    63. .right {
    64. display: none;
    65. position: absolute;
    66. right: 10px;
    67. top: 50%;
    68. transform: translateY(-50%);
    69. width: 40px;
    70. height: 40px;
    71. background-color: rgba(0, 0, 0, .3);
    72. }
    73. .right::after {
    74. content: '';
    75. position: absolute;
    76. top: 10px;
    77. right: 15px;
    78. width: 20px;
    79. height: 20px;
    80. transform: rotate(45deg);
    81. border-top: 1px solid #fff;
    82. border-right: 1px solid #fff;
    83. }
    84. ol li {
    85. float: left;
    86. width: 15px;
    87. height: 15px;
    88. border-radius: 8px;
    89. margin-top: 2px;
    90. margin-right: 7px;
    91. background-color: #fff;
    92. }
    93. ol li:last-child {
    94. margin-right: 0;
    95. }
    96. .current {
    97. background-color: orange;
    98. }

    三、jquery代码

    注意点:

    1、ul必须使用position:absolute才能正常使用动画。

    2、为了实现无缝连接,要将第1个li深度克隆并放到ul的后面

    3、 定义节流阀,防止图片切换过快

    4、先判断再进行轮播图的移动,否则会报错

    5、设置定时器,自动播放图片

    1. $(function() {
    2. // 当鼠标移入focus时,显示左右按钮
    3. $('.focus').on('mouseenter', function() {
    4. $('.left').css('display', 'block');
    5. $('.right').css('display', 'block');
    6. // 停止定时器
    7. clearInterval(timer);
    8. timer = null;
    9. })
    10. $('.focus').on('mouseleave', function() {
    11. $('.left').css('display', 'none');
    12. $('.right').css('display', 'none');
    13. // 创建定时器,继续轮播
    14. timer = setInterval(function() {
    15. // 因为是继续右点击的操作,所以会接着停止的地方继续轮播
    16. $(".right").click();
    17. }, 2000)
    18. });
    19. // 动态创建小圆圈 数量根据ul li的数量决定
    20. var num = $("#slide").children().length;
    21. for (var i = 0; i < num; i++) {
    22. $('ol').append('
    23. + i + '">
    24. ');
  • }
  • var number = 0;
  • // 给uol 里面面的第一个li添加current类名
  • console.log($("ol li").eq(0).addClass('current'));
  • $("ol li").on('click', function() {
  • // number0开始的
  • number = $(this).attr('data-index');
  • // 返回的是string类型的数据,转化为number类型的数据才能用在eq()里面
  • number = parseInt(number);
  • // 将里面点击到的那个圆点添加类名
  • $("ol li").eq(number).addClass('current').siblings().removeClass('current');
  • // 做动画
  • if (number >= $("#slide").children().length) {
  • console.log($("#slide").children().length);
  • }
  • $('#slide').animate({
  • left: (800 * -number)
  • })
  • });
  • // 为了实现无缝连接,要将第1个li深度克隆并放到ul的后面
  • var first = $("#slide").children(0)[0].cloneNode(true);
  • $("#slide").append(first);
  • // 定义节流阀,防止图片切换过快
  • var flag = true;
  • // 点击右侧按钮实现ul的轮播效果
  • $(".right").on('click', function() {
  • if (flag) {
  • flag = false;
  • number++;
  • // 先判断再进行移动,否则会报错
  • // 如果他的number5到达第六个(复制的第一个),还是执行向右滑动的操作[应该是滑动到第一个]
  • // 如果number6,就让他的left迅速的回到第一个的位置,并再次做动画让他到第二个的位置
  • if (number >= ($("#slide").children().length)) {
  • $("#slide").css('left', 0);
  • number = 1;
  • };
  • getslide();
  • }
  • });
  • // 点击左侧按钮实现ul的轮播效果
  • $(".left").on('click', function() {
  • if (flag) {
  • flag = false;
  • number--;
  • if (number <= -1) {
  • // -4000就是拷贝图片的坐标
  • $("#slide").css('left', -4000);
  • number = 4;
  • }
  • getslide();
  • }
  • });
  • // 封装成函数,减少代码量
  • function getslide() {
  • $("#slide").animate({
  • left: -number * 800
  • }, 500, function() {
  • flag = true;
  • });
  • //进行一个判断,因为当轮播到最后一张图的时候为了无缝连接还需要轮播复制的第一张图
  • // 所以暂时number还不能为0;但是下面的按钮此时应该转到为第一个,所以进行判断语句·
  • if (number >= 5) {
  • num = 0;
  • } else {
  • num = number;
  • }
  • $("ol li").eq(num).addClass('current').siblings().removeClass('current');
  • };
  • // 设置定时器,自动播放图片
  • var timer = setInterval(function() {
  • $(".right").click();
  • }, 2000)
  • })
  • 相关阅读:
    k8s TLS bootstrap解析-k8s TLS bootstrap流程分析
    数据可视化分析之新技能——魔数图
    mysql导出表结构到excel
    【Java】怎么处理Oracle的Clob类型字段
    Java 并发编程解析 | 如何正确理解Java领域中的锁机制,我们一般需要掌握哪些理论知识?
    PMP考试有用吗?
    VL100是一个高度集成的单芯片显示端口替代模式控制器
    Mybatis 动态语言 - mybatis-thymeleaf
    Jetson Nano TensorRT C++加速 YOLOV5,集成进qt项目中
    提升前端性能的 JavaScript 技巧
  • 原文地址:https://blog.csdn.net/m0_45142186/article/details/126862667