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 相关文章推荐
fireworks菜单生成器mm_menu.js在 IE 7.0 显示问题的解决方法
Oct 20 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
Aug 28 Javascript
Jquery判断$(&quot;#id&quot;)获取的对象是否存在的方法
Sep 25 Javascript
iframe跨域通信封装详解
Aug 11 Javascript
jQuery实现带延迟效果的滑动菜单代码
Sep 02 Javascript
jQuery动态创建元素以及追加节点的实现方法
Oct 20 Javascript
AngularJS中如何使用echart插件示例详解
Oct 26 Javascript
Vue中img的src属性绑定与static文件夹实例
May 18 Javascript
基于jQuery Ajax实现下拉框无刷新联动
Dec 06 jQuery
详解Axios 如何取消已发送的请求
Oct 20 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
May 06 Javascript
JS 设计模式之:工厂模式定义与实现方法浅析
May 06 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 class中public,private,protected的区别以及实例分析
2013/06/18 PHP
thinkphp模板用法和内容输出实例
2014/11/28 PHP
win平台安装配置Nginx+php+mysql 环境
2016/01/12 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
PHP设计模式之单例模式原理与实现方法分析
2018/04/25 PHP
基于jquery创建的一个图片、视频缓冲的效果样式插件
2012/08/28 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
2013/03/19 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
2014/10/29 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
省市二级联动小案例讲解
2016/07/24 Javascript
基于vue.js实现侧边菜单栏
2017/03/20 Javascript
Angularjs中数据绑定的实例详解
2017/08/25 Javascript
解决v-for中使用v-if或者v-bind:class失效的问题
2018/09/25 Javascript
JavaScript实现的滚动公告特效【基于jQuery】
2019/07/10 jQuery
layerui代码控制tab选项卡,添加,关闭的实例
2019/09/04 Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
2019/09/07 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
2019/09/12 Javascript
JSON stringify方法原理及实例解析
2020/10/23 Javascript
python抓取豆瓣图片并自动保存示例学习
2014/01/10 Python
python迭代器与生成器详解
2016/03/10 Python
Python实现简单文本字符串处理的方法
2018/01/22 Python
浅谈Python中的zip()与*zip()函数详解
2018/02/24 Python
Django压缩静态文件的实现方法详析
2018/08/26 Python
代码实例讲解python3的编码问题
2019/07/08 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
2020/06/12 Python
PyTorch-GPU加速实例
2020/06/23 Python
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
PHP解析URL是哪个函数?怎么用?
2013/05/09 面试题
家长会演讲稿
2014/04/26 职场文书
警察群众路线对照检查材料思想汇报
2014/10/01 职场文书
2015年学习部工作总结范文
2015/03/31 职场文书
2016初一新生军训心得体会
2016/01/11 职场文书
原来实习报告是这样写的呀!
2019/07/03 职场文书
Python matplotlib 利用随机函数生成变化图形
2022/04/26 Python
详细介绍Next.js脚手架完整搭建封装
2022/04/26 Javascript
Windows Server 2012配置DNS服务器的方法
2022/04/29 Servers