javascript 源到目标元素移动
来源:互联网 发布:挺进地牢修改数据 编辑:程序博客网 时间:2024/05/18 00:27
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function run(srcarray,des) {
if(!srcarray instanceof Array) srcarray = [srcarray];
var interval = 10;
var move_unit = 1;
var data = {gaps:[],min:0};
var move_end = false;
var recover = false;
var isrecover = true;
init();
var id = setInterval(function() {
for(var index=0;index<srcarray.length;index++) {
if(!recover) startMove(srcarray[index],des.data,index);
else startMove(srcarray[index],srcarray[index].data,index);
}
document.title = new Date().getTime();
if(move_end) {
move_end = false;
if(recover) clearInterval(id);
else if(isrecover) recover = true
else clearInterval(id);
}
},interval);
function init() {
des.x = parseInt(des.style.width);
des.y = parseInt(des.style.height);
des.t = parseInt(des.style.top);
des.l = parseInt(des.style.left);
des.data = {x:des.style.width,y:des.style.height,t:des.style.top,l:des.style.left};
for(var i=0;i<srcarray.length;i++) {
var src = srcarray[i]
src.x = parseInt(src.style.width);
src.y = parseInt(src.style.height);
src.t = parseInt(src.style.top);
src.l = parseInt(src.style.left);
src.data = {x:src.style.width,y:src.style.height,t:src.style.top,l:src.style.left};
var gap_x = {gap:src.x - des.x,rate:0};
var gap_y = {gap:src.y - des.y,rate:0};
var gap_t = {gap:src.t - des.t,rate:0};
var gao_l = {gap:src.l - des.l,rate:0};
data.gaps.push(gap_x);
data.gaps.push(gap_y);
data.gaps.push(gap_t);
data.gaps.push(gao_l);
}
var min = 1;
for(var index=0;index<data.gaps.length;index++) {
if(Math.abs(data.gaps[index].gap) == 0) continue;
if(min > Math.abs(data.gaps[index].gap)) {
min = Math.abs(data.gaps[index].gap);
data.min = index;
}
}
for(var index=0;index<data.gaps.length;index++) {
if(Math.abs(data.gaps[data.min].gap == 0)) {
move_end = true;
return ;
}
data.gaps[index].rate = data.gaps[index].gap*move_unit/Math.abs(data.gaps[data.min].gap);
}
}
function startMove(src,desData,index) {
if(src.style.width != desData.x) {
if(Math.abs(src.x - parseInt(desData.x)) <= Math.abs(data.gaps[0+index*4].rate)) {
src.style.width = desData.x;
if(data.min == 0+index*4) move_end = true;
}
else {
if(!recover) src.x -= data.gaps[0+index*4].rate;
else src.x +=data.gaps[0+index*4].rate;
src.style.width = src.x+"px";
}
}
if(src.style.height != desData.y) {
if(Math.abs(src.y - parseInt(desData.y)) <= Math.abs(data.gaps[1+index*4].rate)) {
src.style.height = desData.y;
if(data.min == 1+index*4) move_end = true;
}
else {
if(!recover) src.y -= data.gaps[1+index*4].rate;
else src.y += data.gaps[1+index*4].rate;
src.style.height = src.y+"px";
}
}
if(src.style.top != desData.t) {
if(Math.abs(src.t - parseInt(desData.t)) <= Math.abs(data.gaps[2+index*4].rate)) {
src.style.top = desData.t;
if(data.min == 2+index*4) move_end = true;
}
else {
if(!recover) src.t -= data.gaps[2+index*4].rate;
else src.t += data.gaps[2+index*4].rate;
src.style.top = src.t+"px";
}
}
if(src.style.left != desData.l) {
if(Math.abs(src.l - parseInt(desData.l)) <= Math.abs(data.gaps[3+index*4].rate)) {
src.style.left = desData.l;
if(data.min == 3+index*4) move_end = true;
}
else {
if(!recover) src.l -= data.gaps[3+index*4].rate;
else src.l += data.gaps[3+index*4].rate;
src.style.left = src.l+"px";
}
}
}
}
function onstart() {
var deso = document.getElementById('des');
var srco = document.getElementById('src');
var srco1 = document.getElementById('src1')
var srco2 = document.getElementById('src2')
var srco3 = document.getElementById('src3')
run([
srco,
srco1,
srco2,
srco3,
document.getElementById('src4'),
document.getElementById('src5'),
document.getElementById('src6'),
document.getElementById('src7'),
document.getElementById('src8'),
document.getElementById('src9'),
document.getElementById('src10')
],deso)
}
</script>
</head>
<body style="width:100%;height:100%;background-color:transparent;overflow:auto;">
<div id="src" style="width:200px;height:100px;position:absolute;left:10px;top:10px;border:1px solid gray"></div>
<div id="src1" style="width:160px;height:100px;position:absolute;left:800px;top:10px;border:1px solid gray"></div>
<div id="src2" style="width:300px;height:100px;position:absolute;left:250px;top:10px;border:1px solid gray"></div>
<div id="src3" style="width:100px;height:100px;position:absolute;left:630px;top:10px;border:1px solid gray"></div>
<div id="src4" style="width:200px;height:100px;position:absolute;left:10px;top:500px;border:1px solid gray"></div>
<div id="src5" style="width:160px;height:100px;position:absolute;left:800px;top:500px;border:1px solid gray"></div>
<div id="src6" style="width:300px;height:100px;position:absolute;left:250px;top:500px;border:1px solid gray"></div>
<div id="src7" style="width:100px;height:100px;position:absolute;left:630px;top:500px;border:1px solid gray"></div>
<div id="src8" style="width:120px;height:100px;position:absolute;left:50px;top:250px;border:1px solid gray"></div>
<div id="src9" style="width:100px;height:100px;position:absolute;left:830px;top:250px;border:1px solid gray"></div>
<div id="src10" style="width:400px;height:300px;position:absolute;left:300px;top:150px;border:1px solid gray"></div>
<div id="des" style="width:40px;height:20px;position:absolute;left:500px;top:300px;border:1px solid gray"></div>
<button onclick="onstart()" style="position:absolute;left:600px;">click</button>
</body>
</html>
- javascript 源到目标元素移动
- javascript实现把指定元素移动到第一位
- 使用 Selenium 将滚动条移动到目标元素位置的方法
- javascript实现元素的移动
- Unity 移动摄像机到目标位置
- 移动到目标点的方法
- Javascript 实现鼠标移动到html元素出现提示框 转
- 每天一个JavaScript实例-铺货鼠标点击位置并将元素移动到该位置
- (Javascript经典案例) -- 捕获鼠标点击位置并将元素移动到该位置
- JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
- JavaScript将指定的元素对象移动到固定的距离函数封装
- 用Javascript开发《三国志曹操传》-开源讲座(二)-让目标人物移动
- JS移动某些元素到指定位置
- HTML-鼠标移动到元素上时高亮文本
- 把方向转移到某个目标上 && 移动到该目标上面
- JavaScript事件代理:寻找target目标元素、求结点深度
- 塔防TDTK 敌人移动到目标转向
- 将upload上传文件的临时文件,移动到目标位置
- Jboss Seam的注解
- Qt Creator应用程序发布及修改应用程序图标的方法
- 转 -- 据说看完这22个故事的人 30岁前都成亿万富翁
- 软件版本号规范与命名原则
- Seam中使用selectItems and @Factory的三种方法
- javascript 源到目标元素移动
- Android实现ListView圆角效果
- java中的随机数Random
- 用mount挂载远程Windows共享文件夹进行文件拷贝的方法
- wince6.0+s3c6410摄像头驱动修改 (ov9650预览分辨率设置)
- 编码方式MultiByte(ASCII)与WideChar(UNICODE)的相互转化
- C# Socket 编程详解
- 用jQuery UI做简单九宫格拼图(2)
- 一点游戏管理晋升的心得