jq实现滑动轮播效果

桃扇骨 2022-12-17 01:28 319阅读 0赞

1、简单版本(无循环轮播,同时展示多张图片 )

https://juejin.im/post/6844903799115497479

2、复杂版本(循环、自动轮播,同时展示一张图片)

效果图

在这里插入图片描述

源代码

html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>滑动轮播案例</title>
  6. <script src="https://s3.pstatp.com/cdn/expire-1-M/jquery/3.2.1/jquery.min.js"></script>
  7. <link href="lunbo2.css" rel="stylesheet" type="text/css">
  8. </head>
  9. <body>
  10. <div id="wrapper">
  11. <div id="show-area">
  12. <ul>
  13. <!--<li><a href="#"><img style="width: 100%;height: 100%" src="imges/img1.jpg"></a></li>-->
  14. <!--<li><a href="#"><img style="width: 100%;height: 100%" src="imges/img2.jpg"></a></li>-->
  15. <!--<li><a href="#"><img style="width: 100%;height: 100%" src="imges/img3.jpg"></a></li>-->
  16. <!--<li><a href="#"><img style="width: 100%;height: 100%" src="imges/img4.jpg"></a></li>-->
  17. <li>img1</li>
  18. <li>img2</li>
  19. <li>img3</li>
  20. <li>img4</li>
  21. </ul>
  22. <div id="button-left"><</div>
  23. <div id="button-right">></div>
  24. <div id="indicator"></div><!--控制按钮,为了日后方便后台操作这里的控制按钮在js代码中控制添加-->
  25. </div>
  26. </div>
  27. <script src="lunbo2.js"></script>
  28. </body>
  29. </html>

css

  1. *{
  2. padding:0px;
  3. margin:0px;
  4. border:0px;
  5. }
  6. li{
  7. list-style-type:none;
  8. }
  9. /*给a标签去除下划线*/
  10. a{
  11. text-decoration:none;
  12. }
  13. #wrapper{
  14. margin:20px auto;
  15. }
  16. #show-area{ /*宽度在js代码中设置的*/
  17. height:500px;
  18. position:relative;
  19. margin:0px auto;
  20. overflow:hidden;
  21. }
  22. /*注意:找bug找了很久,这里自动插入一张,父容器要加上他的宽度(在js代码中动态计算了),否则怎么显示呢?小问题大解决*/
  23. #show-area ul{
  24. position:relative;
  25. right:0;
  26. }
  27. #show-area ul li{ /*宽度在js代码中设置的*/
  28. float:left;
  29. height:500px;
  30. text-align: center;
  31. line-height: 500px;
  32. }
  33. #show-area ul li:nth-of-type(1){
  34. background-color: #4c3da8;
  35. }
  36. #show-area ul li:nth-of-type(2){
  37. background-color: #a83c39;
  38. }
  39. #show-area ul li:nth-of-type(3){
  40. background-color: #8da86f;
  41. }
  42. #show-area ul li:nth-of-type(4){
  43. background-color: #1492a8;
  44. }
  45. #show-area ul li:nth-of-type(5){
  46. background-color: #4c3da8;
  47. }
  48. /*指示器*/
  49. #indicator{
  50. display: flex;
  51. justify-content: space-between;
  52. width:140px;
  53. position:absolute;
  54. top:450px;
  55. left:0;
  56. right: 0;
  57. margin: auto;
  58. z-index:1;
  59. }
  60. #indicator div{
  61. height:12px;
  62. width:12px;
  63. border-radius:12px;
  64. background-color:#ccc;
  65. float:left;
  66. margin-left:5px;
  67. opacity:0.9;
  68. filter:Alpha(opacity=90);/*为了适应旧的浏览器*/
  69. transition: all .8s;
  70. }
  71. #button-left,#button-right{
  72. position: absolute;
  73. width: 50px;
  74. height: 110px;
  75. z-index: 2;
  76. background-color: #cccccc;
  77. font-size: 40px;
  78. color: #FFFFFF;
  79. text-align: center;
  80. line-height: 110px;
  81. opacity:0;
  82. filter:Alpha(opacity=50);/*为了适应旧的浏览器*/
  83. cursor: default;
  84. }
  85. #button-left{
  86. top: 180px;
  87. left: 0px;
  88. }
  89. #button-right{
  90. top: 180px;
  91. right: 0px;
  92. }
  93. .onclick{
  94. width: 30px !important;
  95. background-color:#FFF !important;
  96. }

