灵活使用数组制作图片切换js实现


Posted in Javascript onJuly 28, 2016

js活用数组制作图片切换效果,供大家参考,具体内容如下

数组元素位置变换:

将内容分割为数组,将第一个加到最后,删掉第一个

<div id="box">1,2,3,4</div>
<input type="button" value='切换' id='input'>
<script>
 window.onload=function(){
 var oDiv=document.getElementById('box');
 var oInput=document.getElementById('input');

 oInput.onclick=function(){
  var arr=oDiv.innerHTML.split(',');
  // console.log(arr);
  arr.push(arr[0]);//将第一个加到最后,删掉第一个
  arr.shift();
  oDiv.innerHTML=arr;
 }
 }
</script>

模拟图片切换效果:

window.onload=function(){
 var aDiv=document.getElementsByTagName('div');
 var aInput=document.getElementsByTagName('input');
 var arr=[];//创建空数组用于存放属性

 for(var i=0;i<aDiv.length;i++){
 console.dir(getStyle(aDiv[i],'left'));//获取到纯净的最终样式
 //将属性作为 符合数组 加入arr中,可用于多属性
   arr.push([getStyle(aDiv[i],'left'),getStyle(aDiv[i],'top')]);
 }
 // console.dir(arr);

 aInput[0].onclick=function(){//将第一个加到最后,删掉第一个
 arr.push(arr[0]);
 arr.shift();
 for(var i=0;i<aDiv.length;i++){//操作完数组后重新赋值
  aDiv[i].style.left=arr[i][0];
  aDiv[i].style.top=arr[i][1];
 }
 };
 aInput[1].onclick=function(){//将最后一个加到最前,删最后
 arr.unshift(arr[arr.length-1]);
 arr.pop();
 for(var i=0;i<aDiv.length;i++){
  aDiv[i].style.left=arr[i][0];
  aDiv[i].style.top=arr[i][1];
 }
 };
 function getStyle(obj,attr){//获取最终样式
 if(obj.currentStyle){
  return obj.currentStyle[attr];
 }else{
  return getComputedStyle(obj,false)[attr];
 }
 }
}

简陋效果图:

灵活使用数组制作图片切换js实现

实例版:

思路:
若有五张图片:图1~5的left值分别为:20px、60px、100px、240px、380px;
点击左切换按钮后,对应的图1~5left值变为:60px、100px、240px、380px、20px;

--------------------------------------------------------------------------------

相当于这组数组第一个元素移到最后:20px、60px、100px、240px、380px、20px;
然后再把第一个元素删除得:60px、100px、240px、380px、20px;
以此类推:

实例布局:

<div id="box">
 <ul>
 <li class='pos_0'><img src="images/1.png" width='300'></li>
 <li class='pos_1'><img src="images/1.jpg" width='400'></li>
 <li class='pos_2'><img src="images/2.jpg" width='500'></li>
 <li class='pos_3'><img src="images/3.jpg" width='400'></li>
 <li class='pos_4'><img src="images/1.jpg" width='300'></li>
 </ul>
 <span class='dir dirl'></span>
 <span class='dir dirr'></span>
</div>

实例样式:

#box{width:700px;height:300px;position:relative;margin:20px auto;text-align: center;}
#box ul{list-style: none;}
#box ul li{position:absolute;}
#box ul li.pos_0{top:50px;left:20px;z-index:1;opacity:0.5;}
#box ul li.pos_1{top:20px;left:60px;z-index:2;opacity:0.8;}
#box ul li.pos_2{top:0px;left:100px;z-index:3;opacity:1;}
#box ul li.pos_3{top:20px;left:240px;z-index:2;opacity:0.8;}
#box ul li.pos_4{top:50px;left:380px;z-index:1;opacity:0.5;}
.dir{display: inline-block;width:45px;height:100px;background:url('images/button.png') no-repeat;
position:absolute;top:60px;z-index:4;}
.dirl{background-position: 0px 0;left:40px;}
.dirr{background-position: -55px 0;right:40px;}

JS代码:

