灵活使用数组制作图片切换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 import css实例代码
Jul 18 Javascript
浅谈javascript中的作用域
Apr 07 Javascript
jQuery中使用Ajax获取JSON格式数据示例代码
Nov 26 Javascript
javascript弹出页面回传值的方法
Jan 28 Javascript
jQuery实现form表单元素序列化为json对象的方法
Dec 09 Javascript
原生JS和jQuery版实现文件上传功能
Apr 18 Javascript
Jquery实现select multiple左右添加和删除功能的简单实例
May 26 Javascript
浅谈js构造函数的方法与原型prototype
Jul 04 Javascript
JS实现根据密码长度显示安全条功能
Mar 08 Javascript
vue-cli 3.x配置跨域代理的实现方法
Apr 12 Javascript
如何实现双向绑定mvvm的原理实现
May 28 Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
May 13 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 构造函数construct的前下划线是双的_
2009/12/08 PHP
用php制作简单分页(从数据库读取记录)的方法详解
2013/05/04 PHP
php加密解密实用类分享
2014/01/07 PHP
php查询mysql数据库并将结果保存到数组的方法
2015/03/18 PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
2017/05/04 PHP
JS操作XML中DTD介绍及使用方法分析
2019/07/04 PHP
JQuery的html(data)方法与&amp;lt;script&amp;gt;脚本块的解决方法
2010/03/09 Javascript
50个比较实用jQuery代码段
2011/09/18 Javascript
jquery下div 的resize事件示例代码
2014/03/09 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
2014/10/20 Javascript
jQuery中:disabled选择器用法实例
2015/01/04 Javascript
Jquery 实现图片轮换
2015/01/28 Javascript
初步使用Node连接Mysql数据库
2016/03/03 Javascript
jQuery中$.grep() 过滤函数 数组过滤
2016/11/22 Javascript
jquery学习笔记之无new构建详解
2017/12/07 jQuery
快速解决brew安装特定版本flow的问题
2018/05/17 Javascript
vue项目从node8.x升级到12.x后的问题解决
2019/10/25 Javascript
JavaScript onclick事件使用方法详解
2020/05/15 Javascript
[02:26]DOTA2英雄米拉娜基础教程
2013/11/25 DOTA
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
Python Learning 列表的更多操作及示例代码
2018/08/22 Python
详解pandas的外部数据导入与常用方法
2019/05/01 Python
python函数的作用域及关键字详解
2019/08/20 Python
Golang GBK转UTF-8的例子
2019/08/26 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
2020/06/04 Python
tensorflow与numpy的版本兼容性问题的解决
2021/01/08 Python
CSS3中:nth-child和:nth-of-type的区别深入理解
2014/03/10 HTML / CSS
英国排名第一的宠物店:PetPlanet
2020/02/02 全球购物
个人求职简历的自我评价范文
2013/10/09 职场文书
公司出纳岗位职责
2013/12/07 职场文书
退休教师欢送会主持词
2014/03/31 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
行政人事主管岗位职责
2015/04/11 职场文书
运动会新闻稿
2015/07/17 职场文书
mapstruct的用法之qualifiedByName示例详解
2022/04/06 Java/Android