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 相关文章推荐
获取焦点时,利用js定时器设定时间执行动作
Apr 02 Javascript
20款效果非常棒的 jQuery 插件小结分享
Nov 18 Javascript
网页右键ie不支持event.preventDefault和event.returnValue (需要加window)
Feb 22 Javascript
Javascript基础教程之for循环
Jan 18 Javascript
Vue.js 表单校验插件
Aug 14 Javascript
对js中回调函数的一些看法
Aug 29 Javascript
vuex实现简易计数器
Oct 27 Javascript
JavaScript上传文件时不用刷新页面方法总结(推荐)
Aug 15 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
Jul 05 Javascript
原来JS还可以这样拆箱转换详解
Feb 01 Javascript
微信小程序实现人脸识别登陆的示例代码
Apr 02 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
Jun 04 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设计模式 FlyWeight (享元模式)
2011/06/26 PHP
基于PHP实现假装商品限时抢购繁忙的效果
2015/10/16 PHP
Yii2中DropDownList简单用法示例
2016/07/18 PHP
php简单压缩css样式示例
2016/09/22 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
JavaScript 学习 - 提高篇
2007/02/02 Javascript
JavaScript DOM 学习第七章 表单的扩展
2010/02/19 Javascript
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
2010/11/25 Javascript
javascript 弹出层组件(升级版)
2011/05/12 Javascript
javascript和HTML5利用canvas构建猜牌游戏实现算法
2013/07/17 Javascript
js中通过父级进行查找定位元素
2014/06/15 Javascript
js字符串完全替换函数分享
2014/12/03 Javascript
javascript获取当前鼠标坐标的方法
2015/01/10 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
深入探究AngularJS框架中Scope对象的超级教程
2016/01/04 Javascript
jQuery Easyui 验证两次密码输入是否相等
2016/05/13 Javascript
BootStrap 实现各种样式的进度条效果
2016/12/07 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
2017/03/02 Javascript
通过 JS 判断页面是否有滚动条的实现方法
2018/04/05 Javascript
vue 自定义 select内置组件
2018/04/10 Javascript
解决Vue中的生命周期beforeDestory不触发的问题
2020/07/21 Javascript
[53:36]Liquid vs VP Supermajor决赛 BO 第三场 6.10
2018/07/05 DOTA
深入理解python中的atexit模块
2017/03/07 Python
numpy中的高维数组转置实例
2018/04/17 Python
python 利用栈和队列模拟递归的过程
2018/05/29 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
在ipython notebook中使用argparse方式
2020/04/20 Python
python 实现关联规则算法Apriori的示例
2020/09/30 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
2020/11/20 Python
使用HTML5技术开发一个属于自己的超酷颜色选择器
2013/09/22 HTML / CSS
优秀大学生推荐信范文
2013/11/28 职场文书
2014年电话销售工作总结
2014/12/01 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
幽灵公主观后感
2015/06/09 职场文书
Python中文纠错的简单实现
2021/07/07 Python
ConditionalOnProperty配置swagger不生效问题及解决
2022/06/14 Java/Android