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 相关文章推荐
无缝滚动改进版支持上下左右滚动(封装成函数)
Dec 04 Javascript
THREE.JS入门教程(4)创建粒子系统
Jan 24 Javascript
jquery中post方法用法实例
Oct 21 Javascript
jquery中attr和prop的区别分析
Mar 16 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
Oct 26 Javascript
JavaScript判断数组是否存在key的简单实例
Aug 03 Javascript
深入理解JS实现快速排序和去重
Oct 17 Javascript
jquery横向纵向鼠标滚轮全屏切换
Feb 27 Javascript
js鼠标跟随运动效果
Mar 11 Javascript
JS实现简易的图片拖拽排序实例代码
Jun 09 Javascript
js实现json数组分组合并操作示例
Feb 12 Javascript
在vue中实现echarts随窗体变化
Jul 27 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
JSON在PHP中的应用介绍
2012/09/08 PHP
php object转数组示例
2014/01/15 PHP
PHP验证信用卡卡号是否正确函数
2015/05/27 PHP
PHP合并数组的2种方法小结
2016/11/24 PHP
Gambit vs CL BO3 第一场 2.13
2021/03/10 DOTA
javascript 全选与全取消功能的实现代码
2012/12/23 Javascript
jqueryUI里拖拽排序示例分析
2015/02/26 Javascript
javascript实现图片自动和可控的轮播切换特效
2015/04/13 Javascript
javascript中的五种基本数据类型
2015/08/26 Javascript
微信小程序 swiper组件详解及实例代码
2016/10/25 Javascript
原生js实现新闻列表展开/收起全文功能
2017/01/20 Javascript
JavaScript中动态向表格添加数据
2017/01/24 Javascript
jQuery+pjax简单示例汇总
2017/04/21 jQuery
vue-cli 如何打包上线的方法示例
2018/05/08 Javascript
jQuery实现点击自身以外区域关闭弹出层功能完整示例【改进版】
2018/07/31 jQuery
React 项目迁移 Webpack Babel7的实现
2018/09/12 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
vue实现按钮切换图片
2021/01/20 Vue.js
JavaScript实现点击出现子菜单效果
2021/02/08 Javascript
Python 列表list使用介绍
2014/11/30 Python
python Django批量导入不重复数据
2016/03/25 Python
python 实现对文件夹内的文件排序编号
2018/04/12 Python
python 将md5转为16字节的方法
2018/05/29 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
2019/01/22 Python
Python:合并两个numpy矩阵的实现
2019/12/02 Python
关于ResNeXt网络的pytorch实现
2020/01/14 Python
Python中logging日志记录到文件及自动分割的操作代码
2020/08/05 Python
python Paramiko使用示例
2020/09/21 Python
压铸汽车模型收藏家:Diecastmodelswholesale.com
2016/12/21 全球购物
如何打造一封优秀的留学推荐信
2014/01/25 职场文书
学生考试舞弊检讨书
2015/01/01 职场文书
医务人员医德考评自我评价
2015/03/03 职场文书
《狼王梦》读后感:可怜天下父母心
2019/11/01 职场文书
JS实现扫雷项目总结
2021/05/19 Javascript
Golang map映射的用法
2022/04/22 Golang
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers