只讨论两种情况
一、大小相等元素的拖拽,类似与iphone的图标拖拽
其拖拽策略可以用如下规则模拟
假设拖拽元素中心点(也可以用鼠标)为p
1.拖拽元素与目标元素在同行情况下:p进入目标元素内,根据移动方向插入元素
2.非同行情况下:p进入目标元素margin后,p的行号大于目标元素行号,插入到目标元素前面,否则插入到元素后面
3.如果以上两条规则都不满足,并且p在父容器内,则插入到父容器末尾
关于第二条规则的说明:
由于这种布局所有元素只有一个父容器,并且这些元素在父容器内是float:left浮起来的,所以插入顺序要这样
二、没有元素在同一行的情况,即Portal Drag
实际上上面的拖拽规则2,3就可以适用这个
只不过上面的情况,只有一个父容器,而Portal Drag有若干个父容器(根据列数决定)
其实还有其它很多策略,比如点在元素内,元素交与元素,点距离最近的元素,等。。。
关于如何封装实现,以后在写^^