js

  1. $(function () {
  2. $('#show-area').css({
  3. width:window.screen.width
  4. })
  5. $('#show-area ul li').css({
  6. width:window.screen.width
  7. })
  8. /*设置鼠标移动到整个show区域则左右按钮显示出来,否则不显示*/
  9. $("#show-area").mouseenter(function () {
  10. $("#button-right,#button-left").css({ opacity:0.5,transition:'all .5s'});
  11. });
  12. $("#show-area").mouseleave(function () {
  13. $("#button-right,#button-left").css({ opacity:0,transition:'all .5s'});
  14. });
  15. var i=0;
  16. /*假装自己很智能,自动获取一下,在后面left值移动时就可以用它了*/
  17. var imgWidth = $("#show-area ul li").width();
  18. var clone = $("#show-area ul li").first().clone(true);
  19. /*copy 第一张的照片并且添加到最后已达到无缝对接的效果*/
  20. $("#show-area ul").append(clone);
  21. /*get 所有li的个数,只有length才是属性*/
  22. var size = $("#show-area ul li").length;
  23. $('#show-area ul').css({
  24. width:imgWidth*size
  25. })
  26. /*step 1: */
  27. //一开始循环添加按钮
  28. //为什么要size - 1?因为最后一张图片只是作一个过渡效果我们显示的始终还是4张图片
  29. //所以添加按钮的时候我们也应该添加4个按钮
  30. for(var j=0;j<size -1 ;j++){
  31. $("#indicator").append("<div></div>");
  32. }
  33. $("#indicator div").eq(i).addClass("onclick");
  34. /*step 2: */
  35. //左按钮
  36. $("#button-left").click(function () {
  37. toLeft();
  38. });
  39. //右按钮
  40. $("#button-right").click(function () {
  41. toRight();
  42. });
  43. /*step 3:*/
  44. //按钮指示器鼠标移出移入事件
  45. $("#indicator div").hover(function () {
  46. i = $(this).index();
  47. clearInterval(timer);
  48. $("#show-area ul").stop().animate({ left:-i * imgWidth});
  49. $(this).addClass("onclick").siblings().removeClass("onclick");
  50. },function () {
  51. timer = setInterval(function () {
  52. toRight();
  53. },2000)
  54. });
  55. //两个方向按钮鼠标移出移入事件
  56. $("#button-left,#button-right").mouseenter(function () {
  57. clearInterval(timer);
  58. }).mouseleave(function () {
  59. timer = setInterval(function () {
  60. toRight();
  61. },2000);
  62. });
  63. //定时器,注意,这里是最开始启动的,所以呢,这里不设值,会导致页面开始刷新出现错误。
  64. var timer = setInterval(function () {
  65. toRight();
  66. },2000);
  67. /*step 2-2*/
  68. //左按钮实现的函数
  69. function toLeft(){
  70. //同理,如果当前图片位置是第一张图片我再按一下右按钮那么我们也利用css的快速变换使它的位置来到最后一张图片的位置(size-1),并且让倒数第二张图片滑动进来
  71. i--;
  72. if(i==-1){
  73. $("#show-area ul").css({ left:-(size - 1)*imgWidth});
  74. i=size-2;
  75. }
  76. $("#show-area ul").animate({ left:-i*imgWidth},1000);
  77. $("#indicator div").eq(i).addClass("onclick").siblings().removeClass("onclick");
  78. }
  79. /*step2-2:*/
  80. //右按钮的实现函数
  81. function toRight() {
  82. i++;
  83. /*当前图片为最后一张图片的时候(我们一开始复制并且添加到ul最后面的图片) 并且再点击了一次左按钮,这时候我们就利用css的快速转换效果把ul移动第一张图片的位置 并且第二张图片滑入达到无缝效果(css的变换效果很快我们肉眼是很难看见的)*/
  84. if(i==size){
  85. $("#show-area ul").css({ left:0});
  86. i=1;
  87. }
  88. $("#show-area ul").stop().animate({ left: -i * imgWidth}, 1000);
  89. //设置下面指示器的颜色索引
  90. if(i == size-1){
  91. $("#indicator div").eq(0).addClass("onclick").siblings().removeClass("onclick");
  92. }else{
  93. $("#indicator div").eq(i).addClass("onclick").siblings().removeClass("onclick");
  94. }
  95. }
  96. });

发表评论

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

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

相关阅读

    相关 jq实现

    运用新学的JQ基础做一个简单的轮播 首先 建立一个DIV来存放图片。 要设置插入图片的DIV的长度 核心的JQ语句是ANIMATED(“转入方法”,时间)

    相关 js实现滑动

    js的轮播图无论网页还是移动端都随处可见,本文用简单的方法来实现js的普通轮播图与滑动轮播图。(废话不多说,关键思路都写在代码注释处) js普通轮播 简单描述一下js普

    相关 HTML+CSS+JQ实现图片效果

    焦点图广泛运用于主页的醒目位置放置广告,简单好用,加上效果也很好看。 实现的效果: 5张图片每两秒轮播一次,右下角的数字随图片而变换,鼠标放在数字上图片停止,移走

    相关 jq实现图片的效果

    用jq实现轮播图片的效果 使用jq实现简单的图片轮播效果,图片自动轮播功能,左右点击滑动功能,鼠标进入数字列表时实现图片滑动功能;主要是通过操作图片数组删除和添加的元素,