当前位置:   article > 正文

轮播图的实现原理_html轮播原理

html轮播原理

一。实现轮播图最主要的就是定时器 (setInterval 函数和 clearInterval 函数),他们分别是定时和清除定时。

二 。html代码如下:

  1. <div class="warp">
  2. <div class="mod-tab">
  3. <ul id="list">
  4. <li class="tab-con" style="opacity: 1">
  5. <span class="pic">
  6. <a href="#" style="background-image: url(image/1.jpg)"></a>
  7. </span>
  8. </li>
  9. <li class="tab-con" style="opacity: 0">
  10. <span class="pic">
  11. <a href="#" style="background-image: url(image/2.jpg)"></a>
  12. </span>
  13. </li>
  14. <li class="tab-con" style="opacity: 0">
  15. <span class="pic">
  16. <a href="#" style="background-image: url(image/3.jpg)"></a>
  17. </span>
  18. </li>
  19. <li class="tab-con" style="opacity: 0">
  20. <span class="pic">
  21. <a href="#" style="background-image: url(image/4.jpg)"></a>
  22. </span>
  23. </li>
  24. <li class="tab-con" style="opacity: 0">
  25. <span class="pic">
  26. <a href="#" style="background-image: url(image/5.jpg)"></a>
  27. </span>
  28. </li>
  29. <li class="tab-con" style="opacity: 0">
  30. <span class="pic">
  31. <a href="#" style="background-image: url(image/6.jpg)"></a>
  32. </span>
  33. </li>
  34. <li class="tab-con" style="opacity: 0">
  35. <span class="pic">
  36. <a href="#" style="background-image: url(image/7.jpg)"></a>
  37. </span>
  38. </li>
  39. <li class="tab-con" style="opacity: 0">
  40. <span class="pic">
  41. <a href="#" style="background-image: url(image/8.jpg)"></a>
  42. </span>
  43. </li>
  44. </ul>
  45. <div id="gb-tab" class="gb-tab">
  46. <a href="javascript:;" class="item2"></a>
  47. <a href="javascript:;" class="item"></a>
  48. <a href="javascript:;" class="item"></a>
  49. <a href="javascript:;" class="item"></a>
  50. <a href="javascript:;" class="item"></a>
  51. <a href="javascript:;" class="item"></a>
  52. <a href="javascript:;" class="item"></a>
  53. <a href="javascript:;" class="item"></a>
  54. </div>
  55. <a href="javascript:;" id="prev" class="arrow"><</a>
  56. <a href="javascript:;" id="next" class="arrow">></a>
  57. </div>
  58. </div>
  59. <script type="text/javascript" src="jquery-3.2.1.min.js"></script>
  60. <script type="text/javascript" src="index.js"></script>
上面是用八张图实现的轮播的html图。

三。css代码如下:

  1. .warp{
  2. width: 100%;
  3. }
  4. .mod-tab{
  5. width: 100%;
  6. min-width: 1200px;
  7. height: 383px;
  8. margin: 0 auto 30px;
  9. position: relative;
  10. }
  11. .gb-tab-pn{
  12. overflow: hidden;
  13. height: 383px;
  14. position: relative;
  15. }
  16. ul{
  17. list-style: none;
  18. }
  19. .tab-con{
  20. height: 383px;
  21. width: 100%;
  22. position: absolute;
  23. top: 0;
  24. left: 0;
  25. }
  26. .pic{
  27. height: 383px;
  28. width: 100%;
  29. }
  30. .pic a{
  31. display: block;
  32. width: 100%;
  33. height: 383px;
  34. background-position: center center;
  35. background-repeat: no-repeat;
  36. }
  37. .gb-tab{
  38. overflow: hidden;
  39. position: absolute;
  40. z-index: 60;
  41. bottom: 0;
  42. height: 40px;
  43. width: 100%;
  44. text-align: center;
  45. }
  46. .gb-tab .item{
  47. display: inline-block;
  48. width: 16px;
  49. height: 16px;
  50. border-radius: 50%;
  51. margin: 6px;
  52. color: #6ff;
  53. background-color: #003c49;
  54. text-align: center;
  55. line-height: 16px;
  56. }
  57. .item2{
  58. display: inline-block;
  59. width: 16px;
  60. height: 16px;
  61. border-radius: 50%;
  62. margin: 6px;
  63. color: #6ff;
  64. background-color: #ffffff;
  65. text-align: center;
  66. line-height: 16px;
  67. }
  68. .gb-tab a:hover{
  69. background-color: #ffffff;
  70. }
  71. .on{
  72. background-color: #ffffff;
  73. }
  74. .arrow{
  75. position: absolute;
  76. top: 171px;
  77. z-index: 99;
  78. display: none;
  79. width: 40px;
  80. height: 40px;
  81. font-size: 36px;
  82. font-weight: bold;
  83. line-height: 39px;
  84. text-align: center;
  85. color: #fff;
  86. background-color: RGBA(0, 0, 0, .3);
  87. cursor: pointer;
  88. }
  89. .arrow:hover {
  90. background-color: RGBA(0, 0, 0, .7);
  91. }
  92. .warp:hover .arrow {
  93. display: block;
  94. }
  95. #prev {
  96. left: 20px;
  97. }
  98. #next {
  99. right: 20px;
  100. }
