script.aculo.us限制可拖动
使用script.aculo.us框架创建新的Draggable对象很容易。您只需创建一个Draggable对象的新实例,并将其元素ID设为第一个参数即可拖动,而将一组选项设为第二个即可。
还原选项将使可拖动元素移回到其开始位置。可以使用逗号分隔来添加更多选项,因此要在元素上启用重影以及还原,请使用以下命令。
newDraggable('dragMe',{revert:true,ghosting:true});
重影意味着拖动元素时,该元素的幻影副本将随鼠标移动,原始对象将保留在原处,直到释放鼠标为止。
snap参数可用于将元素限制为父节点。Snap用于使元素在一定数量的块中移动而不是平滑移动,这是一个特殊的参数,因为它可以采用多种不同的格式。这些如下:
要关闭捕捉,请将值设置为false。
newDraggable('dragMe',{revert:true,ghosting:true,snap:false});
要为x和y设置相同的值,请使用单个参数。
newDraggable('dragMe',{revert:true,ghosting:true,snap:25});
要为x和y设置不同的值,请使用数组符号。
newDraggable('dragMe',{revert:true,ghosting:true,snap:[25,50]});
回调功能也可以用于设置您自己的捕捉行为。您可以在此处设置约束,以使可拖动元素不会离开其父元素的区域。
new Draggable('dragMe',{revert:true,ghosting:true,snap: function(x,y,draggable) { function constrain(n, lower, upper) { if (n > upper) return upper; else if (n < lower) return lower; else return n-(n%10); } element_dimensions = Element.getDimensions(draggable.element); parent_dimensions = Element.getDimensions(draggable.element.parentNode); return[ constrain(x, 0, parent_dimensions.width - element_dimensions.width), constrain(y, 0, parent_dimensions.height - element_dimensions.height)]; } });
当可拖动元素在父元素的边缘上方移动时,捕捉值将设置为父元素的上限或下限(取决于要拖动的元素的位置)。否则,将使用当前位置,这意味着它会捕捉到鼠标所在的位置。
每次在拖动指定元素时检测到鼠标移动事件时,都会调用此函数,因此,如果要调试代码,请在添加任何警报语句时务必小心。