上下切换:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
*{
padding: 0px;
margin: 0px;
}
li{
list-style: none;
}
.box{
width: 500px;
height: 400px;
margin: 0px auto;
position: relative;
border: 5px solid #000000;
overflow: hidden;
}
.list{
width: 500px;
height: 400%;
position: absolute;
top:0px;
left:0px;
transition: 1s;
}
img{
width: 500px;
height:400px;
vertical-align: top;
}
.btn{
position: relative;
top:-100px;
left: 10%;
}
.ospan{
width:100px;
height: 20px;
position: absolute;
top: 370px;
left:46%;
}
.ospan span{
width:20px;
height: 20px;
float: left;
border-radius: 50%;
background: white;
margin-right: 5px;
}
.ospan .active{
background:red;
}
</style>
</head>
<body>
<div class="box">
<ul class="list">
<li><a href=""><img src="img/1.png" alt=""></a></li>
<li><a href=""><img src="img/2.png" alt=""></a></li>
<li><a href=""><img src="img/3.png" alt=""></a></li>
<li><a href=""><img src="img/4.png" alt=""></a></li>
</ul>
</div>
<div class="btn">
<button type="button">上一张</button>
<button type="button">下一张</button>
</div>
<div class="ospan">
<span class="active"></span>
<span></span>
<span></span>
<span></span>
</div>
<script type="text/javascript">
//获取ul,整体移动
var lists=document.querySelector('.list');
//按钮
var btns=document.querySelectorAll('.btn button');
//可以图片数量
var imgs=lists.querySelectorAll('li');
var ospans=document.querySelectorAll('.ospan span');
var num=0;
var height=400;
//上一张
btns[0].onclick=function(){
num++;
num==1?num=-(imgs.length-1):num;
lists.style.top=(num*height)+'px';
//设置span样式
for(var i=0;i<ospans.length;i++){
ospans[i].className='';
}
ospans[-num].className='active';
}
//下一张
btns[1].onclick=function(){
num--;
-num>(imgs.length-1)?num=0:num;
lists.style.top=(num*height)+'px';
//设置span样式
for(var i=0;i<ospans.length;i++){
ospans[i].className='';
}
ospans[-num].className='active';
}
//给span设置事件
for(var i=0;i<ospans.length;i++){
ospans[i].index=i;
ospans[i].onmouseenter=function(){
for(var i=0;i<ospans.length;i++){
ospans[i].className='';
}
this.className='active';
num=-(this.index);
lists.style.top=(num*height)+'px';
}
}
</script>
</body>
</html>
左右切换:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
.box{
width:400px;
height: 400px;
margin: 0px auto;
border: 1px solid #000000;
position: relative;
overflow: hidden;
}
.list{
width: 1600px;
height: 400px;
position:absolute;
transition: 1s;
left: 0;
top:0;
}
.box .list li{
list-style: none;
float: left;
}
img{
width: 400px;
height: 400px;
vertical-align: top;
}
.ospan{
width:100px;
height: 20px;
position: absolute;
top: 370px;
left:47%;
}
.ospan span{
width:20px;
height: 20px;
float: left;
border-radius: 50%;
background: white;
margin-right: 5px;
}
.ospan .active{
background:red;
}
</style>
</head>
<body>
<div class="box">
<ul class="list">
<li>
<a href="">
<img src="img/1.png" alt="">
</a>
</li>
<li>
<a href="">
<img src="img/2.png" alt="">
</a>
</li>
<li>
<a href="">
<img src="img/3.png" alt="">
</a>
</li>
<li>
<a href="">
<img src="img/4.png" alt="">
</a>
</li>
</ul>
</div>
<div class="ospan">
<span class="active"></span>
<span></span>
<span></span>
<span></span>
</div>
<div class="item" style="width:400px;line-height:50px;margin: 0px auto;text-align: center;background: pink;border: 1px solid #000000;">
<button type="button">上一张</button>
<button type="button">下一张</button>
</div>
<script type="text/javascript">
var btn=document.querySelectorAll('button');
var lists=document.querySelector('.list');
var imgs=lists.querySelectorAll('li');
var num=0;//定义一个变量num和每次移动的倍数建立联系
//定义一个变量width和每次移动的定宽建立联系
var width=400;
//获取点点的标签
var ospans=document.querySelectorAll('.ospan span');
//上一张
btn[0].onclick=function(){
//图片向右移,left为正
num++;
//当num等于1时回到最后一张图片的倍数,限制num数值
if(num==1){//==
num=-(imgs.length-1);
//0,-1,-2,-3
}//可以用三目运算判断
lists.style.left=(num*width)+'px';
//设置span样式
// var index=-num;
for(var i=0;i<ospans.length;i++){
ospans[i].className='';
}
ospans[-num].className='active';
}
//下一张
btn[1].onclick=function(){
//图片向右移,left为负
num--;
//当为超出图片的数量时无显示,所以当-num大于图片数量减一;给num赋值为初值
if(-num>imgs.length-1){
num=0;
}
lists.style.left=(num*width)+'px';
//-num下标
for(var i=0;i<ospans.length;i++){
ospans[i].className='';
}
ospans[-num].className='active';
}
//设置span样式,事件
for(var i=0;i<ospans.length;i++){
//定义一个自定义变量
ospans[i].index=i;
//给span添加事件
ospans[i].onmouseenter=function(){
//遍历添加清除样式
for(var i=0;i<ospans.length;i++){
// ospans[i].style.background='white';
ospans[i].className='';
}
//num和下标建立联系,移动,left为负变的加符号
num=-(this.index);
// this.style.background='red';
this.className='active';
//点击span切换图片
lists.style.left=(num*width)+'px';
}
}
</script>
</body>
</html>
包装了一小块函数:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
.box{
width:400px;
height: 400px;
margin: 0px auto;
border: 1px solid #000000;
position: relative;
overflow: hidden;
}
.list{
width: 1600px;
height: 400px;
position:absolute;
transition: 1s;
left: 0;
top:0;
}
.box .list li{
list-style: none;
float: left;
}
img{
width: 400px;
height: 400px;
vertical-align: top;
}
.ospan{
width:100px;
height: 20px;
position: absolute;
top: 370px;
left:47%;
}
.ospan span{
width:20px;
height: 20px;
float: left;
border-radius: 50%;
background: white;
margin-right: 5px;
}
.ospan .active{
background:red;
}
</style>
</head>
<body>
<!--
var box=function(){
console.log(1)
}
function fn(){
console.log(2)
}
fn();
-->
<div class="box">
<ul class="list">
<li>
<a href="">
<img src="img/1.png" alt="">
</a>
</li>
<li>
<a href="">
<img src="img/2.png" alt="">
</a>
</li>
<li>
<a href="">
<img src="img/3.png" alt="">
</a>
</li>
<li>
<a href="">
<img src="img/4.png" alt="">
</a>
</li>
</ul>
</div>
<div class="ospan">
<span class="active"></span>
<span></span>
<span></span>
<span></span>
</div>
<div class="item" style="width:400px;line-height:50px;margin: 0px auto;text-align: center;background: pink;border: 1px solid #000000;">
<button type="button">上一张</button>
<button type="button">下一张</button>
</div>
<script type="text/javascript">
var btn=document.querySelectorAll('button');
var lists=document.querySelector('.list');
var imgs=lists.querySelectorAll('li');
var num=0;//定义一个变量num和每次移动的倍数建立联系
//定义一个变量width和每次移动的定宽建立联系
var width=400;
//获取点点的标签
var ospans=document.querySelectorAll('.ospan span');
//上一张
btn[0].onclick=function(){
//图片向右移,left为正
num++;
//当num等于1时回到最后一张图片的倍数,限制num数值
if(num==1){//==
num=-(imgs.length-1);
//0,-1,-2,-3
}//可以用三目运算判断
lists.style.left=(num*width)+'px';
//设置span样式
// var index=-num;
clearspan();
}
//下一张
btn[1].onclick=function(){
//图片向右移,left为负
num--;
//当为超出图片的数量时无显示,所以当-num大于图片数量减一;给num赋值为初值
if(-num>imgs.length-1){
num=0;
}
lists.style.left=(num*width)+'px';
//-num下标
clearspan();
}
//设置span样式,事件
for(var i=0;i<ospans.length;i++){
//定义一个自定义变量
ospans[i].index=i;
//给span添加事件
ospans[i].onmouseenter=function(){
//遍历添加清除样式
for(var i=0;i<ospans.length;i++){
// ospans[i].style.background='white';
ospans[i].className='';
}
//num和下标建立联系,移动,left为负变的加符号
num=-(this.index);
// this.style.background='red';
this.className='active';
//点击span切换图片
lists.style.left=(num*width)+'px';
}
}
function clearspan(){
for(var i=0;i<ospans.length;i++){
ospans[i].className='';
}
ospans[-num].className='active';
}
</script>
</body>
</html>