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 相关文章推荐
Jquery 插件学习实例1 插件制作说明与tableUI优化
Apr 02 Javascript
js对象之JS入门之Array对象操作小结
Jan 09 Javascript
IE8中使用javascript动态加载CSS的解决方法
Jun 17 Javascript
JavaScript将字符串转换为整数的方法
Apr 14 Javascript
基于jquery实现一个滚动的分步注册向导-附源码
Aug 26 Javascript
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
Oct 10 Javascript
canvas仿iwatch时钟效果
Mar 06 Javascript
es6学习之解构时应该注意的点
Aug 29 Javascript
深入浅出理解JavaScript高级定时器原理与用法
Aug 02 Javascript
Bootstrap Table列宽拖动的方法
Aug 15 Javascript
微信小程序模板消息限制实现无限制主动推送的示例代码
Aug 27 Javascript
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
Feb 23 Vue.js
根据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
PHP 遍历文件实现代码
2011/05/04 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
2015/06/10 PHP
PHP环境中Memcache的安装和使用
2015/11/05 PHP
ThinkPHP项目分组配置方法分析
2016/03/23 PHP
thinkPHP分组后模板无法加载问题解决方法
2016/07/12 PHP
PHP PDOStatement::errorInfo讲解
2019/01/31 PHP
基于PHP实现生成随机水印图片
2020/12/09 PHP
setInterval 和 setTimeout会产生内存溢出
2008/02/15 Javascript
function foo的原型与prototype属性解惑
2010/11/19 Javascript
25个优雅的jQuery Tooltip插件推荐
2011/05/25 Javascript
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
2012/10/12 Javascript
jquery获取复选框被选中的值
2014/04/10 Javascript
jQuery聚合函数实例
2015/05/21 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
jQuery表单验证功能实例
2015/08/28 Javascript
微信小程序使用第三方库Immutable.js实例详解
2016/09/27 Javascript
JavaScript运动框架 链式运动到完美运动(五)
2017/05/18 Javascript
详解AngularJS脏检查机制及$timeout的妙用
2017/06/19 Javascript
Angular2 父子组件通信方式的示例
2018/01/29 Javascript
linux 后台运行node服务指令方法
2018/05/23 Javascript
vue里input根据value改变背景色的实例
2018/09/29 Javascript
Python删除windows垃圾文件的方法
2015/07/14 Python
Python实现简单字典树的方法
2016/04/29 Python
深入理解Python中range和xrange的区别
2017/11/26 Python
Python对象转换为json的方法步骤
2019/04/25 Python
TensorFLow 变量命名空间实例
2020/02/11 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
CSS3制作hover下划线动画
2017/03/27 HTML / CSS
配件采购员岗位职责
2013/12/03 职场文书
幼儿园开学家长寄语
2014/01/19 职场文书
个人能力自我鉴赏
2014/01/25 职场文书
党风廉政承诺书
2014/03/27 职场文书
天鹅湖观后感
2015/06/09 职场文书
SpringBoot集成Redis的思路详解
2021/10/16 Redis
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS
根德5570型九灯四波段立体声收音机是电子管收音机的楷模 ? 再论5570
2022/04/05 无线电