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 相关文章推荐
跨浏览器的事件对象介绍
Jun 27 Javascript
查看图片(前进后退)功能实现js代码
Apr 24 Javascript
jquery 获取表单元素里面的值示例代码
Jul 28 Javascript
JQuery替换DOM节点的方法
Jun 11 Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
Jan 08 Javascript
Java框架SSH结合Easyui控件实现省市县三级联动示例解析
Jun 12 Javascript
超详细的JS弹出窗口代码大全
Apr 18 Javascript
深入浅出webpack之externals的使用
Dec 04 Javascript
vue 虚拟dom的patch源码分析
Mar 01 Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
May 04 Javascript
JavaScript canvas绘制圆弧与圆形
Feb 18 Javascript
从零开始在vue-cli4配置自适应vw布局的实现
Jun 08 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
在普通HTTP上安全地传输密码
2007/07/21 PHP
php微信开发之百度天气预报
2016/11/18 PHP
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
2010/12/06 Javascript
拥抱模块化的JavaScript
2012/03/07 Javascript
UI Events 用户界面事件
2012/06/27 Javascript
js 赋值包含单引号双引号问题的解决方法
2014/02/26 Javascript
jQuery中on()方法用法实例
2015/01/19 Javascript
jQuery制作简单柱状图实例
2015/01/28 Javascript
jquery通过load获取文件的内容并跳到锚点的方法
2015/01/29 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
Bootstrap modal使用及点击外部不消失的解决方法
2016/12/13 Javascript
详解nodejs 文本操作模块-fs模块(五)
2016/12/23 NodeJs
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
在vue中实现禁止回退上一步,路由不存历史记录
2020/07/22 Javascript
Python实现Tab自动补全和历史命令管理的方法
2015/03/12 Python
python嵌套函数使用外部函数变量的方法(Python2和Python3)
2016/01/31 Python
Python实现小数转化为百分数的格式化输出方法示例
2017/09/20 Python
Python实战购物车项目的实现参考
2019/02/20 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
2019/08/10 Python
python 矢量数据转栅格数据代码实例
2019/09/30 Python
Python中bisect的使用方法
2019/12/31 Python
美国批发零售网站:GearXS
2016/07/26 全球购物
Guess荷兰官网:美国服饰品牌
2020/01/22 全球购物
电气专业推荐信范文
2013/11/18 职场文书
文明礼仪事迹材料
2014/01/09 职场文书
生物制药自我鉴定
2014/01/25 职场文书
六一儿童节主持词
2014/03/21 职场文书
教师节倡议书
2014/08/30 职场文书
物流专业专科生职业生涯规划书
2014/09/14 职场文书
反对四风自我剖析材料
2014/10/07 职场文书
2015年体育教学工作总结
2015/05/20 职场文书
SQL 窗口函数实现高效分页查询的案例分析
2021/05/21 SQL Server
vscode中使用npm安装babel的方法
2021/08/02 Javascript