JQuery教程:实现轮播图效果

轮播图说起来非常简单,就是几张图片一直不停的轮流播放,但是要想写好代码,也要考虑下性能问题,下面我们来简单的实现一下。

首先,页面代码:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title></title>

<link rel="stylesheet" type="text/css" href="css/ad.css"/>

<script src="js/jquery-2.1.0.js" type="text/javascript" charset="utf-8"></script>

<script src="js/ad.js" type="text/javascript" charset="utf-8"></script>

</head>

<body>

<div id="box">

<div id="imgDiv">

<img id="leftImg"/>

<img id="centerImg"/>

<img id="rightImg"/>

</div>

<span id="leftBtn"></span>

<span id="rightBtn"></span>

<span id="circleSpan"></span>

</div>

</body>

</html>

接下来,写样式内容ad.css,将页面内容完善。

body{

margin: 0px;

}

#box{

width: 520px;

height: 280px;

margin: 60px auto;

position: relative;

}

#imgDiv{

width: 520px;

height: 280px;

overflow: hidden;

position: relative;

border-radius: 10px;

}

#imgDiv img{

position: absolute;

}

#leftImg{

left:-520px;

}

#centerImg{

left:0px;

}

#rightImg{

left: 520px;

}

#leftBtn{

display: none;

width: 71px;

height: 71px;

position: absolute;

left: -35px;

top: 105px;

background-image: url(../img/but.png);

background-position-x: 71px;

}

#leftBtn:hover{

background-position-x: 0px;

}

#rightBtn{

display: none;

width: 71px;

height: 71px;

position: absolute;

left: 485px;

top: 105px;

background-image: url(../img/but.png);

background-position: 71px 71px;

}

#rightBtn:hover{

background-position-x: 0px;

}

#circleSpan{

display: block;

position: absolute;

height: 30px;

border-radius: 10px;

left: 50px;

top: 240px;

}

#circleSpan span{

display: block;

width: 10px;

height: 10px;

border-radius: 5px;

margin: 10px 5px 10px 5px;

float: left;

}

这些都是页面基础代码,接下来我们主要来看一下JS代码ad.js。

$(function(){

// 设定循环操作

var time = setInterval(move, 2000);

// 定义图片数组

var imgArr = ["img/1.jpg", "img/2.jpg", "img/3.jpg", "img/4.jpg", "img/5.jpg"];

// 得到3张图片框

var leftImg = $("#leftImg");

var centerImg = $("#centerImg");

var rightImg = $("#rightImg");

// 设置当前显示的图片

var currentIndex = 0;

// 设置初始图片

leftImg.attr("src", imgArr[imgArr.length - 1]);

centerImg.attr("src", imgArr[0]);

rightImg.attr("src", imgArr[1]);

// 设置圆点的数量和位置

for (var i = 0; i < imgArr.length; i++) {

$("#circleSpan").append("<span></span>");

}

$("#circleSpan").css("left", (520 - 20 * imgArr.length)/2 + "px");

$("#circleSpan span:first").css("background-color", "orange");

// 鼠标悬停和离开事件

$("#box").hover(function(){

$("#leftBtn,#rightBtn").show();

// 停止循环

clearInterval(time);

}, function(){

$("#leftBtn,#rightBtn").hide();

// 继续循环

time = setInterval(move, 4000);

});

// 给左右按钮添加点击事件

$("#leftBtn").click(function(){

// 每次滚动显示下一张的图片

if(currentIndex == 0){

currentIndex = imgArr.length - 1;

}else{

currentIndex--;

}

// 执行滚动的动画

leftImg.stop(false, true).animate({"left":"0px"}, 100);

centerImg.stop(false, true).animate({"left":"520px"}, 100);

rightImg.stop(false, true).animate({"left": "1040px"}, 102, function(){

mvoeComplete();

});

});

$("#rightBtn").click(function(){

// 每次滚动显示下一张的图片

currentIndex++;

// 执行滚动的动画

leftImg.stop(false, true).animate({"left":"-1040px"}, 100);

centerImg.stop(false, true).animate({"left":"-520px"}, 100);

rightImg.stop(false, true).animate({"left": "0px"}, 102, function(){

// 动画结束时执行

mvoeComplete();

});

});

function move(){

// 每次滚动显示下一张的图片

currentIndex++;

// 执行滚动的动画

leftImg.stop(false, true).animate({"left":"-1040px"}, 500);

centerImg.stop(false, true).animate({"left":"-520px"}, 500);

rightImg.stop(false, true).animate({"left": "0px"}, 502, function(){

// 动画结束时执行

mvoeComplete();

});

}

function mvoeComplete(){

// 当滚动结束后位置改变回来

leftImg.css({"left":"-520px"});

centerImg.css({"left":"0px"});

rightImg.css({"left":"520px"});

// 当滚动结束后改变图片显示

leftImg.attr("src", imgArr[(currentIndex - 1) % imgArr.length]);

centerImg.attr("src", imgArr[currentIndex % imgArr.length]);

rightImg.attr("src", imgArr[(currentIndex + 1) % imgArr.length]);

// 改变圆点的颜色

$("#circleSpan span:eq(" + (currentIndex % imgArr.length) + ")").css("background-color", "orange");

// 将其他的圆点颜色还原成白色

$("#circleSpan span:not(:eq(" + (currentIndex % imgArr.length) + "))").css("background-color", "white");

}

});

