JQuery实现轮播图源码

太过爱你忘了你带给我的痛 2022-05-12 02:24 370阅读 0赞

设计:

70

根据上图可以看出,轮播图需要以下元素:外面的盒子div、放置图片集合的盒子ul、放置两侧按钮的盒子div、下侧顺序按钮div

源代码如下:

一、html源码如下:

  1. <div class="outer">
  2. <ul class="img">
  3. <li><a><img src="../static/img/1.jpg"></a></li>
  4. <li><a><img src="../static/img/2.jpg"></a></li>
  5. <li><a><img src="../static/img/3.jpg"></a></li>
  6. <li><a><img src="../static/img/4.jpg"></a></li>
  7. </ul>
  8. <ul class="num">
  9. <li class="current">1</li>
  10. <li>2</li>
  11. <li>3</li>
  12. <li>4</li>
  13. </ul>
  14. <div class="left_btn btn"><</div>
  15. <div class="right_btn btn">></div>
  16. </div>

二、css样式实现:

  1. <style>
  2. /*去掉默认浏览器样式*/
  3. *{
  4. margin: 0;
  5. padding: 0;
  6. }
  7. /*去掉li标签默认样式*/
  8. li{
  9. list-style: none;
  10. }
  11. /*最外层盒子样式处理:
  12. 1.设置与轮播图高宽一致
  13. 2.设置纵向距顶部50px,水平居中
  14. 3.设置自己为固定位置
  15. */
  16. .outer{
  17. height: 470px;
  18. width: 590px;
  19. margin: 50px auto;
  20. position:relative;
  21. }
  22. /*轮播图片集合处理:
  23. 1.将其设置为脱离文档流
  24. 2.设置距顶部和左侧都为0
  25. */
  26. .img li{
  27. position: absolute;
  28. top: 0;
  29. left: 0;
  30. }
  31. /*顺序按钮区域处理:
  32. 1.设置脱离文档流
  33. 2.通过设置text-align、width使其整体水平居中
  34. 3.设置距离底部20px
  35. */
  36. .num{
  37. position: absolute;
  38. text-align: center;
  39. width: 100%;
  40. bottom: 20px;
  41. }
  42. /*顺序按钮处理:
  43. 1.将其设置为行级及块级兼容显示
  44. 2.设置其宽高
  45. 3.设置背景色及字体颜色
  46. 4.设置字体水平居中
  47. 5.通过设置line-height与height一致,使其字体纵向居中
  48. 6.设置其样式为圆形
  49. 7.增加按钮左右间距
  50. */
  51. .num li{
  52. display: inline-block;
  53. width: 20px;
  54. height: 20px;
  55. background-color: darkgray;
  56. color: white;
  57. text-align: center;
  58. line-height: 20px;
  59. border-radius: 50%;
  60. margin: 0 20px;
  61. }
  62. /*左、右按钮相同部分处理:
  63. 1.设置其脱离文档流
  64. 2.设置其宽高
  65. 3.设置背景色及字体颜色
  66. 4.设置字体水平居中
  67. 5.通过设置line-height与height一致,使其字体纵向居中
  68. 6.通过设置top、margin-top使其整体纵向居中
  69. 7.默认不显示
  70. */
  71. .btn{
  72. position: absolute;
  73. width: 20px;
  74. height: 50px;
  75. background-color: darkgray;
  76. color: white;
  77. text-align: center;
  78. line-height: 50px;
  79. top: 50%;
  80. margin-top: -25px;
  81. display: none;
  82. }
  83. /*左侧按钮处理:
  84. 设置左侧为0
  85. */
  86. .left_btn{
  87. left: 0;
  88. }
  89. /*右侧按钮处理:
  90. 设置右侧为0
  91. */
  92. .right_btn{
  93. right: 0;
  94. }
  95. /*鼠标悬浮至轮播图区域时左、右按钮处理:
  96. 1.设置左右按钮显示样式为行级块级兼容
  97. 2.设置鼠标放置在左右按钮时样式为小手
  98. */
  99. .outer:hover .btn{
  100. display: inline-block;
  101. cursor: pointer;
  102. }
  103. /*设置顺序按钮初始按钮样式:
  104. 设置为红色(由于样式级别问题会导致设置无效,可通过两种方式解决:
  105. 1.后面加上!important
  106. 2.将css定位写详细,比如:.outer .num .current{……
  107. */
  108. .current{
  109. background-color: red!important;
  110. }
  111. </style>

