怎么用jq实现简单的轮播图呢?

首先完成基本html结构:
| <div id="app"> |
| <div class="wrapper"> |
| |
| <div class="photo"> |
| <ul> |
| <li><img src="./images/1.jpg" alt=""></li> |
| <li><img src="./images/2.jpg" alt=""></li> |
| <li><img src="./images/3.jpg" alt=""></li> |
| <li><img src="./images/4.jpg" alt=""></li> |
| <li><img src="./images/5.jpg" alt=""></li> |
| |
| <li><img src="./images/1.jpg" alt=""></li> |
| </ul> |
| </div> |
| |
| <div class="point"> |
| <ol> |
| <li data-index="0" class="active">1</li> |
| <li data-index="1">2</li> |
| <li data-index="2">3</li> |
| <li data-index="3">4</li> |
| <li data-index="4">5</li> |
| </ol> |
| </div> |
| |
| <div class="btn left"><i></i></div> |
| <div class="btn right"><i></i></div> |
| </div> |
| </div> |
复制
然后是css样式:
| <style> |
| * { |
| padding: 0; |
| margin: 0; |
| list-style: none; |
| } |
| |
| img { |
| vertical-align: middle; |
| } |
| |
| .wrapper { |
| width: 500px; |
| height: 200px; |
| padding: 10px; |
| border: 1px solid #ccc; |
| background-color: #fff; |
| position: relative; |
| } |
| |
| .photo { |
| width: 500px; |
| height: 200px; |
| overflow: hidden; |
| } |
| |
| .photo ul { |
| width: 1000%; |
| height: 200px; |
| } |
| |
| .photo ul li { |
| width: 10%; |
| float: left; |
| } |
| |
| .point { |
| position: absolute; |
| right: 20px; |
| bottom: 20px; |
| } |
| |
| .point ol li { |
| width: 24px; |
| height: 24px; |
| border: 1px solid #ccc; |
| float: left; |
| margin: 0 5px; |
| background-color: #fff; |
| text-align: center; |
| line-height: 24px; |
| font-size: 15px; |
| cursor: pointer; |
| } |
| |
| .point ol li.active { |
| background-color: yellow; |
| } |
| |
| .btn { |
| position: absolute; |
| top: 50%; |
| margin-top: -20px; |
| width: 40px; |
| height: 40px; |
| background-color: rgba(0, 0, 0, .3); |
| cursor: pointer; |
| text-align: center; |
| line-height: 40px; |
| } |
| |
| .btn.left { |
| left: 20px; |
| } |
| |
| .btn.right { |
| right: 20px; |
| } |
| |
| .btn i { |
| display: inline-block; |
| vertical-align: middle; |
| width: 14px; |
| height: 14px; |
| border-bottom: 3px solid rgba(255, 255, 255, .5); |
| |
| } |
| |
| .btn.left i { |
| border-left: 3px solid rgba(255, 255, 255, .5); |
| transform: rotate(45deg); |
| margin-left: 10px; |
| } |
| |
| .btn.right i { |
| border-right: 3px solid rgba(255, 255, 255, .5); |
| transform: rotate(-45deg); |
| margin-right: 10px; |
| } |
| </style> |
复制
然后就是最重要的script了,记得先引入jq哦!!
| //引入jQuery |
| <script src="./jquery/jquery.js"></script> |
| <script> |
| |
| var index = 0; |
| var index2 = 0; |
| |
| var width = parseInt($(".photo").find('img').css("width")); |
| |
| |
| var toRight = function () { |
| index++; |
| if (index > 5) { |
| index = 1; |
| $(".photo ul").css("marginLeft", "0px") |
| } |
| $('ul').animate({ |
| marginLeft: -(width * index) |
| }) |
| index2++; |
| if (index2 > 4) { |
| index2 = 0 |
| } |
| getDH(index2); |
| } |
| |
| var getDH = function (index2) { |
| for (var j = 0; j < $('.point ol li').length; j++) { |
| $('.point ol li').eq(j).removeClass('active') |
| } |
| $('.point ol li').eq(index2).addClass('active') |
| } |
| |
| |
| var toLeft = function () { |
| index-- |
| if (index < 0) { |
| index = 4; |
| $(".photo ul").css("marginLeft", `-${width * 5}px`) |
| } |
| $('ul').animate({ |
| marginLeft: -(width * index) |
| }) |
| index2--; |
| if (index2 < 0) { |
| index2 = 4; |
| } |
| getDH(index2); |
| } |
| |
| var timer = setInterval(function () { |
| toRight(); |
| }, 1500) |
| |
| |
| $('.point ol li').on('click', function () { |
| |
| $(this).addClass('active').siblings().removeClass('active'); |
| index2 = $(this).attr("data-index"); |
| $('ul').animate({ |
| marginLeft: -(width * index2) |
| }) |
| }) |
| |
| |
| $('.right').on("click", toRight); |
| $('.left').on("click", toLeft); |
| |
| |
| $('.wrapper').on("mouseenter", function () { |
| clearInterval(timer); |
| |
| }) |
| |
| |
| $('.wrapper').on('mouseleave', function () { |
| timer = setInterval(function () { |
| toRight(); |
| }, 3000) |
| }) |
| |
| </script> |
复制
这样子就实现了!
下面是全部代码:
| <!DOCTYPE html> |
| <html lang="zh"> |
| |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <meta http-equiv="X-UA-Compatible" content="ie=edge"> |
| <title>轮播图</title> |
| <script src="./jquery/jquery.js"></script> |
| <style> |
| * { |
| padding: 0; |
| margin: 0; |
| list-style: none; |
| } |
| |
| img { |
| vertical-align: middle; |
| } |
| |
| .wrapper { |
| width: 500px; |
| height: 200px; |
| padding: 10px; |
| border: 1px solid #ccc; |
| background-color: #fff; |
| position: relative; |
| } |
| |
| .photo { |
| width: 500px; |
| height: 200px; |
| overflow: hidden; |
| } |
| |
| .photo ul { |
| width: 1000%; |
| height: 200px; |
| } |
| |
| .photo ul li { |
| width: 10%; |
| float: left; |
| } |
| |
| .point { |
| position: absolute; |
| right: 20px; |
| bottom: 20px; |
| } |
| |
| .point ol li { |
| width: 24px; |
| height: 24px; |
| border: 1px solid #ccc; |
| float: left; |
| margin: 0 5px; |
| background-color: #fff; |
| text-align: center; |
| line-height: 24px; |
| font-size: 15px; |
| cursor: pointer; |
| } |
| |
| .point ol li.active { |
| background-color: yellow; |
| } |
| |
| .btn { |
| position: absolute; |
| top: 50%; |
| margin-top: -20px; |
| width: 40px; |
| height: 40px; |
| background-color: rgba(0, 0, 0, .3); |
| cursor: pointer; |
| text-align: center; |
| line-height: 40px; |
| } |
| |
| .btn.left { |
| left: 20px; |
| } |
| |
| .btn.right { |
| right: 20px; |
| } |
| |
| .btn i { |
| display: inline-block; |
| vertical-align: middle; |
| width: 14px; |
| height: 14px; |
| border-bottom: 3px solid rgba(255, 255, 255, .5); |
| |
| } |
| |
| .btn.left i { |
| border-left: 3px solid rgba(255, 255, 255, .5); |
| transform: rotate(45deg); |
| margin-left: 10px; |
| } |
| |
| .btn.right i { |
| border-right: 3px solid rgba(255, 255, 255, .5); |
| transform: rotate(-45deg); |
| margin-right: 10px; |
| } |
| </style> |
| </head> |
| |
| <body> |
| <div id="app"> |
| <div class="wrapper"> |
| <!-- 图片 --> |
| <div class="photo"> |
| <ul> |
| <li><img src="./images/1.jpg" alt=""></li> |
| <li><img src="./images/2.jpg" alt=""></li> |
| <li><img src="./images/3.jpg" alt=""></li> |
| <li><img src="./images/4.jpg" alt=""></li> |
| <li><img src="./images/5.jpg" alt=""></li> |
| <!-- 追加一张 --> |
| <li><img src="./images/1.jpg" alt=""></li> |
| </ul> |
| </div> |
| <!-- 导航点 --> |
| <div class="point"> |
| <ol> |
| <li data-index="0" class="active">1</li> |
| <li data-index="1">2</li> |
| <li data-index="2">3</li> |
| <li data-index="3">4</li> |
| <li data-index="4">5</li> |
| </ol> |
| </div> |
| <!-- 按钮 --> |
| <div class="btn left"><i></i></div> |
| <div class="btn right"><i></i></div> |
| </div> |
| </div> |
| <script> |
| //图片和导航点的下标 |
| var index = 0; |
| var index2 = 0; |
| //图片的宽 |
| var width = parseInt($(".photo").find('img').css("width")); |
| // console.log(width); |
| //向右移动 |
| var toRight = function () { |
| index++; |
| if (index > 5) { |
| index = 1; |
| $(".photo ul").css("marginLeft", "0px") |
| } |
| $('ul').animate({ |
| marginLeft: -(width * index) |
| }) |
| index2++; |
| if (index2 > 4) { |
| index2 = 0 |
| } |
| getDH(index2); |
| } |
| //导航点高亮 |
| var getDH = function (index2) { |
| for (var j = 0; j < $('.point ol li').length; j++) { |
| $('.point ol li').eq(j).removeClass('active') |
| } |
| $('.point ol li').eq(index2).addClass('active') |
| } |
| |
| // 向左移动 |
| var toLeft = function () { |
| index-- |
| if (index < 0) { |
| index = 4; |
| $(".photo ul").css("marginLeft", `-${width * 5}px`) |
| } |
| $('ul').animate({ |
| marginLeft: -(width * index) |
| }) |
| index2--; |
| if (index2 < 0) { |
| index2 = 4; |
| } |
| getDH(index2); |
| } |
| //定时器执行向右移动 |
| var timer = setInterval(function () { |
| toRight(); |
| }, 1500) |
| |
| //点击导航点切换图片 |
| $('.point ol li').on('click', function () { |
| // console.log( $(this)); |
| $(this).addClass('active').siblings().removeClass('active'); |
| index2 = $(this).attr("data-index"); |
| $('ul').animate({ |
| marginLeft: -(width * index2) |
| }) |
| }) |
| |
| //点击左右箭头按钮切换图片 |
| $('.right').on("click", toRight); |
| $('.left').on("click", toLeft); |
| |
| //鼠标移入停止定时器 |
| $('.wrapper').on("mouseenter", function () { |
| clearInterval(timer); |
| // console.log(1); |
| }) |
| |
| //鼠标移出执行定时器 |
| $('.wrapper').on('mouseleave', function () { |
| timer = setInterval(function () { |
| toRight(); |
| }, 3000) |
| }) |
| |
| </script> |
| </body> |
| |
| </html> |
复制