Google首页的模块拖动。http://www.google.com.hk/
QWrap的模块拖动。http://dev.qwrap.com/resource/js/wagang/drag/_examples/LayoutDrag.html

以上两个页面都是模块拖动。分析一下它们的几个细节差别。

1.拖动的是什么:“拖实体,用代理定位(google)” VS “拖代理,用实体定位(qwrap)”
----google的做法是:鼠标拖动的是实体,而占位的是代理。
====qwrap的做法是:鼠标拖动的是代理,而占位的是实体。
----拖动实体的好处是:暂时没想明白。。。
====拖动代理的好处是:实现简单、效率好、可以拖动任意实体,例如表格行,甚至表格列。
====另外,觉得拖代理还有一个好处,可以很自然的添加一些平滑效果。例如示例里的动画。
我们可以看一下windows xp拖动窗体的效果,默认拖动的是代理,与QWrap的方式一致。好像有的操作系统,也可以设置成拖动实体。


2. 调整位置的判断依据:“临时方框中心(google)” VS “鼠标点(qwrap)”
----google的做法:看临时方框的中心位置来决定新位置。
====qwrap的做法:以鼠标点与鼠标移动方向来决定新位置。
----如果拖动的是小块,参考位置是大块,google的拖动范成本大(鼠标要移到大块当中才能换位置),而QWrap的拖动成本小(鼠标一碰触到大块,就换位置)。
====如果拖动的是大块,参考位置是小块,google的拖动范成本小。
我们可以看一下与windows下的“缩略图”状态下的文件内的拖动策略,多了个定位卡,另外,是以鼠标点来作定位依据。与qwrap的方式一致。

其实,这些都是事后比较的。
当时做的时候,纯粹以开发者的出发点来决定:用拖代理、用鼠标定位的话,代码简单思路清晰。
后来发现,原来竟然与windows的风格不谋而合了。。。。

更多qwrap组件:参见:
http://dev.qwrap.com/resource/js/wagang/_index.html

作者: JKisJK 发表于 2011-02-28 18:43 原文链接

推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架
新浪微博粉丝精灵,刷粉丝、刷评论、刷转发、企业商家微博营销必备工具"