至此,就完成了一个简单的轮播图效果,将js中的图片数组改成自己的图片路径即可。

原文地址:https://www.cnblogs.com/qfchen/p/10950661.html

时间: 2024-10-14 10:55:35

JQuery教程:实现轮播图效果的相关文章

jQuery实现简易轮播图的效果

(图片素材取自于小米官网) 刚开始接触jQuery的学习,个人觉得如果为了实现多数的动态效果,jQuery的确很简易方便. 下面简易的轮播图效果,还请前辈多多指教~ (努力学习react vue angular中,加油~~~) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> &

AngularJS:实现轮播图效果

要实现这个功能,可以https://github.com/sroze/ngInfiniteScroll这个第三方控件实现的.实现步骤如下: 1. 下载ng-infinite-scroll.js程序http://sroze.github.io/ngInfiniteScroll/ 目前版本是1.0.0 2. 如果你是用的jQuery2.0以上版本,还需要修改ng-infinite-scroll.js程序,将所有的将所有的$window.xxx改为$(window).xxx, elem.xxx改为$(

花瓣网轮播图效果

没有加上定时器效果,仅仅能手动进行图片的切换 效果图: index.html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN""> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>index</title> &

模仿轮播图效果

<!doctype html><html lang="zh"><head> <meta charset="UTF-8"> <title>手写轮播图效果</title> <style> #imgsDiv{position: relative;height: 400px;} .picDiv{ position: absolute; top:0; left:0; width:100%; h

jQuery淡入淡出轮播图实现

大家好我是QD小白,这是人生第一次写博客,准备写的内容是Jquery淡入淡出轮播图实现,在此之前学习JS写的轮播图效果都感觉不怎么好,学习了jQuery里的淡入淡出效果后又写了一次轮播图效果明显感觉好了许多.现在我就来分享下自己写轮播图的思路和方法. HTML部分: <div id="img-box" style="width:700px; height:350px;"> <img style="opacity: 1;" wid

js实现轮播图效果(附源码)--原生js的应用

1.js实现轮播图效果 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="Author" content="奇客艺术"> <meta name="keyword" content="关键字"> <meta name=

【学习ios之路:UI系列】实现轮播图效果(UIImageView,UIScrollView,UIPageControl,NSTimer相结合)

实现效果,在不点击的情况下,自定滚动,点击时,停止.如下图 部分代码如下: //调用NSTimer方法,自定计时 - (void)autoScroll { self.timer = [NSTimer scheduledTimerWithTimeInterval:1.5 target:self  selector:@selector(scrollToRight) userInfo:nil repeats:YES]; } //实现触发方法 - (void)scrollToRight { [UIVie

Html5如何快速在页面中写出多个轮播图效果

我们在做项目的过程中,有时候客户需求要求你在同一个页面中,写几个不同样式的轮播图效果,那么如何快速实现呢?(要知道若果你每个轮播图都要用原生javascript写的话,会很麻烦,代码也不够简洁) 这里我们就可以借助插件来实现这一功能,swiper.js就是一个专门处理轮播图效果的js库,下面举例来说明: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"&g

实现比较简单的轮播图效果

实现简单的轮播图效果. 废话不多说,我们开始. HTML和CSS较为简单,不在这里做赘述.简单的给大家一个HTML代码. <div class="carousel"> <div id="goLeft"></div> <ul> <li><img src="" /></li> <li><img src="" /></l