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 45种缓动效果 非常酷
Jun 28 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
Jan 24 Javascript
javascript获取form里的表单元素的示例代码
Feb 14 Javascript
jQuery学习笔记之jQuery.fn.init()的参数分析
Jun 09 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
May 09 Javascript
微信小程序 加载 app-service.js 错误解决方法
Oct 12 Javascript
vue.js初学入门教程(1)
Nov 03 Javascript
vue2.0 实现页面导航提示引导的方法
Mar 13 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
Jul 25 Javascript
微信小程序实现文字从右向左无限滚动
Nov 18 Javascript
小程序采集录音并上传到后台
Nov 22 Javascript
详解Nuxt内导航栏的两种实现方式
Apr 16 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中的
2016/04/23 PHP
谈谈我对JavaScript中typeof和instanceof的深入理解
2015/12/25 Javascript
简单解析JavaScript中的__proto__属性
2016/05/10 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
2016/06/06 Javascript
Bootstrap 模态框(Modal)插件代码解析
2016/12/21 Javascript
原生js开发的日历插件
2017/02/04 Javascript
Bootstrap实现翻页效果
2017/11/27 Javascript
swiper 解决动态加载数据滑动失效的问题
2018/02/26 Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
2018/11/15 Javascript
微信小程序textarea层级过高的解决方法
2019/03/04 Javascript
详解如何使用nvm管理Node.js多版本
2019/05/06 Javascript
vue基于better-scroll实现左右联动滑动页面
2020/06/30 Javascript
python实现网页链接提取的方法分享
2014/02/25 Python
Python判断操作系统类型代码分享
2014/11/22 Python
深入浅出分析Python装饰器用法
2017/07/28 Python
使用Pyinstaller的最新踩坑实战记录
2017/11/08 Python
Python如何爬取实时变化的WebSocket数据的方法
2019/03/09 Python
Python进程间通信Queue消息队列用法分析
2019/05/22 Python
Python 3.8 新功能全解
2019/07/25 Python
python3.6生成器yield用法实例分析
2019/08/23 Python
Python模块汇总(常用第三方库)
2019/10/07 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
2019/10/24 Python
parser.add_argument中的action使用
2020/04/20 Python
使用PyQt5实现图片查看器的示例代码
2020/04/21 Python
在keras中model.fit_generator()和model.fit()的区别说明
2020/06/17 Python
css3的动画特效之动画序列(animation)
2017/12/22 HTML / CSS
CSS3制作皮卡丘动画壁纸的示例
2020/11/02 HTML / CSS
自荐信不宜过于夸大
2013/11/06 职场文书
美容院店长岗位职责
2014/04/08 职场文书
放飞中国梦演讲稿
2014/04/23 职场文书
淘宝活动总结范文
2014/06/26 职场文书
学习计划书怎么写
2014/09/15 职场文书
2015社区六五普法工作总结
2015/04/21 职场文书
2015年前台文员工作总结
2015/05/18 职场文书
2016大学生求职自荐信范文
2016/01/28 职场文书
Python学习之时间包使用教程详解
2022/03/21 Python