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中将多个语句写成一个语句的两种方法小结
Dec 08 Javascript
javascript 读取XML数据,在页面中展现、编辑、保存的实现
Oct 27 Javascript
JavaScript的类型简单说明
Sep 03 Javascript
JQUBAR1.1 jQuery 柱状图插件发布
Nov 28 Javascript
文本框输入时 实现自动提示(像百度、google一样)
Apr 05 Javascript
javascript parseInt() 函数的进制转换注意细节
Jan 08 Javascript
jQuery统计上传文件大小的方法
Jan 24 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
Aug 28 Javascript
使用vue制作FullPage页面滚动效果
Aug 21 Javascript
DatePickerDialog 自定义样式及使用全解
Jul 09 Javascript
webpack 处理CSS资源的实现
Sep 27 Javascript
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
Feb 21 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操作MongoDB的技术总结
2013/06/02 PHP
PHP-Fcgi下PHP的执行时间设置方法
2013/08/02 PHP
Mootools 1.2教程 定时器和哈希简介
2009/09/15 Javascript
js 鼠标拖动对象 可让任何div实现拖动效果
2009/11/09 Javascript
js实现单一html页面两套css切换代码
2013/04/11 Javascript
jquery实现的一个文章自定义分段显示功能
2014/05/23 Javascript
jQuery焦点图轮播效果实现方法
2016/12/19 Javascript
Angularjs cookie 操作实例详解
2017/09/27 Javascript
浅谈react-router HashRouter和BrowserRouter的使用
2017/12/29 Javascript
webpack多入口多出口的实现方法
2018/08/17 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
微信小程序实现日历功能
2018/11/27 Javascript
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
three.js 利用uv和ThreeBSP制作一个快递柜功能
2020/08/18 Javascript
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
Python2.7读取PDF文件的方法示例
2017/07/13 Python
Python3实现简单可学习的手写体识别(实例讲解)
2017/10/21 Python
python OpenCV学习笔记实现二维直方图
2018/02/08 Python
Django 实现前端图片压缩功能的方法
2019/08/07 Python
pytorch常见的Tensor类型详解
2020/01/15 Python
Python random模块的使用示例
2020/10/10 Python
HTML5实现无刷新修改URL的方法
2019/11/14 HTML / CSS
video实现有声音自动播放的实现方法
2020/05/20 HTML / CSS
德国在线香料制造商:Gewürzland
2020/03/10 全球购物
C#可否对内存进行直接的操作
2015/02/26 面试题
人事专员岗位职责
2013/11/20 职场文书
初中生旷课检讨书范文
2014/10/06 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
公共场所卫生管理制度
2015/08/05 职场文书
求职自我评价参考范文
2019/05/16 职场文书
决心书格式及范文
2019/06/24 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书
基于Java的MathML转图片的方法(示例代码)
2021/06/23 Java/Android
pytorch中的 .view()函数的用法介绍
2022/03/17 Python