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插件
Nov 24 Javascript
原生js实现shift/ctrl/alt按键的获取
Apr 08 Javascript
JS获得URL超链接的参数值实例代码
Jun 21 Javascript
JavaScript DOM节点添加示例
Jul 16 Javascript
javascript面向对象之this关键词用法分析
Jan 13 Javascript
JavaScript数据结构与算法之链表
Jan 29 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
Jul 12 Javascript
vue嵌套路由与404重定向实现方法分析
May 04 Javascript
微信小程序在线客服自动回复功能(基于node)
Jul 03 Javascript
ES10的13个新特性示例(小结)
Sep 23 Javascript
解决vue cli使用typescript后打包巨慢的问题
Sep 30 Javascript
使用webpack将ES6转化ES5的实现方法
Oct 13 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之PHP语法学习笔记1
2006/12/17 PHP
php下保存远程图片到本地的办法
2010/08/08 PHP
CI框架源码阅读,系统常量文件constants.php的配置
2013/02/28 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
2016/01/07 PHP
jquery中的sortable排序之后的保存状态的解决方法
2010/01/28 Javascript
javascript 学习笔记(一)DOM基本操作
2011/04/08 Javascript
javascript实现无缝上下滚动特效
2015/12/16 Javascript
原生js实现图片轮播特效
2015/12/18 Javascript
JS和jQuery使用submit方法无法提交表单的原因分析及解决办法
2016/05/17 Javascript
jQuery的中 is(':visible') 解析及用法(必看)
2017/02/12 Javascript
原生js轮播特效
2017/05/18 Javascript
Vue.js搭建移动端购物车界面
2020/06/28 Javascript
Node.js爬取豆瓣数据实例分析
2018/03/05 Javascript
深入浅析javascript函数中with
2018/10/28 Javascript
vue 组件开发原理与实现方法详解
2019/11/29 Javascript
python局部赋值的规则
2013/03/07 Python
跟老齐学Python之用Python计算
2014/09/12 Python
Python循环语句中else的用法总结
2016/09/11 Python
python绘制铅球的运行轨迹代码分享
2017/11/14 Python
python实现Flappy Bird源码
2018/12/24 Python
python输出带颜色字体实例方法
2019/09/01 Python
python实现字典嵌套列表取值
2019/12/16 Python
tensorflow的计算图总结
2020/01/12 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
美国现代家具和家居商店:Apt2B
2016/08/29 全球购物
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
请用用Java代码写一个堆栈
2012/01/26 面试题
高一新生军训感言
2014/03/02 职场文书
新闻专业毕业生求职信
2014/08/08 职场文书
学生检讨书如何写
2014/10/30 职场文书
出纳岗位职责
2015/01/31 职场文书
买卖合同纠纷代理词
2015/05/25 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书
员工给公司的建议书
2019/06/24 职场文书
在HTML5 localStorage中存储对象的示例代码
2021/04/21 Javascript
CentOS7环境下MySQL8常用命令小结
2022/06/10 Servers