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 相关文章推荐
js获取鼠标点击的位置实现思路及代码
May 09 Javascript
jquery中 $.expr使用实例介绍
Jun 09 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
Mar 14 Javascript
javascript闭包的理解
Apr 01 Javascript
JavaScript实现数字数组按照倒序排列的方法
Apr 06 Javascript
详解JavaScript编程中正则表达式的使用
Oct 25 Javascript
JavaScript函数的一些注意要点小结及js匿名函数
Nov 10 Javascript
利用VUE框架,实现列表分页功能示例代码
Jan 12 Javascript
AngularJS 文件上传控件 ng-file-upload详解
Jan 13 Javascript
three.js实现3D影院的原理的代码分析
Dec 18 Javascript
彻底揭秘keep-alive原理(小结)
May 05 Javascript
js正则匹配多个全部数据问题
Dec 20 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
php 无限级数据JSON格式及JS解析
2010/07/17 PHP
php jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
php实现二叉树中和为某一值的路径方法
2018/10/14 PHP
laravel 解决crontab不执行的问题
2019/10/22 PHP
PHP大文件及断点续传下载实现代码
2020/08/18 PHP
Javascript客户端将指定区域导出到Word、Excel的代码
2008/10/22 Javascript
ajax 文件上传应用简单实现
2009/03/03 Javascript
javascript修改IMG标签的src问题
2014/03/28 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
JS 面向对象之继承---多种组合继承详解
2016/07/10 Javascript
浅谈jQuery添加的HTML,JS失效的问题
2016/10/05 Javascript
js实现的xml对象转json功能示例
2016/12/24 Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
2017/04/13 Javascript
layui select动态添加option的实例
2018/03/07 Javascript
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
详解React之key的使用和实践
2018/09/29 Javascript
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
详解JavaScript修改注册表的方法
2020/01/05 Javascript
ES6箭头函数和扩展实例分析
2020/05/23 Javascript
python字符串替换示例
2014/04/24 Python
Python爬虫beautifulsoup4常用的解析方法总结
2019/02/25 Python
Python叠加矩形框图层2种方法及效果
2020/06/18 Python
简单掌握CSS3将文字描边及填充文字颜色的方法
2016/03/07 HTML / CSS
时尚孕妇装:HATCH Collection
2019/09/24 全球购物
学前教育专业毕业生自荐信
2013/10/03 职场文书
领导视察欢迎词
2014/01/15 职场文书
2014年社会实践活动总结范文
2014/04/29 职场文书
防火标语大全
2014/10/06 职场文书
涉及车辆房产分割的离婚协议书范文
2014/10/12 职场文书
机关职员工作检讨书
2014/10/23 职场文书
小学生差生评语
2014/12/29 职场文书
家长会欢迎词
2015/01/23 职场文书
幼儿园托班开学寄语(2016春季)
2015/12/03 职场文书
2016年优秀教师先进事迹材料
2016/02/26 职场文书
人民币使用说明书
2019/04/17 职场文书