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 tools 系列 scrollable学习
Sep 06 Javascript
jquery.ui.progressbar 中文文档
Nov 26 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
Feb 17 Javascript
Node.js的Mongodb使用实例
Dec 30 Javascript
JS回调函数基本定义与用法实例分析
May 24 Javascript
vue--点击当前增加class,其他删除class的方法
Sep 15 Javascript
webpack4实现不同的导出类型
Apr 09 Javascript
webpack是如何实现模块化加载的方法
Nov 06 Javascript
JavaScript 装逼指南(js另类写法)
May 10 Javascript
微信小程序仿抖音短视频切换效果的实例代码
Jun 24 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
Oct 02 Javascript
Vue与React的区别和优势对比
Dec 18 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笔记之:php函数range() round()和list()的使用说明
2013/04/26 PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
2016/04/21 PHP
PHPExcel简单读取excel文件示例
2016/05/26 PHP
PHP简单遍历对象示例
2016/09/28 PHP
javascript showModalDialog模态对话框使用说明
2009/12/31 Javascript
windows系统下简单nodejs安装及环境配置
2013/01/08 NodeJs
javascript中的document.open()方法使用介绍
2013/10/09 Javascript
JS中dom0级事件和dom2级事件的区别介绍
2016/05/05 Javascript
关于JS中setTimeout()无法调用带参函数问题的解决方法
2016/06/21 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
2017/01/26 Javascript
js中apply()和call()的区别与用法实例分析
2018/08/14 Javascript
解决angularjs service中依赖注入$scope报错的问题
2018/10/02 Javascript
vue-resourc发起异步请求的方法
2020/02/11 Javascript
解决vue-router路由拦截造成死循环问题
2020/08/05 Javascript
原生微信小程序开发中 redux 的使用详解
2021/02/18 Javascript
对于Python的框架中一些会话程序的管理
2015/04/20 Python
详解Golang 与python中的字符串反转
2017/07/21 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
2019/04/11 Python
Python代码实现http/https代理服务器的脚本
2019/08/12 Python
pytorch中nn.Conv1d的用法详解
2019/12/31 Python
Windows下实现将Pascal VOC转化为TFRecords
2020/02/17 Python
python实现从尾到头打印单链表操作示例
2020/02/22 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
2021/02/25 Python
关于HTML5语义标签的实践(blog页面)
2016/07/12 HTML / CSS
学习委员自我鉴定
2014/01/13 职场文书
母婴店促销方案
2014/03/05 职场文书
有趣的广告词
2014/03/18 职场文书
企业家王石演讲稿:坚持与放下
2014/04/27 职场文书
圣诞节活动策划方案
2014/06/09 职场文书
纪念九一八事变83周年国旗下讲话稿
2014/09/15 职场文书
党员个人对照检查材料范文
2014/09/24 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书
劳动仲裁调解书
2015/05/20 职场文书
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server
Python爬虫基础之简单说一下scrapy的框架结构
2021/06/26 Python
Python采集股票数据并制作可视化柱状图
2022/04/04 Python