灵活使用数组制作图片切换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 Event学习第十章 一些可替换的事件对
Feb 10 Javascript
JS操作Cookie写入和读取实例代码
Oct 20 Javascript
jQuery扁平化风格下拉框美化插件FancySelect使用指南
Feb 10 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
Sep 22 Javascript
JavaScript实现点击按钮字体放大、缩小
Feb 29 Javascript
js获取元素的标签名实现方法
Oct 08 Javascript
微信小程序 实现tabs选项卡效果实例代码
Oct 31 Javascript
简单谈谈require模块化jquery和angular的问题
Jun 23 jQuery
jquery.onoff实现简单的开关按钮功能(推荐)
May 24 jQuery
vue使用监听实现全选反选功能
Jul 06 Javascript
Vue从TodoList中学父子组件通信
Feb 05 Javascript
webpack.DefinePlugin与cross-env区别详解
Feb 23 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读MYSQL中文乱码的解决方法
2006/12/17 PHP
PHP中仿制 ecshop验证码实例
2017/01/06 PHP
PHP实现会员账号单唯一登录的方法分析
2019/03/07 PHP
(jQuery,mootools,dojo)使用适合自己的编程别名命名
2010/09/14 Javascript
jquery实现marquee效果(文字或者图片的水平垂直滚动)
2013/01/07 Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
javascript查找字符串中出现最多的字符和次数的小例子
2013/10/29 Javascript
js中confirm实现执行操作前弹出确认框的方法
2014/11/01 Javascript
微信小程序 JS动态修改样式的实现代码
2017/02/10 Javascript
创建echart多个联动的示例代码
2018/11/23 Javascript
微信小程序如何获取用户头像和昵称
2019/09/23 Javascript
JS实现轮播图效果
2020/01/11 Javascript
python实现倒计时的示例
2014/02/14 Python
Python学习笔记之解析json的方法分析
2017/04/21 Python
sublime text 3配置使用python操作方法
2017/06/11 Python
python+opencv实现动态物体识别
2018/01/09 Python
python的Tqdm模块的使用
2018/01/10 Python
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
flask session组件的使用示例
2018/12/25 Python
对Python的多进程锁的使用方法详解
2019/02/18 Python
Python搭建代理IP池实现接口设置与整体调度
2019/10/27 Python
Python 从attribute到property详解
2020/03/05 Python
Python 字典一个键对应多个值的方法
2020/09/29 Python
Python内置函数及功能简介汇总
2020/10/13 Python
详解CSS的border边框属性及其在CSS3中的新特性
2016/05/10 HTML / CSS
苏格兰领先的多渠道鞋店:Begg Shoes
2019/10/22 全球购物
普天C++笔试题
2016/03/20 面试题
EJB的基本架构
2016/09/22 面试题
十佳教师事迹材料
2014/01/11 职场文书
高中考试作弊检讨书
2014/01/14 职场文书
公司成本主管岗位责任制
2014/02/21 职场文书
大学校务公开实施方案
2014/03/31 职场文书
基层干部个人对照检查及整改措施
2014/10/28 职场文书
自主招生自荐信怎么写
2015/03/24 职场文书
关爱留守儿童主题班会
2015/08/13 职场文书
Vue.js中v-bind指令的用法介绍
2022/03/13 Vue.js