三、JQuery实现:

  1. <script src="../static/jquery-3.3.1.min.js"></script>
  2. <script>
  3. /*定义位置:由于图片个数与下侧顺序按钮数量一致,可通过位置进行关联*/
  4. var index=0;
  5. /*当鼠标放到顺序按钮上时:
  6. 1.将当前这个顺序按钮增加样式为红色背景
  7. 2.移除周围其他同级元素红色背景样式
  8. 3.获取当前顺序按钮的index
  9. 4.通过index获取该位置图片
  10. 5.一秒钟渐入该图片
  11. 6.一秒钟渐出其他相邻图片
  12. 7.防止移动过快导致的效果闪现,使用stop方法
  13. */
  14. $(".num li").mousemove(function () {
  15. $(this).addClass("current").siblings().removeClass("current");
  16. index=$(this).index();
  17. $(".img li").eq(index).stop().fadeIn(1000).siblings().stop().fadeOut(1000);
  18. });
  19. /*设置每一秒钟自动轮播:
  20. 1.获取当前位置序号:自加操作;当超过图片最大序号时序号设置为0
  21. 2.设置下侧顺序按钮及轮播图显示
  22. */
  23. var time=setInterval(move,1000);
  24. function move() {
  25. index++;
  26. if (index==4){
  27. index=0
  28. }
  29. $(".num li").eq(index).addClass("current").siblings().removeClass("current");
  30. $(".img li").eq(index).stop().fadeIn(1000).siblings().stop().fadeOut(1000);
  31. };
  32. /*当鼠标划入、划出轮播图区域时:
  33. 1.划入时停止自动轮播
  34. 2.划出时继续自动轮播
  35. */
  36. $(".outer").hover(function () {
  37. clearInterval(time);
  38. },
  39. function () {
  40. time=setInterval(move,1000);
  41. });
  42. /*点击右侧按钮时执行*/
  43. $(".right_btn").click(function () {
  44. move();
  45. });
  46. /*点击左侧按钮时执行*/
  47. function moveL() {
  48. index--;
  49. if (index==-1){
  50. index=3
  51. }
  52. $(".num li").eq(index).addClass("current").siblings().removeClass("current");
  53. $(".img li").eq(index).stop().fadeIn(1000).siblings().stop().fadeOut(1000);
  54. }
  55. $(".left_btn").click(function () {
  56. moveL();
  57. });
  58. </script>

完整源码下载:

https://download.csdn.net/download/baobao267/10665038

发表评论

表情:
评论列表 (有 0 条评论,370人围观)

还没有评论,来说两句吧...

相关阅读

    相关 jQuery实现

    我之前用css3实现轮播图过,不过那是一个简单的轮播图,只能来回切换图片。因为那时候我还没有学过javascript,没学过javascript的同学也可以去我主页看看。当然,

    相关 使用jQuery实现

    大家好,今天给大家带来的就是使用jQuery实现一个简单的轮播图,实现的原理就是: 1、在一个区域内,设置宽高,超出这部分区域就要实现一个隐藏 2、获取图片的大小 为3

    相关 jQuery实现(二)

    这里的轮播为轮播增添了一个效果,前一张图片整体碎成小块块然后上移消失,而下一张图片显示出 ![这里写图片描述][SouthEast] 原理为:事先创建一堆浮动的div(宽

    相关 利用JQuery实现

    上一篇文章写了利用初级JS实现无缝轮播图,但是实际写起来有点费劲,量有些大,如果改用jQuery写无缝轮播图的话,写起来比较便捷,而已逻辑比较清晰,简单,实现起来比较快捷,性能