首页
IT
登录
6mi
u
盘
搜
搜 索
IT
完整轮播图实现过程
完整轮播图实现过程
xiaoxiao
2021-03-25
170
<!DOCTYPE
html
>
<
html
lang=
"en"
>
<
head
>
<
meta
charset=
"UTF-8"
>
<
title
></
title
>
<
style
type=
"text/css"
>
*
{
padding
:
0
;
margin
:
0
;
list-style
:
none
;
border
:
0
;
} .
all
{
width
:
500
px
;
height
:
200
px
;
padding
:
7
px
;
border
:
1
px solid
#ccc
;
margin
:
100
px auto
;
position
:
relative
;
} .
screen
{
width
:
500
px
;
height
:
200
px
;
/*overflow: hidden;*/
position
:
relative
;
} .
screen
li
{
width
:
500
px
;
height
:
200
px
;
overflow
:
hidden
;
float
:
left
;
} .
screen
ul
{
position
:
absolute
;
left
:
0
;
top
:
0
px
;
width
:
3000
px
;
} .
all
ol
{
position
:
absolute
;
right
:
10
px
;
bottom
:
10
px
;
line-height
:
20
px
;
text-align
:
center
;
} .
all
ol li
{
float
:
left
;
width
:
20
px
;
height
:
20
px
;
background
:
#fff
;
border
:
1
px solid
#ccc
;
margin-left
:
10
px
;
cursor
:
pointer
;
} .
all
ol li
.
current
{
background
:
yellow
;
}
#arr
{
display
:
none
;
}
#arr
span
{
width
:
40
px
;
height
:
40
px
;
position
:
absolute
;
left
:
5
px
;
top
:
50
%
;
margin-top
: -
20
px
;
background
:
#000
;
cursor
:
pointer
;
line-height
:
40
px
;
text-align
:
center
;
font-weight
:
bold
;
font-family
:
'
黑体
'
;
font-size
:
30
px
;
color
:
#fff
;
opacity
:
0.3
;
border
:
1
px solid
#fff
;
}
#arr #right
{
right
:
5
px
;
left
:
auto
;
}
</
style
>
</
head
>
<
body
>
<
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
>
<
script
>
//1
获取元素
var
box =
document
.
getElementById
(
"box"
);
var
screenBox = box
.
children
[
0
];
//
可视区域
var
imgWid = screenBox
.
offsetWidth
;
//
图片宽度
var
ul = screenBox
.
children
[
0
];
//
运动的列表
var
ol = screenBox
.
children
[
1
];
//
底部操作的小方块
var
arrBox = box
.
children
[
1
];
//
箭头的父盒子
var
arrLeft = arrBox
.
children
[
0
];
var
arrRight = arrBox
.
children
[
1
];
var
num =
0
;
//
用来记录每次鼠标点击图片运动的张数
var
ulLis = ul
.
children
;
var
timer =
null
;
var
olLi
;
//
根据初始图片张数动态创建小方块
for
(
var
i =
0
;
i < ulLis
.
length
;
i++
){
olLi =
document
.
createElement
(
'li'
);
olLi
.
innerHTML
= i+
1
;
ol
.
appendChild
(
olLi
);
}
//
获取每个每个小方块并给它们添加点击事件
var
olLis = ol
.
children
;
olLis
[
0
].
className
=
'current'
;
//
初始化给第一个方块改背景颜色;
for
(
var
i =
0
;
i < olLis
.
length
;
i++
){
olLis
[
i
].
index
= i
;
//
给每个方块设置一个自定义索引
,
等会用来计算
ul
移到的距离;
olLis
[
i
].
onclick
=
function
(){
if
(
num == ulLis
.
length
-
1
){
//
当图片运动到最后假的一张时,
//
此时小方块在
1
位置上 ,要是再点
1
图片会退回去,所以这里我们点
1
时让图片快速抽回
ul
.
style
.
left
=
'0px'
;
}
for
(
var
i
=
0
;
i
< olLis
.
length
;
i
++
){
olLis
[
i
].
className
=
''
;
//
清空所有小方块类名
}
this
.
className
=
'current'
;
//
当前点击的小方块改变背景
animate
(
ul
,
-
this
.
index * imgWid
);
num =
this
.
index
;
//
让左右箭头点击和小方块相对应;
}
}
//
克隆第一张图添加到
ul
作为最后一张来实现无缝滚动
var
firstPic = ul
.
children
[
0
].
cloneNode
(
true
);
ul
.
appendChild
(
firstPic
);
//
右箭头点击控制图片滚动
arrRight
.
onclick
=
function
(){
if
(
num == ulLis
.
length
-
1
){
//
当图片跑到假的那张后,再点击时,
ul
快速抽回到第一张实现无缝滚动
num =
0
;
ul
.
style
.
left
=
'0px'
;
}
num++
//
每点击一次,就记录一次;
animate
(
ul
,
-num * imgWid
);
//
调用运动函数让图片运动
for
(
var
i
=
0
;
i
< olLis
.
length
;
i
++
){
olLis
[
i
].
className
=
''
;
//
右箭头点击时,让小方块的背景也跟着相应运动;
}
if
(
num == ulLis
.
length
-
1
){
olLis
[
0
].
className
=
'current'
;
//
当图片运动到最后一张时,由于小方块比图片个数少一个,所以我们让它从
0
开始
}
olLis
[
num
].
className
=
'current'
;
}
//
左箭头点击控制图片滚动
arrLeft
.
onclick
=
function
(){
if
(
num ==
0
){
//
当图片跑到假的那张后,再点击时,
ul
快速抽回到第一张实现无缝滚动
num = ulLis
.
length
-
1
;
ul
.
style
.
left
= -num * imgWid +
'px'
;
//
快速抽回到最后一张
}
num--
;
//
减减后再运动 依然是第五张图片;
animate
(
ul
,
-num * imgWid
);
//
调用运动函数让图片运动
for
(
var
i
=
0
;
i
< olLis
.
length
;
i
++
){
olLis
[
i
].
className
=
''
;
//
左箭头点击时,让小方块的背景也跟着相应运动;
}
olLis
[
num
].
className
=
'current'
;
}
//
鼠标移入移出盒子控制箭头的显示和影藏
box
.
onmouseover
=
function
(){
arrBox
.
style
.
display
=
'block'
;
}
box
.
onmouseout
=
function
(){
arrBox
.
style
.
display
=
'none'
;
}
//
简单的缓动
animate
function
animate
(
tag
,
target
) {
clearInterval
(
tag
.
timer
);
//
放止加速
tag
.
timer
=
setInterval
(
function
() {
var
leader
=
tag
.
offsetLeft
;
var
step
=
(
target
-
leader
)
/
10
;
//
设置取整,保证元素可以进行运动
step
=
step
>
0
?
Math
.
ceil
(
step
)
:
Math
.
floor
(
step
);
leader
=
leader
+
step
;
tag
.
style
.
left
=
leader
+
"px"
;
if
(
leader
==
target
) {
//
清除定时器
clearInterval
(
tag
.
timer
);
}
},
20
);
}
</
script
>
</
body
>
</
html
>
转载请注明原文地址: https://ju.6miu.com/read-1321.html
技术
最新回复
(
0
)