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 相关文章推荐
JAVASCRIPT HashTable
Jan 22 Javascript
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
Feb 15 Javascript
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
Jan 22 Javascript
javascript showModalDialog 内跳转页面的问题
Nov 25 Javascript
jQuery操作 input type=checkbox的实现代码
Jun 14 Javascript
jQuery实现新消息在网页标题闪烁提示
Jun 23 Javascript
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
Jul 28 Javascript
解决vue2中使用axios http请求出现的问题
Mar 05 Javascript
jQuery实现的导航条点击后高亮显示功能示例
Mar 04 jQuery
原生JavaScript创建不可变对象的方法简单示例
May 07 Javascript
js实现简易ATM功能
Oct 27 Javascript
vue使用exif获取图片经纬度的示例代码
Dec 11 Vue.js
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
PHP OPCode缓存 APC详细介绍
2010/10/12 PHP
使用GD库生成带阴影文字的图片
2015/03/27 PHP
yii使用bootstrap分页样式的实例
2017/01/17 PHP
PHP判断密码强度的方法详解
2017/05/26 PHP
jquery实现文本框鼠标右击无效以及不能输入的代码
2010/11/05 Javascript
解决jquery异步按一定的时间间隔刷新问题
2012/12/10 Javascript
Javascript 浮点运算精度问题分析与解决
2014/03/26 Javascript
Node.js实现在目录中查找某个字符串及所在文件
2014/09/03 Javascript
angularjs基础教程
2014/12/25 Javascript
jquery简单的弹出层浮动层代码
2015/04/27 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
2016/03/13 Javascript
jQuery中使用animate自定义动画的方法
2016/05/29 Javascript
jQury Ajax使用Token验证身份实例代码
2017/09/22 Javascript
jQuery实现仿京东防抖动菜单效果示例
2018/07/06 jQuery
微信小程序云开发 搭建一个管理小程序
2019/05/17 Javascript
Vue的Options用法说明
2020/08/14 Javascript
Vant 中的Toast设置全局的延迟时间操作
2020/11/04 Javascript
[03:59]第二届DOTA2亚洲邀请赛选手传记-VGJ.rOtk
2017/04/03 DOTA
python smtplib模块发送SSL/TLS安全邮件实例
2015/04/08 Python
Python素数检测的方法
2015/05/11 Python
Python人脸识别初探
2017/12/21 Python
python通过elixir包操作mysql数据库实例代码
2018/01/31 Python
Django csrf 验证问题的实现
2018/10/09 Python
django 将model转换为字典的方法示例
2018/10/16 Python
python通过对字典的排序,对json字段进行排序的实例
2020/02/27 Python
CSS3 实现弹幕的示例代码
2017/08/07 HTML / CSS
德国知名健康零食网上商店:Seeberger
2017/07/27 全球购物
Speedo速比涛中国官方网站:全球领先泳装运动品牌
2018/04/24 全球购物
Tretorn美国官网:瑞典外套和鞋类品牌,抵御风雨
2018/07/19 全球购物
英国书籍、CD、DVD和游戏的第一道德零售商:Awesome Books
2020/02/22 全球购物
几道Web/Ajax的面试题
2016/11/05 面试题
公益广告标语
2014/06/19 职场文书
毕业生求职信范文
2014/06/29 职场文书
关于十八大的演讲稿
2014/09/15 职场文书
2019年公司卫生管理制度样本
2019/08/21 职场文书
Python Django项目和应用的创建详解
2021/11/27 Python