JS实现小图放大轮播页面效果入下(图片为优行商旅页面照片):
实现效果:
图片自动轮播,鼠标移入停止,移出继续轮播
点击下方小图可以实现切换
步骤一:建立HTML布局,具体如下:
<body>
<div id="carousel" class="carousel" onmouseover="stop()" onmouseout="again()">
<ul class="list" id="ulctrl">
<li class="trans"><span></span></li>
<li><span></span></li>
<li><span></span></li>
<li><span></span></li>
</ul>
</div>
</body>
其中div为图片轮播区域,li用于放置小图
步骤二:CSS布局
*{
margin:0;
padding:0;
}
ul{
list-style: none;
height:auto;
position: absolute;
top:95%;
left:32%;
}
#carousel{
width:100%;
height:400px;
background-image: url(images/1.jpg);
background-repeat: no-repeat;
background-position: center;
position: relative;
}
li{
float:left;
margin-right: 20px;
}
span{
display: block;
width:110px;
height:41px;
background-size: 110px 41px;
border:none;
}
li:nth-child(1) span{
background-image: url(images/1.jpg);
border:2px solid orange;
}
li:nth-child(2) span{
background-image: url(images/2.jpg);
}
li:nth-child(3) span{
background-image: url(images/3.jpg);
}
li:nth-child(4) span{
background-image: url(images/4.jpg);
}
通过定位使小图显示在下方,此时轮播区域显示的为第一张图片
步骤三:添加JS逻辑(其中该代码注释中的圆点是指轮播图下方小图)
let cnt=1;//计数器
let ulctrl=document.getElementById("ulctrl");//圆点控制器
let lis=ulctrl.children;//圆点们
let linow=lis[0];//初始化当前圆点为第一个
let clock;//声明计时器
var carousel=document.getElementById("carousel");//背景容器
for(let i=0;i<lis.length;i++){
//给圆点绑定函数,点击改变圆点样式和图片
lis[i].onclick=function (){
cnt=i+1;
carousel.style.backgroundImage="url(images/"+cnt+".jpg)";
for(let li of lis){
li.children[0].style.border = 'none';
}
this.children[0].style.border = '2px solid orange';
}
}
//改变圆点样式
function ctrl(){
linow.children[0].style.border = 'none';
linow=lis[cnt-1];
linow.children[0].style.border = '2px solid orange';
}
//鼠标覆盖轮播图,停止轮播
function stop(){
clearInterval(clock);//清除计时器
}
//鼠标离开轮播图,继续轮播
function again(){
clock=setInterval(this.start, 2000);//创建计时器
}
//轮播函数
function start(){
if(cnt==4){
cnt=1;
}else{
cnt++;//更新计数器
}
carousel.style.backgroundImage="url(images/"+cnt+".jpg)";
ctrl();//轮播状态下改变圆点样式
}
(function move(){
clock=setInterval(this.start, 2000);//创建计时器,2秒执行一次start函数
})();//自执行函数