原文链接:http://www.imooc.com/article/7393

编辑HTML代码:

<div id="wrap"><!--图片展示区-->
<div id="inner" class="clear"><!--所有图片并排的块-->
<a href="#"><img src="img/sw1.png" alt="图片已失效"/></a>
<a href="#"><img src="img/sw2.png" alt="图片已失效"/></a>
<a href="#"><img src="img/sw3.png" alt="图片已失效"/></a>
<a href="#"><img src="img/sw4.png" alt="图片已失效"/></a>
<a href="#"><img src="img/sw5.png" alt="图片已失效"/></a>
<a href="#"><img src="img/sw6.png" alt="图片已失效"/></a>
<a href="#"><img src="img/sw7.png" alt="图片已失效"/></a>
<a href="#"><img src="img/sw8.png" alt="图片已失效"/></a>
<a href="#"><img src="img/sw1.png" alt="图片已失效"/></a>
</div>
<div id="pagination" class="pagination"><!--页面数字按钮区域-->
<span class="selected">1</span>
<span>2</span>
<span>3</span>
<span>4</span>
<span>5</span>
<span>6</span>
<span>7</span>
<span>8</span>
</div>
<div id="left" class="arrow">
<<<
</div>
<div id="right" class="arrow">
>>>
</div>
</div><!--wrap end-->

定义样式:

<style type="text/css">
*{
margin:;
padding:;
border:;
}
#wrap{/*整个轮播区域只会显示一张图片大小的空间,其余图片隐藏*/
width: 720px;/*图片宽度*/
height: 322px;/*图片高度*/
margin: 0 auto;/*水平居中*/
position: relative;
background: lightpink;
overflow: hidden;
}
.clear{/*兼容IE*/
zoom:;
}
.clear:after{
visibility: none;
content: "";
display: block;
clear: both;
height:;/*why?*/
}
#inner{
width: 1000%;/*why?*/
height: 100%;
position: absolute;
left:;
top:;
}
#inner img{
width: 10%;
float: left;
}
.pagination{/*页码的样式和摆放*/
width: 100%;
position: absolute;
bottom: 10px;
text-align: center;
}
.pagination span{
padding: 5px 8px;
background: green;
color: aliceblue;
border-radius: 50%;/*设置数字按钮边框圆角*/
cursor: pointer;
}
.pagination .selected{/*第一个页码的数字按钮样式*/
background: blue;
color: chartreuse;
}
.arrow{
position: absolute;
top:;
width: 35px;
height: 322px;/*图片高度*/
line-height: 322px;
text-align: center;
color: black;
cursor: pointer;
}
#right{
right:;
}
.arrow:hover{
background: rgba(0,0,0,0.5);
}
</style>

Javascript代码:

<script type="text/javascript">
var wrap = document.getElementById("wrap");//获取要轮播的DIV
var inner = document.getElementById("inner");//获取轮播图并排的块
//获取pagination的子字节数字按钮
var spanList = document.getElementById("pagination").getElementsByTagName("span");
var left = document.getElementById("left");//获取往左箭头
var right = document.getElementById("right");//获取往右箭头 var clickFlag = true;//防止左右按钮的连续操作
var motive;//用来设置自动往左滑动的计时器
var index = 0;//记录每次滑动图片的下角标
var Distance = wrap.offsetWidth;//获取展示区的宽度(图片宽度)
function AutoGo(){//定义图片滑动的函数
var start = inner.offsetLeft;//获取移动块当前left的坐标
var end = index * Distance * (-1);//获取移动块结束后的坐标(下角标*图片宽度*每次向左移动的一个宽度)
var change = end - start;//偏移量(x轴结束后的坐标减去当前left的坐标等于往左偏移的像素数)
var motiver;//给图片添加轮播效果的间隔型定时器
var miniT = 0;
var maxT = 30;//最长时间,每30毫秒让块往左移动
clear();//先将按钮状态清除,再让对应的按钮改变状态
if(index == spanList.length){//if语句判断下角标是否等同于数字按钮的长度
spanList[0].className = "selected";//className返回元素的class属性,子节点下角标为0时返回selected
}else{
spanList[index].className = "selected";
}
clearInterval(motiver);//在开启定时器之前先将之前的清除
motiver = setInterval(function(){
miniT++;
if(miniT >= maxT){
clearInterval(motiver);//当图片到达终点时清除间隔型定时器
clickFlag = true;//当图片到达终点时才能点击方向按钮切换图片
}
//每隔多少毫秒(对应下列括号内的数值)往左偏移 = 偏移量/最长时间*最短时间 + X轴往左滑动的像素数 inner.style.left = change / maxT * miniT + start + "px";
//如果满足下角标等同于子节点长度,以及最短时间大于等于最长时间的条件时,
if(index == spanList.length && miniT >= maxT){
inner.style.left = 0;
//当图片到达最后一张时让它瞬间切换回第一张,由于都是用的都是第一张图片所以不会影响效果
index = 0;
}
},20);
}
//定义图片往右滑动的函数
function forward(){
index++;
if(index > spanList.length){//当图片下角标到达最后一张时记录滑动图片的下角标为0
index = 0;
}
AutoGo();
}
//定义图片往左滑动函数
function backward(){
index--;
//当图片下角标到达第一张时,让它返回到倒数第二张,left的值要变为最后一张时才不会影响效果
if(index < 0){
index = spanList.length - 1;
inner.style.left = (index + 1) * Distance * (-1) + "px";
}
AutoGo();
}
//开启图片自动向右滑动的计时器,间隔多少毫秒切换一次图片,即一张图片停留时间为多少毫秒
motive = setInterval(forward,2000);
//设置鼠标悬停时清除定时器,轮播暂停
wrap.onmouseover = function(){
clearInterval(motive);
}
wrap.onmouseout = function(){
motive = setInterval(forward,2000);
}
//遍历每个数字按钮让其切换到对应的图片
for(var i=0;i<spanList.length;i++){
spanList[i].onclick=function(){
//innerText用来定义数字按钮输出的文本
index = this.innerText - 1;//图片点击后下角标可以返回对应的图片,例如第4张是[3] = this.innerText -1;
AutoGo();
}
}
left.onclick=function(){
if(clickFlag){
backward();
}
clickFlag = false;
}
right.onclick=function(){
if(clickFlag){
forward();
}
clickFlag = false;
}
//清除所有页面按钮状态颜色,只有当图片轮播时才能改变对应的按钮效果
function clear(){
for(var i=0;i < spanList.length;i++){
spanList[i].className = "";
}
}
</script>

