简易而又灵活的Javascript拖拽框架(三)
2010-09-14 13:24:20 来源:WEB开发网核心提示:本文示例源代码或素材下载 一、开篇这是这个拖拽系列的第三篇了,第一篇简单的介绍了一下这个拖拽框架,简易而又灵活的Javascript拖拽框架(三),第二篇用这个框架做了一个Tab标签的拖放,这次用这个拖拽框架做一个更复杂一点的效果——跨列拖放,比较的对象是本列的所有对象(注意,遍历的时候
本文示例源代码或素材下载
一、开篇
这是这个拖拽系列的第三篇了,第一篇简单的介绍了一下这个拖拽框架,第二篇用这个框架做了一个Tab标签的拖放。这次用这个拖拽框架做一个更复杂一点的效果——跨列拖放。就像iGoogle和netvibes的个性页面布局那样。
二、原理
框架在第一篇做了介绍,这里直接使用。
首先要找到每个可以拖动的item,对于每个拖动的item,对其注册组件Drag.init(handle,dragBody);并且要把这个对象所在的列赋值给这个对象
还是分三个步骤说这个拖放的过程
1、鼠标拖动开始的时候,除了要将dragGhost放到当前被拖动的对象原来的位置上,还要记录每一列的左边距,当然还是要设置被拖动对象的position
2、鼠标拖动的过程中
先找到拖动对象是在哪一列,通过现在拖动对象的位置和在拖动开始时记录的列的左边距相比较,得出当前拖动对象在哪一列。
如果在原来那一列上,则不用管了,如果在别的列上,则将dragGhost插入到这个新的列中去(用column.appendChild插入到最后)。无论是本来就在这一列的元素还是从别的列拖过来的元素,都得让拖动对象与他所在的列的每一个元素的纵坐标相比较,得出应该在这一列的什么位置,将dragGhost插入(用column.insertBefore)。至于怎么找到拖动元素应该放在这一列的什么位置,这个原理和上边找列的原理差不多,只是比较的是纵坐标的值,比较的对象是本列的所有对象(注意,遍历的时候一定要排除dragGhost和本身,要不然在本列不能向下拖动)。
Tags:简易 灵活 Javascript
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接