简介
很多控件需要进行定位,显示在页面的具体位置上,或者显示在于其他DOM对齐的位置(上下左右)上,这是控件拥有的特性,是典型的 Has-A关系,所以我们将其实现成2个扩展:
- Position: 控件位置相关的扩展
- Align:控件跟其他元素对齐的扩展
位置
控件在页面上的位置是指控件相对于页面坐标(0,0)的位置,我们用(x,y)来标示:
我们这里用offset来标示DOM节点在页面上的相对位置,jQuery中 $().offset()既可以求出,具体计算offset 的算法这里就不介绍了。
- offset.left 控件的 x 坐标
- offset.top 控件的 y 坐标
计算和设置控件的位置比较简单需要的属性和方法也简单:
属性(包括setter 和 getter)有:
- x : 控件的 x 坐标
- y : 控件的 y 坐标
- xy : 控件的 xy 坐标
方法:
- moveTo : 移动到某一点
对齐
对齐是基于位置的的一个扩展,我们首先来看一下控件的本身的一些位置点:
- tl: 控件的顶部,左边
- tc: 控件的顶部,中间
- tr: 控件的顶部,右边
- cl: 控件的中间,左边
- cc: 控件的中间,中间
- cr: 控件的中间,右边
- bl: 控件的底部,左边
- bc: 控件的底部,中间
- br: 控件的底部,右边
所以当我们定义一个对齐时,如a 元素与 b元素的(左边,顶部)对齐我们可以用[tl,tl]来标示:
我们可以用上面的9个点两两组合,来实现各种对齐。
在使用对齐时,有时候我们还需要指定一下位置的偏移,如下:
这时候我们可以发现定义对齐需要指定一下属性:
- node : 对齐的节点
- points : 对齐方式,例如[tl,tl]
- offset : 偏移量,例如[10,10]
提供的方法:
align(node,points,offset): 对齐
center(node): 居中,即[cc,cc]的对齐方式
实现