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 相关文章推荐
jQuery的slideToggle方法实例
May 07 Javascript
setInterval()和setTimeout()的用法和区别示例介绍
Nov 17 Javascript
如何使用AngularJs打造权限管理系统【简易型】
May 09 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
Jun 01 Javascript
微信小程序 UI布局常用技巧整理总结
Dec 05 Javascript
最常用的jQuery表单验证(简单)
May 23 jQuery
通过一个简单的例子学会vuex与模块化
Nov 22 Javascript
vue中引用swiper轮播插件的教程详解
Aug 16 Javascript
Vue使用watch监听一个对象中的属性的实现方法
May 10 Javascript
解决layer.prompt无效的问题
Sep 24 Javascript
微信小程序事件流原理解析
Nov 27 Javascript
vue使用video插件vue-video-player的示例
Oct 03 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 Http_Template_IT类库进行模板替换
2009/03/19 PHP
php操作excel文件 基于phpexcel
2010/07/02 PHP
应用开发中涉及到的css和php笔记分享
2011/08/02 PHP
php中获得视频时间总长度的另一种方法
2011/09/15 PHP
PHP 获取文件路径(灵活应用__FILE__)
2013/02/15 PHP
浅析php学习的路线图
2013/07/10 PHP
php不使用copy()函数复制文件的方法
2015/03/13 PHP
四个PHP非常实用的功能
2015/09/29 PHP
PHP中cookie知识点学习
2018/05/06 PHP
Laravel+Intervention实现上传图片功能示例
2019/07/09 PHP
用javascript实现页面打印的三种方法
2007/03/05 Javascript
网页图片延时加载的js代码
2010/04/22 Javascript
formvalidator验证插件中有关ajax验证问题
2013/01/04 Javascript
javaScript让文本框内的最后一个文字的后面获得焦点实现代码
2013/01/06 Javascript
跟我学Nodejs(二)--- Node.js事件模块
2014/05/21 NodeJs
js常用系统函数用法实例分析
2015/01/12 Javascript
分享9点个人认为比较重要的javascript 编程技巧
2015/04/27 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
JavaScript代码实现图片循环滚动效果
2020/03/19 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
2016/12/01 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
2017/04/21 Javascript
Python自动化构建工具scons使用入门笔记
2015/03/10 Python
python pygame模块编写飞机大战
2018/11/20 Python
python3使用matplotlib绘制条形图
2020/03/25 Python
pyinstaller参数介绍以及总结详解
2019/07/12 Python
简单介绍python封装的基本知识
2019/08/10 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
2020/03/20 Python
Python turtle库的画笔控制说明
2020/06/28 Python
Python 如何操作 SQLite 数据库
2020/08/17 Python
Python常用GUI框架原理解析汇总
2020/12/07 Python
竞选部长演讲稿
2014/04/26 职场文书
2015年宣传工作总结
2015/04/08 职场文书
学雷锋团日活动总结
2015/05/06 职场文书
死亡诗社观后感
2015/06/05 职场文书
运动会通讯稿300字
2015/07/20 职场文书