您的位置:首页 > Web前端 > JavaScript

js实现图片切换(动画版)

2016-12-25 09:22 836 查看

学习了妙味课堂的图片切换(动画版)

这个小效果相对简单一点。

知识预备:

【1】background-position-x

background-position属性设置背景原图像(由 background-image 定义)的位置,意味着使用这个属性的前提是必须设置背景原图像background-image。

background-position有两个属性值, background-position:x | y,用法上可以对其一个属性单独使用 background-position-x 和 background-position-y。

准备工作完毕,开始写代码

第一步

由于这次需要的div很多,所以采用动态添加的方式,直接看代码

<style>
body{
margin: 0;
background-color: #5e5e5e;
}
#box{
width: 857px;
height: 574px;
padding-top: 126px;
padding-left:143px;
background: url(img/bg.png) no-repeat;
margin: 0px auto;
}
#wrap{
width: 700px;
height: 420px;
transform-style: preserve-3d;
perspective: 800px;
}
#wrap div{
width: 10px;
height: 420px;
background: url(img/01.png) no-repeat;
float: left;
transition: .5s;
}
</style>
</head>
<body>
<div id="box">
<div id="wrap"></div>
</div>
<script>
//在wrap下,写70个div,每个div显示一张图片的一小片部分,这样70个div能完整的显示出一张图片
for(var i=0;i<70;i++){
str +='<div style="background-position-x:'+(-10*i)+'px"></div>';
}
oWrap.innerHTML = str;
//获取70个div
var divs = oWrap.getElementsByTagName('div');
    </script>
</body>

第二步

写tab()函数,设置每个div要做的动画

tab()函数

// 每个div设置前一个div的透明度为1,并且设置自己的透明度为0和背景图片
function tab(n){
// 0
if(divs[n-1]){
divs[n-1].style.opacity = 1;
}
// 70
if(divs
){
divs
.style.opacity = 0;
divs
.style.backgroundImage = "url(img/0"+imgNum+".png)";
}
}

第三步

写go()函数,利用定时器改变tab()函数的参数并且适时的改变背景图片

go()

//给tab()函数传递n值
function go(){
timer = setInterval(function(){
tab(num);
num++;
//一张图片切换完毕
if(num == 71){
clearInterval(timer);
//切换下一张图片
imgNum++;
//num清0,动画效果从第一个div开始
num = 0;
//当切到最后一张图片时,在从第一张开始切换
if(imgNum == 6){
imgNum = 1;
}
//切换完一张图片时切换下一张图片的间隔
setTimeout(go,800);
}
//div变换的速度
},80);
}

总结:这个动画效果实现起来简单,代码问题不大,主要就是实现思路的问题。

源码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>图片切换(动画版)</title>
<style>
body{
margin: 0;
background-color: #5e5e5e;
}
#box{
width: 857px;
height: 574px;
padding-top: 126px;
padding-left:143px;
background: url(img/bg.png) no-repeat;
margin: 0px auto;
}
#wrap{
width: 700px;
height: 420px;
transform-style: preserve-3d;
perspective: 800px;
}
#wrap div{
width: 10px;
height: 420px;
background: url(img/01.png) no-repeat;
float: left;
transition: .5s;
}
</style>
</head>
<body>
<div id="box">
<div id="wrap"></div>
</div>
<script>
//在wrap下,写70个div,每个div显示一张图片的一小片部分,这样70个div能完整的显示出一张图片
for(var i=0;i<70;i++){
str +='<div style="background-position-x:'+(-10*i)+'px"></div>';
}
oWrap.innerHTML = str;
//获取70个div
var divs = oWrap.getElementsByTagName('div');
go();//给tab()函数传递n值
function go(){
timer = setInterval(function(){
tab(num);
num++;
//一张图片切换完毕
if(num == 71){
clearInterval(timer);
//切换下一张图片
imgNum++;
//num清0,动画效果从第一个div开始
num = 0;
//当切到最后一张图片时,在从第一张开始切换
if(imgNum == 6){
imgNum = 1;
}
//切换完一张图片时切换下一张图片的间隔
setTimeout(go,800);
}
//div变换的速度
},80);
}// 每个div设置前一个div的透明度为1,并且设置自己的透明度为0和背景图片
function tab(n){
// 0
if(divs[n-1]){
divs[n-1].style.opacity = 1;
}
// 70
if(divs
){
divs
.style.opacity = 0;
divs
.style.backgroundImage = "url(img/0"+imgNum+".png)";
}
}
</script>
</body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  js 图片切换