Javascript图片轮播的更多相关文章

  1. JavaScript图片轮播,举一反三

    图片轮播,在一些购物网站上运用的不胜枚举,下面简单介绍一下图片轮播的实现. 如图 <!doctype html> <html lang="en"> < ...

  2. JavaScript图片轮播器

    先贴上html的代码 <div class="ImgDiv"> <div class="Imgs" id="imgScroll&qu ...

  3. JavaScript 图片轮播入门

    轮播要求:一个在页面居中的矩形框,图片依次从矩形框中经过 当图片完整占满矩形框时 停留一小段时间再向左边移动经过矩形框的图片自动跑到右边最后一个图的后面.核心原理:在一个for循环中利用offsetl ...

  4. 图片轮播jQuery

          <script type="text/javascript">         //图片轮播         var bannerIndex = 0; ba ...

  5. 全面解析Bootstrap图片轮播效果

    http://www.jb51.net/article/75806.htm 一 . 结构分析 一个轮播图片主要包括三个部分: ☑ 轮播的图片 ☑ 轮播图片的计数器 ☑ 轮播图片的控制器 第一步:设计轮 ...

  6. 原生Js_使用setInterval() 方法实现图片轮播功能

    用javascript图片轮播功能 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...

  7. 纯javaScript、jQuery实现个性化图片轮播

    纯javaScript实现个性化图片轮播 轮播原理说明<如上图所示>: 1. 画布部分(可视区域)属性说明:overflow:hidden使得超出画布部分隐藏或说不可见.position: ...

  8. JavaScript对象(document对象 图片轮播)

    图片轮播: 需要注意的HTML需要img标签,他和input标签一样,是非封闭的标签 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran ...

  9. javaScript 手写图片轮播

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

随机推荐

  1. openStack CentOS虚拟桌面iptables初始化配置

  2. libvirt基于安装

  3. Java接口,抽象类

    1.接口(interface),接口被用来建立类与类之间关联的标准. 2.抽象类(abstract class),只要类中有一个抽象方法,此类就被标记为抽象类.实际上抽象类除了被继承之外没有任何意义. ...

  4. Mysql binlog日志解析

    1. 摘要: Mysql日志抽取与解析正如名字所将的那样,分抽取和解析两个部分.这里Mysql日志主要是指binlog日志.二进制日志由配置文件的log-bin选项负责启用,Mysql服务器将在数据根 ...

  5. 【Java每日一题】20170109

    20170106问题解析请点击今日问题下方的"[Java每日一题]20170109"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  6. OpenGL ES2.0基础入门

    1.OpenGL ES 1.x渲染管线(又称为渲染流水线) (1).基本处理: 基本处理主要是设定3D空间中物体的顶点坐标.顶点对应的颜色.顶点的纹理坐标等属性,并且指定绘制方式. 常见的绘制方式有: ...

  7. [PWA] 18. Clean the photo cache

    We cannot let photo always keep caching new data without clean the old data. If message is not displ ...

  8. Qt 学习之路 :事件

    事件(event)是由系统或者 Qt 本身在不同的时刻发出的.当用户按下鼠标.敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件.一些事件在对用户操作做出响应时发出,如键盘事件等:另一些事 ...

  9. 转载:IntelliJ Idea 常用快捷键列表

    IntelliJ Idea 常用快捷键列表 (http://www.open-open.com/lib/view/open1396578860887.html) Ctrl+Shift + Enter, ...

  10. Linux入门之——安装虚拟机软件

    /** ****************************************************************************** * @author    暴走的小 ...