window.onload=function(){
 var oPre=document.getElementsByClassName('dir')[0];
 var oNext=document.getElementsByClassName('dir')[1];
 var aLi=document.getElementsByTagName('li');
 var arr=[];
 for(var i=0;i<aLi.length;i++){
 var oImg=aLi[i].getElementsByTagName('img')[0];
 // console.log(getStyle(aLi[i],'left'));
 // console.log(parseInt(getStyle(aLi[i],'opacity')*100));
 // console.log(getStyle(aLi[i],'z-index'));
 // console.log(oImg.width);
 arr.push([
  parseInt(getStyle(aLi[i],'top')),
  parseInt(getStyle(aLi[i],'opacity')*100),
  parseInt(getStyle(aLi[i],'z-index')),
  oImg.width
  ]);
 // console.log(arr[i][2]);
 }
 // console.dir(arr);
 oPre.onclick=function(){//左
 arr.push(arr[0]);
 arr.shift();
 for(var i=0;i<aLi.length;i++){

  var oImg=aLi[i].getElementsByTagName('img')[0];
  //console.log(arr[i][2]);
  startMove(aLi[i],{
  left:arr[i][0],
  top:arr[i][1],
  opacity:arr[i][2],
  });
  aLi[i].style.zIndex=arr[i][3];
  startMove(oImg,{width:arr[i][4]});
 }
 };
 oNext.onclick=function(){//右
 arr.unshift(arr[arr.length-1]);
 arr.pop();
 for(var i=0;i<aLi.length;i++){

  var oImg=aLi[i].getElementsByTagName('img')[0];

  startMove(aLi[i],{
  left:arr[i][0],
  top:arr[i][1],
  opacity:arr[i][2],
  });

  aLi[i].style.zIndex=arr[i][3];
  startMove(oImg,{width:arr[i][4]});
 }
 };
 function getStyle(obj,attr){//得到是带单位的数值
 if(obj.currentStyle){
  return obj.currentStyle[attr];
 }else{
  return getComputedStyle(obj,false)[attr];
 }
 }
}

效果图:

灵活使用数组制作图片切换js实现

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用javascript实现画板的代码
Sep 05 Javascript
JavaScript 原型链学习总结
Oct 29 Javascript
jQuery学习笔记 操作jQuery对象 文档处理
Sep 19 Javascript
Node.js如何自动审核团队的代码
Jul 20 Javascript
angular ngClick阻止冒泡使用默认行为的方法
Nov 03 Javascript
JavaScript实现简单的文本逐字打印效果示例
Apr 12 Javascript
JavaScript中常见内置函数用法示例
May 14 Javascript
angularjs通过过滤器返回超链接的方法
Oct 26 Javascript
require.js 加载过程与使用方法介绍
Oct 30 Javascript
vue使用Proxy实现双向绑定的方法示例
Mar 20 Javascript
使用原生js编写一个简单的框选功能方法
May 13 Javascript
功能完善的小程序日历组件的实现
Mar 31 Javascript
AngularJS 中文API参考手册
Jul 28 #Javascript
AngularJS 简单应用实例
Jul 28 #Javascript
AngularJS 路由详解和简单实例
Jul 28 #Javascript
AngularJS 依赖注入详解和简单实例
Jul 28 #Javascript
AngularJS中实现动画效果的方法
Jul 28 #Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
Jul 28 #Javascript
AngularJS中的包含详细介绍及实现示例
Jul 28 #Javascript
You might like
一棵php的类树(支持无限分类)
2006/10/09 PHP
实用函数3
2007/11/08 PHP
PHPStrom 新建FTP项目以及在线操作教程
2016/10/16 PHP
php的4种常用运行方式详解
2016/12/22 PHP
php制作基于xml的RSS订阅源功能示例
2017/02/08 PHP
Open and Print a Word Document
2007/06/15 Javascript
基于jquery的direction图片渐变动画效果
2010/05/24 Javascript
cnblogs中在闪存中屏蔽某人的实现代码
2010/11/14 Javascript
深入理解JavaScript作用域和作用域链
2011/10/21 Javascript
Vue.js每天必学之计算属性computed与$watch
2016/09/05 Javascript
vue + socket.io实现一个简易聊天室示例代码
2017/03/06 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
2017/04/13 Javascript
利用n工具轻松管理Node.js的版本
2017/04/21 Javascript
js构建二叉树进行数值数组的去重与优化详解
2018/03/26 Javascript
vue2中使用less简易教程
2018/03/27 Javascript
原生js实现each方法实例代码详解
2019/05/27 Javascript
vue3实现v-model原理详解
2019/10/09 Javascript
详解JavaScript中精度失准问题及解决方法
2020/02/04 Javascript
谈谈node.js中的模块系统
2020/09/01 Javascript
[01:12:44]VG vs Mineski Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
python操作摄像头截图实现远程监控的例子
2014/03/25 Python
Python Tkinter基础控件用法
2014/09/03 Python
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
python读取中文txt文本的方法
2018/04/12 Python
从列表或字典创建Pandas的DataFrame对象的方法
2019/07/06 Python
python实现ftp文件传输系统(案例分析)
2020/03/20 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
2020/11/17 Python
美国农场商店:Blain’s Farm & Fleet
2020/01/17 全球购物
文员岗位职责范本
2014/03/08 职场文书
2014两会学习心得:榜样精神伴我行
2014/03/17 职场文书
成绩单公证书
2014/04/10 职场文书
销售团队口号大全
2014/06/06 职场文书
安全先进个人材料
2014/12/29 职场文书
小升初自荐信范文
2015/03/05 职场文书
2015年乡镇纪检工作总结
2015/04/22 职场文书
体育委员竞选稿
2015/11/21 职场文书