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 鼠标滚轮事件
Apr 09 Javascript
jQuery的Ajax的自动完成功能控件简要说明
Feb 22 Javascript
AspNet中使用JQuery boxy插件的确认框
May 20 Javascript
Css3制作变形与动画效果
Jul 24 Javascript
JavaScript实现同时调用多个函数的方法
Nov 09 Javascript
判断是否存在子节点的实现代码
May 18 Javascript
BootStrap入门教程(二)之固定的内置样式
Sep 19 Javascript
AngularJS  ng-table插件设置排序
Sep 21 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
Nov 07 Javascript
vue多层嵌套路由实例分析
Mar 19 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
May 11 Javascript
webpack+express实现文件精确缓存的示例代码
Jun 11 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
社区(php&amp;&amp;mysql)一
2006/10/09 PHP
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
2011/04/18 PHP
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
2012/05/06 PHP
php为字符串前后添加指定数量字符的方法
2015/05/04 PHP
PHP基于递归实现的约瑟夫环算法示例
2017/08/27 PHP
ExtJS 2.0实用简明教程 之Ext类库简介
2009/04/29 Javascript
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
2010/11/23 Javascript
jQuery AJAX实现调用页面后台方法和web服务定义的方法分享
2012/03/01 Javascript
Extjs4 关于Store的一些操作(加载/回调/添加)
2013/04/18 Javascript
30个经典的jQuery代码开发技巧
2014/12/15 Javascript
js图片跟随鼠标移动代码
2015/11/26 Javascript
JavaScript设计模式经典之命令模式
2016/02/24 Javascript
JavaScript实现选中文字提示新浪微博分享效果
2017/06/15 Javascript
webpack实现热更新(实施同步刷新)
2017/07/28 Javascript
在Vue.js中使用Mixins的方法
2017/09/12 Javascript
vue 微信授权登录解决方案
2018/04/10 Javascript
vue获取data数据改变前后的值方法
2019/11/07 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
使用Mock.js生成前端测试数据
2020/12/13 Javascript
Python中用max()方法求最大值的介绍
2015/05/15 Python
详解Python中的array数组模块相关使用
2016/07/05 Python
python基础教程之五种数据类型详解
2017/01/12 Python
python中正则表达式的使用方法
2018/02/25 Python
Python使用jsonpath-rw模块处理Json对象操作示例
2018/07/31 Python
Python Matplotlib实现三维数据的散点图绘制
2019/03/19 Python
Django框架封装外部函数示例
2019/05/28 Python
Matplotlib 折线图plot()所有用法详解
2020/07/28 Python
详解Pytorch显存动态分配规律探索
2020/11/17 Python
python操作toml文件的示例代码
2020/11/27 Python
Python扫描端口的实现
2021/01/25 Python
解决pytorch 数据类型报错的问题
2021/03/03 Python
css3让div随鼠标移动而抖动起来
2014/02/10 HTML / CSS
阿联酋电子产品购物网站:Menakart
2017/09/15 全球购物
2015暑假实习报告范文
2015/07/13 职场文书
JavaScript实现班级抽签小程序
2021/05/19 Javascript
mysql性能优化以及配置连接参数设置
2022/05/06 MySQL