Javascript图片轮播
原文链接: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图片轮播的更多相关文章
- JavaScript图片轮播,举一反三
图片轮播,在一些购物网站上运用的不胜枚举,下面简单介绍一下图片轮播的实现. 如图 <!doctype html> <html lang="en"> < ...
- JavaScript图片轮播器
先贴上html的代码 <div class="ImgDiv"> <div class="Imgs" id="imgScroll&qu ...
- JavaScript 图片轮播入门
轮播要求:一个在页面居中的矩形框,图片依次从矩形框中经过 当图片完整占满矩形框时 停留一小段时间再向左边移动经过矩形框的图片自动跑到右边最后一个图的后面.核心原理:在一个for循环中利用offsetl ...
- 图片轮播jQuery
<script type="text/javascript"> //图片轮播 var bannerIndex = 0; ba ...
- 全面解析Bootstrap图片轮播效果
http://www.jb51.net/article/75806.htm 一 . 结构分析 一个轮播图片主要包括三个部分: ☑ 轮播的图片 ☑ 轮播图片的计数器 ☑ 轮播图片的控制器 第一步:设计轮 ...
- 原生Js_使用setInterval() 方法实现图片轮播功能
用javascript图片轮播功能 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...
- 纯javaScript、jQuery实现个性化图片轮播
纯javaScript实现个性化图片轮播 轮播原理说明<如上图所示>: 1. 画布部分(可视区域)属性说明:overflow:hidden使得超出画布部分隐藏或说不可见.position: ...
- JavaScript对象(document对象 图片轮播)
图片轮播: 需要注意的HTML需要img标签,他和input标签一样,是非封闭的标签 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran ...
- javaScript 手写图片轮播
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
随机推荐
- 如何发送HTML表单数据
多数时候,HTML表单的目的只是为了把数据发给服务器,之后服务器再处理这些数据并发送响应给用户.虽然看起来挺简单的,但我们还是得注意一些事情以确保传送的数据不会破坏服务器.或者给你的用户制造麻烦. 数 ...
- Fuel4D 2.1 免费跨平台游戏引擎 现已发布
Fuel4D 2.1 免费跨平台游戏引擎 现已发布 开发环境:纯 C/C++,无JAVA.O-C. 支持 WIN32.安卓 系统. 详情见官方网站:http://www.fuel4d.com 或者进F ...
- S3C2440 I2C总线控制
概述:话不多说,直接上图 多主机IIC总线控制(IICCON): IIC控制总线状态(IICSTAT): IIC总线地址(IICADD): IIC发送,接收总线寄存器(IICDS) IIC总线控制寄存 ...
- 从零開始开发Android版2048 (五) 撤销的实现
本篇的内容是,在前一篇的基础上添�了撤销的功能.撤销事实上就是将当前的用户界面恢复到这次滑动值前的样子.我实现撤销的主要原理是,将每次滑动后界面上的格子和相应的数字记录下来,当然还有分数,把这些数据写 ...
- C++类中静态变量
以下是对类中static变量的一点解说 =============================================== 静态数据成员的用法和注意事项例如以下: ...
- HDU 4607 Park Visit(树的直径)
题目大意:给定一棵树,让求出依次访问k个点的最小花费,每条边的权值都为1. 思路:如果能一直往下走不回来,那么这个路径肯定是最小的,这就取决于给定的k,但是怎么确定这个能一直走的长度呢,其实这个就是树 ...
- .NET 拼音检索
微软提供了一个Visual Studio International Pack 组件,可以转换简繁体,或者将汉字转换为拼音以及其他语言的支持. https://www.microsoft.com/zh ...
- HUD2087
#include<iostream> #include<cstdio> #include<cstring> #define maxn 1010 using name ...
- entity 实体模型timeout设置
public Entities(): base("name=Entities") { var adapter = (IObjectContextAdapter)this; var ...
- Jquery小东西收集
1. $(document).ready(),$(function(){}),$(window).load(),window.onload的关系与区别 $(document).ready(functi ...