灵活使用数组制作图片切换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 相关文章推荐
js鼠标滑过弹出层的定位IE6bug解决办法
Dec 26 Javascript
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
Apr 26 Javascript
jQuery中json对象的复制方式介绍(数组及对象)
Jun 08 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
Jun 24 Javascript
详解AngularJS中自定义指令的使用
Jun 17 Javascript
JavaScript中利用各种循环进行遍历的方式总结
Nov 10 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
Dec 04 Javascript
深入理解JavaScript程序中内存泄漏
Mar 17 Javascript
jquery动态添加文本并获取值的方法
Oct 12 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
Feb 28 Javascript
webpack@v4升级踩坑(小结)
Oct 08 Javascript
详解vue 不同环境配置不同的打包命令
Apr 07 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
给海燕B411配件机起死回生配上件
2021/03/02 无线电
PHP使用in_array函数检查数组中是否存在某个值
2015/03/25 PHP
PHP实现对xml的增删改查操作案例分析
2017/05/19 PHP
JavaScript URL参数读取改进版
2009/01/16 Javascript
Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
2009/09/15 Javascript
extjs render 用法介绍
2013/09/11 Javascript
js下拉菜单语言选项简单实现
2013/09/23 Javascript
nodejs npm包管理的配置方法及常用命令介绍
2014/06/05 NodeJs
jquery实现简单的轮换出现效果实例
2015/07/23 Javascript
jQuery实现带有洗牌效果的动画分页实例
2015/08/31 Javascript
jquery验证邮箱格式并显示提交按钮
2015/11/07 Javascript
jQuery使用cookie与json简单实现购物车功能
2016/04/15 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
2016/09/28 Javascript
Ajax基础知识详解
2017/02/17 Javascript
React如何避免重渲染
2018/04/10 Javascript
微信小程序开发实现消息推送
2020/11/18 Javascript
vue使用混入定义全局变量、函数、筛选器的实例代码
2019/07/29 Javascript
Javascript操作select控件代码实例
2020/02/14 Javascript
JS指定音频audio在某个时间点进行播放
2020/11/28 Javascript
[01:10]DOTA2亚洲邀请赛 征战号角响彻全场
2015/01/06 DOTA
python提示No module named images的解决方法
2014/09/29 Python
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
2017/05/08 Python
python实现决策树、随机森林的简单原理
2018/03/26 Python
python实现逢七拍腿小游戏的思路详解
2020/05/26 Python
Python实现Canny及Hough算法代码实例解析
2020/08/06 Python
希尔顿酒店中国网站:Hilton中国
2017/03/11 全球购物
HUGO BOSS美国官方网上商店:世界知名奢侈品牌
2017/08/04 全球购物
英国户外装备和冒险服装零售商:alloutdoor
2018/01/30 全球购物
DNA基因检测和分析:23andMe
2019/05/01 全球购物
HOTEL INFO英国:搜索全球酒店
2019/08/08 全球购物
会计电算化专业个人的自我评价
2013/11/24 职场文书
cf战队收人口号
2014/06/21 职场文书
医院护士见习期自我鉴定
2014/09/15 职场文书
党的群众路线教育实践活动个人对照检查材料(教师)
2014/11/04 职场文书
第一军规观后感
2015/06/12 职场文书
最新最全的手机号验证正则表达式
2022/02/24 Javascript