最简单的原生js轮播图(适合新手)

经过几天的努力,终于攻克了这一难题,于是迫不及待的想要分享给大家,编写之前,我也看了不少其他博主的博客,大多是用偏移量写的,对新
手来说,还是有些难以理解,虽然可能实现的需求不一样,但我想先从简入手,所以自己查阅资料,修改bug,终于完成。话不多说,上代码:如果
可以的话,顺手给个赞,给新手点鼓励呗~~~
<! DOCTYPE html >
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< meta http-equiv = "X-UA-Compatible" content = "ie=edge" >
< title > Document </ title >
< script src = "jquery.js" > < / script >
< style >
* {
margin : 0px ;
padding : 0px ;
list-style : none ;
text-decoration : none ;
}
#flash { /*根据图片的大小来设置外层div的大小*/
width : 520px ;
height : 280px ;
margin : 0 auto ;
position : relative ; /*设置div定位,方便之后图片及圆点位置的设定*/
border : 1px solid black ;
}
#flash img {
width : 100% ;
height : 100% ;
position : absolute ; /*设置所有图片重叠*/
left : 0px ;
top : 0px ;
display : none ; /*设置所有图片隐藏,通过改变第一个图片的行间样式来使第一个图片显示*/
}
#flash ul {
width : 150px ;
height : 25px ;
border-radius : 20px ;
background-color : rgba ( 255 , 255 , 255 , 0.5 );
position : absolute ;
left : 35% ;
bottom : 10% ;
}
#flash ul li {
width : 12px ;
height : 12px ;
margin-top : 5px ;
background-color : #fff ;
border-radius : 50% ;
margin-left : 15px ;
float : left ;
}
#flash ul .li_1 {
background-color : #f40 ; /*设置第一个圆点背景色为红色*/
}
#flash .span-r {
width : 50px ;
height : 50px ;
border-radius : 50% ;
position : absolute ;
right : 2% ;
top : 45% ;
background-color : rgba ( 255 , 255 , 255 , 0.5 );
}
#flash .span-r span {
width : 100% ;
height : 100% ;
color : rgba ( 0 , 0 , 0 , 0.5 );
font-size : xx-large ;
font-weight : 700 ;
line-height : 50px ;
margin-left : 15px ;
cursor : pointer ;
}
#flash .span-l {
width : 50px ;
height : 50px ;
border-radius : 50% ;
position : absolute ;
left : 2% ;
top : 45% ;
background-color : rgba ( 255 , 255 , 255 , 0.5 );
}
#flash .span-l span {
width : 100% ;
height : 100% ;
color : rgba ( 0 , 0 , 0 , 0.5 );
font-size : xx-large ;
font-weight : 700 ;
line-height : 50px ;
margin-left : 15px ;
cursor : pointer ;
}
< / style >
</ head >
< div id = "flash" >
< img src = "img1.jpg" alt = "" style = "display: block" >
< img src = "img2.jpg" alt = "" >
< img src = "img3.jpg" alt = "" >
< img src = "img4.jpg" alt = "" >
< img src = "img5.jpg" alt = "" >
< ul >
< li class = "li_1" ></ li >
< li ></ li >
< li ></ li >
< li ></ li >
< li ></ li >
</ ul >
< div class = "span-r" >
< span > > </ span >
</ div >
< div class = "span-l" >
< span > < </ span >
</ div >
</ div >
< body >
< script >
var div = document . getElementById ( 'flash' );
var img = div . getElementsByTagName ( 'img' ); /*选中div下所有的图片*/
var ul = document . getElementsByTagName ( 'ul' )[ 0 ];
var li = ul . getElementsByTagName ( 'li' );
var div_r = document . getElementsByTagName ( 'div' )[ 1 ];
// var span_r = div_r.getElementsByTagName('span');
var div_l = document . getElementsByTagName ( 'div' )[ 2 ];
// var sapn_l = div_l.getElementsByTagName('span');
var len = img . length ;
var count = 0 ; /*设置count来显示当前图片的序号*/
function run (){ /*将定时器里的函数提取到外部*/
count ++;
count = count == 5 ? 0 : count ; /*当图片加载到最后一张时,使其归零*/
for ( var i = 0 ; i < len ; i ++){
img [ i ]. style . display = 'none' ; /*利用for循环使除当前count位其他图片隐藏*/
}
img [ count ]. style . display = 'block' ; /*显示当前count的值所代表的图片*/
for ( var i = 0 ; i < li . length ; i ++){
li [ i ]. style . backgroundColor = "#fff" ; /*原理同上*/
}
li [ count ]. style . backgroundColor = "#f40" ;
}
var timer = setInterval ( run , 1000 ); /*定义定时器,使图片每隔1s更换一次*/
div . onmouseover = function (){
clearInterval ( timer );
}
div . onmouseleave = function (){ /*定义鼠标移出事件,当鼠标移出div区域,轮播继续*/
timer = setInterval ( run , 1000 );
}
for ( var i = 0 ; i < len ; i ++){
li [ i ]. index = i ; /*定义index记录当前鼠标在li的位置*/
li [ i ]. onmouseenter = function (){ /*定义鼠标经过事件*/
for ( var i = 0 ; i < len ; i ++){ /*通过for循环将所有图片隐藏,圆点背景设为白色*/
li [ i ]. style . background = '#fff' ;
img [ i ]. style . display = 'none' ;
}
this . style . background = '#f40' ; /*设置当前所指圆点的背景色*/
img [ this . index ]. style . display = 'block' ; /*使圆点对应的图片显示*/
}
}
div_r . onclick = function (){ /*因为span没有设置宽高,直接把事件添加到他的父级*/
run (); /*直接调用现成的run函数*/
}
function reverse (){
count --;
count = count ==- 1 ? 4 : count ;
for ( var i = 0 ; i < len ; i ++){
img [ i ]. style . display = 'none' ; /*利用for循环使除当前count位其他图片隐藏*/
}
img [ count ]. style . display = 'block' ; /*显示当前count的值所代表的图片*/
for ( var i = 0 ; i < li . length ; i ++){
li [ i ]. style . backgroundColor = "#fff" ; /*原理同上*/
}
li [ count ]. style . backgroundColor = "#f40" ;
}
div_l . onclick = function (){
reverse (); /*重新设置函数*/
}
< / script >
</ body >
</ html >

运行效果如下:


猜你喜欢

转载自blog.csdn.net/qq_41481924/article/details/80515766