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 相关文章推荐
Asp.net下使用Jquery Ajax传送和接收DataTable的代码
Sep 12 Javascript
javascript复制对象使用说明
Jun 28 Javascript
通过Javascript将数据导出到外部Excel文档的函数代码
Jun 15 Javascript
探索Emberjs制作一个简单的Todo应用
Nov 07 Javascript
js setTimeout()函数介绍及应用以倒计时为例
Dec 12 Javascript
JS验证邮件地址格式方法小结
Dec 01 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
Mar 07 Javascript
JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
Jun 17 Javascript
Vue resource中的GET与POST请求的实例代码
Jul 21 Javascript
AngularJs 终极购物车(实例讲解)
Nov 08 Javascript
javascript实现考勤日历功能
Nov 29 Javascript
原生js+css实现tab切换功能
Sep 17 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下将多个数组合并成一个数组的方法与实例代码
2011/02/03 PHP
php实现根据url自动生成缩略图的方法
2014/09/23 PHP
PHP与jquery实时显示网站在线人数实例详解
2016/12/02 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
一些常用的Javascript函数
2006/12/22 Javascript
为指定元素增加样式的js代码
2009/12/09 Javascript
js下用层来实现select的title提示属性
2010/02/23 Javascript
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
2012/02/03 Javascript
javascript 获取模态窗口的滚动位置代码
2013/08/06 Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
2013/11/28 Javascript
JS获取网页图片name属性的方法
2015/04/01 Javascript
jQuery按需加载轮播图(web前端性能优化)
2017/02/17 Javascript
package.json文件配置详解
2017/06/15 Javascript
jQuery实现的监听导航滚动置顶状态功能示例
2018/07/23 jQuery
vue 使用自定义指令实现表单校验的方法
2018/08/28 Javascript
node中使用es6/7/8(支持性与性能)
2019/03/28 Javascript
微信小程序Flex布局用法深入浅出分析
2019/04/25 Javascript
原生js实现点击轮播切换图片
2020/02/11 Javascript
微信小程序接入vant Weapp组件的详细步骤
2020/10/28 Javascript
python选择排序算法的实现代码
2013/11/21 Python
深入理解 Python 中的多线程 新手必看
2016/11/20 Python
详解Python文本操作相关模块
2017/06/22 Python
Python基础之文件读取的讲解
2019/02/16 Python
Python 2/3下处理cjk编码的zip文件的方法
2019/04/26 Python
Python 多个图同时在不同窗口显示的实现方法
2019/07/07 Python
Python基于DB-API操作MySQL数据库过程解析
2020/04/23 Python
加拿大租车网站:Enterprise Rent-A-Car
2018/07/26 全球购物
旅游管理实习自我鉴定
2013/09/29 职场文书
信息与计算科学专业推荐信
2014/02/23 职场文书
寄语学生的话
2014/04/10 职场文书
小学体育教学随笔
2015/08/14 职场文书
公务员廉洁从政心得体会
2016/01/19 职场文书
2020年元旦晚会策划书模板
2019/12/30 职场文书
用CSS3画一个爱心
2021/04/27 HTML / CSS