原生 js 轮播图小案例内含详细注释
1效果图2html3js4css5结构目录
1效果图
2html
<div class="all" id='box'>
<div class="screen">
<ul>
<li><img src="images/1.jpg" width="500" height="200" /></li>
<li><img src="images/2.jpg" width="500" height="200" /></li>
<li><img src="images/3.jpg" width="500" height="200" /></li>
<li><img src="images/4.jpg" width="500" height="200" /></li>
<li><img src="images/5.jpg" width="500" height="200" /></li>
</ul>
<ol>
</ol>
</div>
<div id="arr"><span id="left"><</span><span id="right">></span></div>
</div>
3js
<script
>
function mFun$(id
) {
return document
.getElementById(id
);
}
var box
= mFun$("box");
var screen
= box
.children
[0];
var imgWidth
= screen
.offsetWidth
;
var ulObj
= screen
.children
[0];
var list
= ulObj
.children
;
var olObj
= screen
.children
[1];
var arr
= mFun$("arr");
var pic
= 0;
for(var i
= 0; i
< list
.length
; i
++) {
var liObj
= document
.createElement("li");
olObj
.appendChild(liObj
);
liObj
.innerHTML
= (i
+ 1);
liObj
.setAttribute("index", i
);
liObj
.onmouseover = function() {
for(var j
= 0; j
< olObj
.children
.length
; j
++) {
olObj
.children
[j
].removeAttribute("class");
}
this.className
= "current";
pic
= this.getAttribute("index");
animate(ulObj
, -pic
* imgWidth
);
};
}
olObj
.children
[0].className
= "current";
ulObj
.appendChild(ulObj
.children
[0].cloneNode(true));
var timeId
= setInterval(clickHandle
, 1000);
box
.onmouseover = function() {
arr
.style
.display
= "block";
clearInterval(timeId
);
};
box
.onmouseout = function() {
arr
.style
.display
= "none";
timeId
= setInterval(clickHandle
, 1000);
};
mFun$("right").onclick
= clickHandle
;
function clickHandle() {
if(pic
== list
.length
- 1) {
pic
= 0;
ulObj
.style
.left
= 0 + "px";
}
pic
++;
animate(ulObj
, -pic
* imgWidth
);
if(pic
== list
.length
- 1) {
olObj
.children
[olObj
.children
.length
- 1].className
= "";
olObj
.children
[0].className
= "current";
} else {
for(var i
= 0; i
< olObj
.children
.length
; i
++) {
olObj
.children
[i
].removeAttribute("class");
}
olObj
.children
[pic
].className
= "current";
}
};
mFun$("left").onclick = function() {
if(pic
== 0) {
pic
= 5;
ulObj
.style
.left
= -pic
* imgWidth
+ "px";
}
pic
--;
animate(ulObj
, -pic
* imgWidth
);
for(var i
= 0; i
< olObj
.children
.length
; i
++) {
olObj
.children
[i
].removeAttribute("class");
}
olObj
.children
[pic
].className
= "current";
};
function animate(element
, target
) {
clearInterval(element
.timeId
);
element
.timeId
= setInterval(function() {
var current
= element
.offsetLeft
;
var step
= 10;
step
= current
< target
? step
: -step
;
current
+= step
;
if(Math
.abs(current
- target
) > Math
.abs(step
)) {
element
.style
.left
= current
+ "px";
} else {
clearInterval(element
.timeId
);
element
.style
.left
= target
+ "px";
}
}, 10);
}
</script
>
4css
<style type="text/css">
* {
padding: 0
;
margin: 0
;
list-style: none
;
border: 0
;
}
.all {
width: 500px
;
height: 200px
;
padding: 7px
;
border: 1px solid #ccc
;
margin: 100px auto
;
position: relative
;
}
.screen {
width: 500px
;
height: 200px
;
overflow: hidden
;
position: relative
;
}
.screen li {
width: 500px
;
height: 200px
;
overflow: hidden
;
float: left
;
}
.screen ul {
position: absolute
;
left: 0
;
top: 0px
;
width: 3000px
;
}
.all ol {
position: absolute
;
right: 10px
;
bottom: 10px
;
line-height: 20px
;
text-align: center
;
}
.all ol li {
float: left
;
width: 20px
;
height: 20px
;
background: #fff
;
border: 1px solid #ccc
;
margin-left: 10px
;
cursor: pointer
;
}
.all ol li.current {
background: #DB192A
;
}
#arr {
display: none
;
}
#arr span {
width: 40px
;
height: 40px
;
position: absolute
;
left: 5px
;
top: 50%
;
margin-top: -20px
;
background: #000
;
cursor: pointer
;
line-height: 40px
;
text-align: center
;
font-weight: bold
;
font-family: '黑体';
font-size: 30px
;
color: #fff
;
opacity: 0.3
;
border: 1px solid #fff
;
}
#arr #right {
right: 5px
;
left: auto
;
}
</style>
5结构目录
转载请注明原文地址:https://blackberry.8miu.com/read-9371.html