js实现兼容IE和FF的上下层的移动


Posted in Javascript onMay 04, 2015

这里给大家分享的是项目中的一个小需求,本来很简单,可是整了好久才把FF的兼容性搞定。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>仿265上下层的移动(上移,下移)支持IE、FF</title>
<style type="text/css">
/*<![CDATA[*/
ul{
width:400px
}
li{
border:1px solid gray;
list-style:none
}
.txt{
padding:4px;
background-color:#ffffff
}
/*]]>*/
</style>
<script language="javascript" type="text/javascript">
//<![CDATA
window.onload=function(){
ggGroup(document.getElementById('test'),5);
};
function ggGroup(ele,margin){
margin=margin||0;
var bgcolors='#b3d580,#99c9b1,#b4a1d8,#f7c480,#d5d588,#eea2bb'.split(',');
var txtUp='上移↑ ',txtDown='下移↓';
var panels=children(ele);
for(var i=0,h=0;i<panels.length;i++){
var p=panels[i];
p.style.position='absolute';
p.style.width='100%';
var b=document.createElement('div');
with(b.style){
fontSize='12px';
padding='4px';
backgroundColor=bgcolors[i%bgcolors.length];
textAlign='right';
}
b.innerHTML='<span>'+txtUp+'</span><span>'+txtDown+'</span>';
b.firstChild.onclick=moveup;
b.firstChild.style.cursor='pointer';
b.lastChild.onclick=movedown;
b.lastChild.style.cursor='pointer';
p.insertBefore(b,p.firstChild);
p.style.top=h+'px';
p.index=i;
h+=p.offsetHeight+margin;
}
ele.style.height=h+'px';
ele.style.position='relative'; 
check(0,i-1); 
function check(){
for(var i=0;i<arguments.length;i++){
var x=arguments[i];
var c=panels[x].firstChild.childNodes;
c[0].style.visibility=x==0?'hidden':'visible';
c[1].style.visibility=x==panels.length-1?'hidden':'visible';
panels[x].index=x;
}
}
function moveup(evt){
var p=evt?evt.target:event.srcElement;
p=p.parentNode.parentNode;
swap(p,panels[p.index-1]);
}
function movedown(evt){
var p=evt?evt.target:event.srcElement;
p=p.parentNode.parentNode;
swap(p,panels[p.index+1]);
}
function swap(p1,p2){
var N=10;
var INTV=200;
var arr1,arr2;
var t1=parseInt(p1.style.top),t2=parseInt(p2.style.top);
var h1=p1.offsetHeight+margin,h2=p2.offsetHeight+margin;
arr1=makeArr(t1,t1<t2?h2:-h2);
arr2=makeArr(t2,t1<t2?-h1:h1);
for(var i=0;i<N;i++)(function(){
var j=i;
setTimeout(function(){
p1.style.top=arr1[j]+"px";
p2.style.top=arr2[j]+"px";
if(j==N-1){
panels[p1.index]=p2;
panels[p2.index]=p1;
check(p1.index,p2.index);
}
},(j+1)*INTV/N);
})();
function makeArr(f,x){
var ret=[];
for(var i=0;i<N;i++)
ret[i]=Math.round(f+i*x/(N-1));
return ret;
}
}
function children(e){
var ret=[];
for(var i=0,c=e.childNodes;i<c.length;i++)
if(c[i].nodeType==1)
ret.push(c[i]);
return ret;
}
}
//]]>
</script>
</head>
<body>
<ul id="test">
<li> <div class="txt"><h2>Hello<br />baby</h2></div></li>
<li> <div class="txt">
显示内容1显示内容1显示内容1显示内容1
</div></li>
<li>
<div class="txt">
<i>人之初,性本善</i>
</div></li>
<li>
<div class="txt">
显示内容2<br />显示<br />...<br />显示内容2!
</div></li>
</ul>
</body>
</html>

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
YUI 读码日记之 YAHOO.util.Dom - Part.1
Mar 22 Javascript
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
Aug 14 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
Aug 31 Javascript
百度地图给map添加右键菜单(判断是否为marker)
Mar 04 Javascript
Javascript实现代码折叠功能
Aug 25 Javascript
Node.js的基本知识简单汇总
Sep 19 Javascript
vue2中filter()的实现代码
Jul 09 Javascript
利用require.js与angular搭建spa应用的方法实例
Jul 19 Javascript
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
Oct 24 Javascript
用js简单提供增删改查接口
May 12 Javascript
vue+element 模态框表格形式的可编辑表单实现
Jun 07 Javascript
5分钟快速看懂ES6中的反射与代理
Dec 19 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
May 03 #Javascript
jQuery实现的向下图文信息滚动效果
May 03 #Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
May 03 #Javascript
JQuery页面地址处理插件jqURL详解
May 03 #Javascript
jQuery的animate函数实现图文切换动画效果
May 03 #Javascript
php+ajax+jquery实现点击加载更多内容
May 03 #Javascript
jquery插件hiAlert实现网页对话框美化
May 03 #Javascript
You might like
用DBSQL类加快开发MySQL数据库程序的速度
2006/10/09 PHP
PHPMailer发送邮件
2016/12/28 PHP
JavaScript高级程序设计 读书笔记之八 Function类及闭包
2012/02/27 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(四)用地图块拼成大地图
2013/01/23 Javascript
javascript-简单的计算器实现步骤分解(附图)
2013/05/30 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
2013/08/19 Javascript
JavaScript包装对象使用介绍
2013/08/29 Javascript
Javascript 构造函数详解
2014/10/22 Javascript
node.js中的http.response.addTrailers方法使用说明
2014/12/14 Javascript
关于Vue.js一些问题和思考学习笔记(2)
2016/12/02 Javascript
ES6中的箭头函数实例详解
2017/04/06 Javascript
input file样式修改以及图片预览删除功能详细概括(推荐)
2017/08/17 Javascript
JS实现table表格固定表头且表头随横向滚动而滚动
2017/10/26 Javascript
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
python中numpy的矩阵、多维数组的用法
2018/02/05 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
Python实现合并excel表格的方法分析
2019/04/13 Python
python打印n位数“水仙花数”(实例代码)
2019/12/25 Python
Django 自定义404 500等错误页面的实现
2020/03/08 Python
python如何变换环境
2020/07/21 Python
Python 保存加载mat格式文件的示例代码
2020/08/04 Python
CSS中垂直居中的简单实现方法
2015/07/06 HTML / CSS
英国领先的体验日提供商:Buyagift
2019/04/19 全球购物
印度在线购买电子产品网站:Croma
2020/01/02 全球购物
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
大学生期末自我鉴定
2014/02/01 职场文书
黄河象教学反思
2014/02/10 职场文书
《纸船和风筝》教学反思
2014/02/15 职场文书
影子教师研修方案
2014/06/14 职场文书
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
某集团股份有限公司委托书样本
2014/09/24 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
优秀共产党员推荐材料
2014/12/18 职场文书
召开会议通知范文
2015/04/15 职场文书
2015年体育教师个人工作总结
2015/05/12 职场文书
通过T-SQL语句创建游标与实现数据库加解密功能
2022/03/16 SQL Server