学习了妙味课堂的图片切换(动画版)
这个小效果相对简单一点。
知识预备:
【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[n]){
divs[n].style.opacity = 0;
divs[n].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[n]){
divs[n].style.opacity = 0;
divs[n].style.backgroundImage = "url(img/0"+imgNum+".png)";
}
}
</script>
</body>
</html>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
js,图片切换
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。