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的设计模式
Nov 22 Javascript
改善你的jQuery的25个步骤 千倍级效率提升
Feb 11 Javascript
THREE.JS入门教程(5)你应当知道的十件事
Jan 24 Javascript
javascript操作html控件实例(javascript添加html)
Dec 02 Javascript
JavaScript截取、切割字符串的技巧
Jan 07 Javascript
jquery ztree实现树的搜索功能
Feb 25 Javascript
jQuery手指滑动轮播效果
Dec 22 Javascript
node+vue实现用户注册和头像上传的实例代码
Jul 20 Javascript
微信小程序之滚动视图容器的实现方法
Sep 26 Javascript
vue 基于element-ui 分页组件封装的实例代码
Dec 10 Javascript
JavaScript封闭函数及常用内置对象示例
May 13 Javascript
vue+ESLint 配置保存 自动格式化代码
Mar 17 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
历史证明,懒惰才是推动科学发展技术进步的动力
2021/03/02 无线电
phpMyAdmin 安装配置方法和问题解决
2009/06/08 PHP
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
2014/07/11 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
2016/09/22 PHP
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
2010/12/06 Javascript
解析Jquery取得iframe中元素的几种方法
2013/07/04 Javascript
页面图片浮动左右滑动效果的简单实现案例
2014/02/10 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
jQuery实现的漂亮表单效果代码
2015/08/18 Javascript
AngularJs 60分钟入门基础教程
2016/04/03 Javascript
第六篇Bootstrap表格样式介绍
2016/06/21 Javascript
angularjs ocLazyLoad分步加载js文件实例
2017/01/17 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
vue 项目如何引入微信sdk接口的方法
2017/12/18 Javascript
AngularJS实现的base64编码与解码功能示例
2018/05/17 Javascript
vue如何搭建多页面多系统应用
2020/06/17 Javascript
vue使用video插件vue-video-player的示例
2020/10/03 Javascript
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
在Django的视图中使用form对象的方法
2015/07/18 Python
python基于twisted框架编写简单聊天室
2018/01/02 Python
Keras: model实现固定部分layer,训练部分layer操作
2020/06/28 Python
波兰购物网站:MALL.PL
2019/05/01 全球购物
德国足球商店:OUTFITTER
2019/05/06 全球购物
Made in Design英国:设计家具、照明、家庭装饰和花园家具
2019/09/24 全球购物
Simons官方网站:加拿大时尚零售商
2020/02/20 全球购物
国外的一些J2EE面试题一
2012/10/13 面试题
房屋转让协议书
2014/04/11 职场文书
爱国主义教育活动总结
2014/05/07 职场文书
保护黄河倡议书
2014/05/16 职场文书
中学生关于梦想的演讲稿
2014/08/22 职场文书
一份文言文检讨书
2014/09/13 职场文书
整改落实自查报告
2014/11/05 职场文书
给客户的感谢信
2015/01/21 职场文书
2015年社区矫正工作总结
2015/04/21 职场文书
写自招自荐信的绝招!
2019/04/19 职场文书