实现了可以拖动div的组件后,就联想到拖动可以改变div大小的需求。话不多说,先看看效果,再慢慢分析。所以可以改变大小的div分量分析给目标div增加四周的边框,并且在边框的八个方
实现了可以拖动div的组件后,就联想到拖动可以改变div大小的需求。话不多说,先看看效果,再慢慢分析。
所以可以改变大小的div
分量分析给目标div增加四周的边框,并且在边框的八个方向增加拖拽点,分别用方向的首字母组合代替当鼠标落在八个点上时,鼠标形状变成向各个方向拖拽的形状当鼠标按下并拖拽时,计算div新的位置和大小,并改变div
逻辑相当简单。我们将逐步实施
向目标div添加边框。增加边框的逻辑很简单,就是增加一个比目标div大点的div,然后设置边框。代码如下
添加边框的逻辑很简单,就是添加一个比目标div大的div,然后设置边框。代码如下所示
生成边框的逻辑
向目标div添加一个拖动点。对于八个点的信息,我定义了个对象数组分表代表,比如,东面的点我这样表示
对于八个点的信息,我定义了一个对象数组表表示,例如东点。我就这么说吧。
东方
Class: e用来标记这个点的方位为东、右、上、transform用来定位点的具体位置,cursor用来设置光标形状(每个方向的光标都不一样)。其他定向和这个差不多,文末会附上一个代码。
然后遍历这八个对象,分别生成点,并增加鼠标事件监听
然后遍历这八个对象,分别生成点,增加鼠标事件监控。
生成点的逻辑
这八个点的拖动处理逻辑有所不同,所以单独写了个函数,函数返回每个方向的处理函数,函数名称和点的class一样,这样就可以直接根据class获取到处理函数,并添加到鼠标监听事件中。这个函数这样定义的:
这八个点的拖动处理逻辑不一样,所以单独写一个函数,返回每个方向的处理函数。函数名称与点的类相同,这样就可以直接根据类获取处理函数,并添加到鼠标监控事件中。这个函数是这样定义的:
拖动功能对象
将生成的边框和点绑定到目标div。而下一步就简单了,直接添加到目标div中即可(因为生成的位置都是绝对的,所以不会影响到目标div内部)。
整个组件的结构如下,内容有点多就不贴代码了,感兴趣的可以私信我。
整个组件的结构如下。如果内容有点多,我就不贴代码了。有兴趣的可以私信我。
组件结构
比较好用,跟以前一样。