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


Posted in Javascript onDecember 25, 2016

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

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

知识预备:

【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>

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

Javascript 相关文章推荐
几个常用的JavaScript字符串处理函数 - split()、join()、substring()和indexOf()
Jun 02 Javascript
javascript Array数组对象的扩展函数代码
May 22 Javascript
javascript与CSS复习(三)
Jun 29 Javascript
jQuery获取注册信息并提示实现代码
Apr 21 Javascript
逻辑表达式中与或非的用法详解
Jun 06 Javascript
JS获取浮动(float)元素的style.left值为空的快速解决办法
Feb 19 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
Mar 01 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
Apr 01 Javascript
label+input实现按钮开关切换效果的实例
Aug 16 Javascript
微信小程序获取复选框全选反选选中的值(实例代码)
Dec 17 Javascript
基于aotu.js实现微信自动添加通讯录中的联系人功能
May 28 Javascript
vue 出现data-v-xxx的原因及解决
Aug 04 Javascript
根据Bootstrap Paginator改写的js分页插件
Dec 25 #Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
Dec 25 #Javascript
jQuery实现圣诞节礼物传送(花式轮播)
Dec 25 #Javascript
js判断iframe中元素是否存在的实现代码
Dec 24 #Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
Dec 24 #Javascript
web 屏蔽BackSpace键实例代码
Dec 24 #Javascript
js实现的xml对象转json功能示例
Dec 24 #Javascript
You might like
生成sessionid和随机密码的例子
2006/10/09 PHP
PHP编程函数安全篇
2013/01/08 PHP
一个简单的PHP验证码实现代码
2014/05/10 PHP
ThinkPHP的MVC开发机制实例解析
2014/08/23 PHP
php商品对比功能代码分享
2015/09/24 PHP
Javascript调试工具(下载)
2007/01/09 Javascript
JQuery 插件制作实践 xMarquee插件V1.0
2010/04/02 Javascript
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
2013/03/25 Javascript
div拖拽插件——JQ.MoveBox.js(自制JQ插件)
2013/05/17 Javascript
原生JS实现表单checkbook获取已选择的值
2013/07/21 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
jquery中获取元素里某一特定子元素的代码
2014/12/02 Javascript
JavaScript中逗号运算符介绍及使用示例
2015/03/13 Javascript
Svg.js实例教程及使用手册详解(一)
2016/05/16 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
2016/09/08 Javascript
[02:04]2014DOTA2国际邀请赛 DK一个时代的落幕
2014/07/21 DOTA
[01:01:24]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python多线程编程(六):可重入锁RLock
2015/04/05 Python
python使用Tkinter显示网络图片的方法
2015/04/24 Python
Python获取任意xml节点值的方法
2015/05/05 Python
python奇偶行分开存储实现代码
2018/03/19 Python
Python交互环境下实现输入代码
2018/06/22 Python
Python列表list排列组合操作示例
2018/12/18 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
玩具反斗城美国官网:Toys"R"Us
2016/09/17 全球购物
马德里著名的运动鞋商店:NOIRFONCE
2019/04/12 全球购物
西班牙宠物用品和食品网上商店:Tiendanimal
2019/06/06 全球购物
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
小学四年级学生评语
2014/12/26 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
情侣之间的道歉短信
2015/05/12 职场文书
环境卫生标语
2015/08/03 职场文书
优质服务心得体会(共4篇)
2016/01/22 职场文书
幼儿园语言教学反思
2016/02/23 职场文书
go使用Gin框架利用阿里云实现短信验证码功能
2021/08/04 Golang
Java中CyclicBarrier和CountDownLatch的用法与区别
2021/08/23 Java/Android