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 相关文章推荐
对之前写的jquery分页做下升级
Jun 19 Javascript
基于jquery实现发送文章到手机的代码
Dec 26 Javascript
使用console进行性能测试
Apr 27 Javascript
javascript实现模拟时钟的方法
May 13 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
Oct 24 Javascript
原生javascript上传图片带进度条【实例分享】
Apr 06 Javascript
es6在react中的应用代码解析
Nov 08 Javascript
JS实现字符串去重及数组去重的方法示例
Apr 21 Javascript
Koa 中的错误处理解析
Apr 09 Javascript
原生JS与JQ获取元素的区别详解
Feb 13 Javascript
easyUI使用分页过滤器对数据进行分页操作实例分析
Jun 01 Javascript
js实现淘宝浏览商品放大镜功能
Oct 28 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
PHP 中的一些经验积累
2006/10/09 PHP
怎样才能成为PHP高手?学会“懒惰”的编程
2006/12/05 PHP
js中匿名函数的N种写法
2010/09/08 Javascript
HTML颜色选择器实现代码
2010/11/23 Javascript
JavaScript中的View-Model使用介绍
2011/08/11 Javascript
js调用activeX获取u盘序列号的代码
2011/11/21 Javascript
JS中prototype关键字的功能介绍及使用示例
2013/07/21 Javascript
javascript实现动态模态绑定grid过程代码
2014/09/22 Javascript
JavaScript去除数组里重复值的方法
2015/07/13 Javascript
javascript自执行函数
2017/02/10 Javascript
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
2017/09/13 Javascript
Django与Vue语法的冲突问题完美解决方法
2017/12/14 Javascript
JS实现数组简单去重及数组根据对象中的元素去重操作示例
2018/01/05 Javascript
JS基础之逻辑结构与循环操作示例
2020/01/19 Javascript
javascript单张多张图无缝滚动实例代码
2020/05/10 Javascript
[01:15:00]LGD vs Mineski Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
Cython 三分钟入门教程
2009/09/17 Python
python三元运算符实现方法
2013/12/17 Python
Python中使用urllib2模块编写爬虫的简单上手示例
2016/01/20 Python
python清理子进程机制剖析
2017/11/23 Python
numpy 计算两个数组重复程度的方法
2018/11/07 Python
python 采用paramiko 远程执行命令及报错解决
2019/10/21 Python
pycharm显示远程图片的实现
2019/11/04 Python
PyCharm下载和安装详细步骤
2019/12/17 Python
翻转数列python实现,求前n项和,并能输出整个数列的案例
2020/05/03 Python
Python学习之路安装pycharm的教程详解
2020/06/17 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
2014年圣诞节倒计时网页的制作过程
2014/12/05 HTML / CSS
HTML5 Convas APIs方法详解
2015/04/24 HTML / CSS
全球知名的珠宝首饰品牌:Kay Jewelers
2018/02/11 全球购物
毕业生在校学习的自我评价分享
2013/10/08 职场文书
诚实守信演讲稿
2014/09/01 职场文书
综合素质自我评价怎么写
2014/09/14 职场文书
小学科学教学计划
2015/01/21 职场文书
2015年大学辅导员工作总结
2015/05/12 职场文书
Python字符串的转义字符
2022/04/07 Python