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 相关文章推荐
统一接口:为FireFox添加IE的方法和属性的js代码
Mar 25 Javascript
javascript 控制弹出窗口
Apr 10 Javascript
利用jquery的获取JS文件中的字符串内容
Feb 14 Javascript
js完美的div拖拽实例代码
Jan 22 Javascript
js+html5实现canvas绘制圆形图案的方法
Jun 05 Javascript
JavaScript读二进制文件并用ajax传输二进制流的方法
Jul 18 Javascript
微信小程序 animation API详解及实例代码
Oct 08 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
Feb 16 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
Jul 31 Javascript
React-router v4 路由配置方法小结
Aug 08 Javascript
小程序扫描普通链接二维码跳转小程序指定界面方法
May 07 Javascript
Vue2.0 ES6语法降级ES5的操作
Oct 30 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
【动漫杂谈】关于《请在T台上微笑》
2020/03/03 日漫
php curl模拟post提交数据示例
2013/12/31 PHP
使用EXT实现无刷新动态调用股票信息
2008/11/01 Javascript
js 数组操作代码集锦
2009/04/28 Javascript
jQuery中empty()方法用法实例
2015/01/16 Javascript
JavaScript生成福利彩票双色球号码
2015/05/15 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
2015/11/02 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
2016/07/22 Javascript
js获取指定字符前/后的字符串简单实例
2016/10/27 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
JS使用tween.js动画库实现轮播图并且有切换功能
2018/07/17 Javascript
jquery 动态遍历select 赋值的实例
2018/09/12 jQuery
vue头部导航动态点击处理方法
2018/11/02 Javascript
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
JS+CSS实现炫酷光感效果
2020/09/05 Javascript
Python实现PS图像明亮度调整效果示例
2018/01/23 Python
python正则表达式面试题解答
2020/04/28 Python
详谈Pandas中iloc和loc以及ix的区别
2018/06/08 Python
Django渲染Markdown文章目录的方法示例
2019/01/02 Python
用python实现刷点击率的示例代码
2019/02/21 Python
pycharm创建scrapy项目教程及遇到的坑解析
2019/08/15 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
python打印直角三角形与等腰三角形实例代码
2019/10/20 Python
python模块和包的应用BASE_PATH使用解析
2019/12/14 Python
Python抓包程序mitmproxy安装和使用过程图解
2020/03/02 Python
Python环境管理virtualenv&amp;virtualenvwrapper的配置详解
2020/07/01 Python
python脚本和网页有何区别
2020/07/02 Python
pycharm激活方法到2099年(激活流程)
2020/09/22 Python
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
服务生自我鉴定
2014/01/22 职场文书
幼师求职信
2014/06/23 职场文书
师范学院毕业生求职信
2014/06/24 职场文书
送达通知书
2015/04/25 职场文书
2015年司法所工作总结
2015/04/27 职场文书
django如何自定义manage.py管理命令
2021/04/27 Python