css代码主要是用来定位。

四。js代码如下:

  1. var list = $('#list .tab-con'); //获取与图片相关的<li>对象
  2. var container = $('.mod-tab'); //获取整个轮播图容器对象
  3. var index = 1; //指当前图片对象
  4. var timer; //定时对象
  5. var buttons = $('#gb-tab a'); //获取图片下面的按钮对象
  6. var prev = $('#prev'); //获取左按钮对象
  7. var next = $('#next'); //获取右按钮对象
  8. var stateNext = true;
  9. var statePrev = true;
  10. $(document).ready(function(){
  11. container.mouseover(function(){ //用于鼠标进入轮播图区域停止轮播
  12. stop();
  13. });
  14. container.mouseout(function(){ //用于鼠标离开轮播图区域开始轮播
  15. play();
  16. });
  17. for (var i = 0; i < buttons.length; i++) { //循环绑定下面按钮的点击事情
  18. (function (i) {
  19. buttons[i].onclick = function () {
  20. index = i + 1;
  21. imgShow();
  22. buttonsShow();
  23. }
  24. })(i)
  25. }
  26. prev.click(function () { //点击左按钮轮播图片事件。利用延时器解决无限点击问题。
  27. if(statePrev){
  28. index -= 1;
  29. if (index < 1) {
  30. index = 8
  31. }
  32. imgShow();
  33. buttonsShow();
  34. statePrev = false;
  35. setTimeout(function(){
  36. statePrev = true;
  37. },2000)
  38. }
  39. });
  40. next.click(function () {
  41. //由于上边定时器的作用,index会一直递增下去,我们只有8个小圆点,所以需要做出判断
  42. if(stateNext){
  43. index += 1;
  44. if (index > 8) {
  45. index = 1
  46. }
  47. imgShow();
  48. buttonsShow();
  49. stateNext = false;
  50. setTimeout(function(){
  51. stateNext = true
  52. },2000)
  53. }
  54. });
  55. });
  56. function play() { //开始轮播函数
  57. //重复执行的定时器
  58. timer = setInterval(function () {
  59. index += 1;
  60. if (index > 8) {
  61. index = 1
  62. }
  63. imgShow();
  64. buttonsShow();
  65. }, 4000)
  66. }
  67. function stop() { //停止轮播函数
  68. clearInterval(timer);
  69. }
  70. function imgShow(){ //图片显示函数
  71. for (var i = 0; i < list.length; i++) {
  72. if (list.eq(i).css('opacity') == 1) {
  73. list.eq(i).fadeTo(1000,0);
  74. }
  75. }
  76. list.eq(index - 1).fadeTo(1000,1);
  77. }
  78. function buttonsShow() { 图片下面按钮的显示函数。
  79. //将之前的小圆点的样式清除
  80. for (var i = 0; i < buttons.length; i++) {
  81. if (buttons[i].className == "item2") {
  82. buttons[i].className = "item";
  83. }
  84. }
  85. buttons[index - 1].className = "item2";
  86. }
  87. play();

五。总结。

在html ,css 已经写好的情况下。最主要的就是js的功能问题了。轮播图的功能步骤如下:

     1.先让图片轮播起来。基本就是写一个 play函数里面加定时器,每次使图片的index对象加一,当index大于最大值时,设置index等于第 一张图片.这样轮播图就动起来了。

    2. 轮播图动起来基本就是只显示一张图片隐藏其他的图片。我上面使用的是opacity 。

    3. 图片下面的按钮。主要就是使下面的按钮与上面的图片一一对应。然后点击下面的按钮显示对应的图片。

     4. 左右的上一张和下一张按钮。点击左边的上一张按钮图片向前显示,实现原理就是使 index 对象减一。点击左边的下一张按钮图片向后显示,实现原理就是使 index 对象加一。 

    5. 对应上一张和下一张连续点击的问题就是给这两个按钮加上延时器。

    6. 当鼠标放在轮播图区域时停止轮播,实现原理就是清除定时器,离开开始轮播就是加上定时器。


  代码所在地:https://git.oschina.net/huangzuomin/lunbotu.git

  轮播图封装后可以直接用,下载地址:https://git.oschina.net/huangzuomin/carouselFigure.git

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/682542
推荐阅读