js实现交换运动效果的方法


Posted in Javascript onApril 10, 2015

本文实例讲述了js实现交换运动效果的方法。分享给大家供大家参考。具体分析如下:

实现后的效果,点击互相交换位置和距离左边和上角的信息。

要点一:

var now = s_pic_li[0];
for(var i=0; i<s_pic_li.length; i++){
s_pic_li[i].onclick = function(){
if(this == now) return false;
var w = now.offsetWidth;
var h = now.offsetHeight;
var l = now.offsetLeft;
var t = now.offsetTop;
var w1= this.offsetWidth;
var h1 = this.offsetHeight;
var l1 = this.offsetLeft;
var t1 = this.offsetTop;
startrun(now,{width:w1,height:h1,left:l1,top:t1});
startrun(this,{width:w,height:h,left:l,top:t});
now=this;
}
}

循环给每一块加点击事件,获取交换双方的信息,然后执行运动函数,相关信息做为参数。

最后,上代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="gb2312" />
<title>无标题文档</title>
<style>
<!--
body,ul,li{margin:0; padding:0;
font:18px/1.5 arial; color:#333;}
#big_pic{width:500px; height:400px;
background:#ccc; text-align:center;
position:absolute;}
#s_pic li{float:left; width:100px;
height:80px; display:inline;
background:#06c; text-align:center;
position:absolute; top:310px;}
-->
</style>
<script>
<!--
window.onload = function(){
 var s_pic = document.getElementById("s_pic");
 var s_pic_li = s_pic.getElementsByTagName("li");
 var now = s_pic_li[0];
 for(var i=0; i<s_pic_li.length; i++){
  s_pic_li[i].onclick = function(){
   if(this == now) return false;
   var w = now.offsetWidth;
   var h = now.offsetHeight;
   var l = now.offsetLeft;
   var t = now.offsetTop;
   var w1= this.offsetWidth;
   var h1 = this.offsetHeight;
   var l1 = this.offsetLeft;
   var t1 = this.offsetTop;
   startrun(now,{width:w1,height:h1,left:l1,top:t1});
   startrun(this,{width:w,height:h,left:l,top:t});
   now=this;
  }
 }
}
function getstyle(obj,name){
 if(obj.currentStyle){
  return obj.currentStyle[name];
 }else{
  return getComputedStyle(obj,false)[name];
 }
}
function startrun(obj,json,fn){
 clearInterval(obj.timer);
 obj.timer = setInterval(function(){
  var isall = true; 
  for(var attr in json){
   var cur=0;
   if(attr == "opacity"){
    cur = Math.round(parseFloat(getstyle(obj,attr))*100);
   }else{
    cur = parseInt(getstyle(obj,attr));
   }
   var speed = (json[attr] - cur)/8
   speed = speed>0?Math.ceil(speed):Math.floor(speed);
   if(cur != json[attr]){
    isall = false;
   }
   if(attr == "opacity"){
    obj.style.filter = "alpha(opacity="+(cur+speed)+")";
    obj.style.opacity = (cur+speed)/100;
   }else{
    obj.style[attr] = cur+speed+"px";
   }
  }
  if(isall){
   clearInterval(obj.timer);
   if(fn){
    fn();
   }
  }
 },30);
}
//-->
</script>
</head>
<body>
<ul id="s_pic">
 <li style="left:0; top:0; width:400px; height:300px">0</div>
 <li style="left:0;">1</li>
 <li style="left:110px;">2</li>
 <li style="left:220px;">3</li>
 <li style="left:330px;">4</li>
</ul>
</body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript使用过程中需要注意的地方和一些基本语法
Aug 26 Javascript
自用js开发框架小成 学习js的朋友可以看看
Nov 16 Javascript
动态创建script标签实现跨域资源访问的方法介绍
Feb 28 Javascript
jquery中change()用法实例分析
Feb 06 Javascript
Node.js的Web模板引擎ejs的入门使用教程
Jun 06 Javascript
jquery html5 视频播放控制代码
Nov 06 Javascript
超全面的JavaScript开发规范(推荐)
Jan 21 Javascript
vue.js项目打包上线的图文教程
Nov 16 Javascript
Vue 通过公共字段,拼接两个对象数组的实例
Nov 07 Javascript
深入理解Antd-Select组件的用法
Feb 25 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
Jul 13 Javascript
JavaScript代码实现简单计算器
Dec 27 Javascript
js实现简单的左右两边固定广告效果实例
Apr 10 #Javascript
javascript实现简单的鼠标拖动效果实例
Apr 10 #Javascript
js简单实现点击左右运动的方法
Apr 10 #Javascript
js实现透明度渐变效果的方法
Apr 10 #Javascript
js实现同一页面多个运动效果的方法
Apr 10 #Javascript
js实现同一个页面多个渐变效果的方法
Apr 10 #Javascript
js实现缓冲运动效果的方法
Apr 10 #Javascript
You might like
Cakephp 执行主要流程
2010/03/24 PHP
PHP使用静态方法的几个注意事项
2014/09/16 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
thinkPHP的表达式查询用法详解
2016/09/14 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
在视频前插入广告
2006/11/20 Javascript
细品javascript 寻址,闭包,对象模型和相关问题
2009/04/27 Javascript
Jquery实现鼠标移上弹出提示框、移出消失思路及代码
2013/05/19 Javascript
原生JS实现加入收藏夹的代码
2013/10/24 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
JavaScript验证图片类型(扩展名)的函数分享
2014/05/05 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
2016/12/20 Javascript
jquery-file-upload 文件上传带进度条效果
2017/11/21 jQuery
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
2017/12/19 Javascript
webpack实用小功能介绍
2018/01/02 Javascript
详解Koa中更方便简单发送响应的方式
2018/07/20 Javascript
jquery使用FormData实现异步上传文件
2018/10/25 jQuery
Vue中函数防抖节流的理解及应用实现
2020/04/24 Javascript
vue 判断页面是首次进入还是再次刷新的实例
2020/11/05 Javascript
Python生成密码库功能示例
2017/05/23 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
2018/04/22 Python
对python判断是否回文数的实例详解
2019/02/08 Python
opencv与numpy的图像基本操作
2019/03/08 Python
python实现多线程端口扫描
2019/08/31 Python
pycharm显示远程图片的实现
2019/11/04 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
2020/04/26 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
自我鉴定思想方面
2013/10/07 职场文书
移动通信专业自荐信范文
2013/11/12 职场文书
元宵节主持词
2014/03/25 职场文书
荷叶母亲教学反思
2014/04/30 职场文书
2014年感恩节活动策划方案
2014/10/06 职场文书
2014年度思想工作总结
2014/11/27 职场文书
2015年药店工作总结
2015/04/20 职场文书
logback如何自定义日志存储
2021/08/30 Java/Android