vue 用户拖拽窗口大小_VUE实现Studio管理后台(一):鼠标拖放改变窗口大小

近期改版RXEditor,把改版过程,用到的技术点,记录下来。昨天完成了静态页面的制作,制作过程并未详细记录,后期已经不愿再补了,有些遗憾。不过工作成果完整保留在github上,地址:https://github.com/vularsoft/studio-ui

这个项目下面的html-demo.html,便是静态文件。

话不多说,今天就把昨天的HTML转化成VUE。

先看效果:

布局原理

页面采用纯弹性盒子flex box布局,无float postion等,页面分成如下几个区域:

细实线描述的是各个DIV之间的嵌套关系,粗黑线是独立的DIV,我称它们为把手(HADLE),主要用来接受鼠标拖动事件,以完成拖动操作。handle非为两种,横向x-handle,纵向y-handle,css中定义x-handle宽度为3px,高度为100%,y-handle高度为3px,宽度为100%,鼠标光标也相应设置一下:

.vular-studio .x-handle{width:3px;cursor:w-resize;z-index:10;

}.vular-studio .y-handle{height:3px;cursor:s-resize;z-index:10;

}

拖动原理

带有把手的区域固定大小(固定宽度或者高度),不带把手的部分跟随弹性盒子变化。把手handle是一个独立的VUE组件,它把拖动信息传递给父窗口,父窗口改变自身大小。以bottom-area为例,这是一个可以改变自身大小的DIV:

name:'BottomArea',

components:{

YHandle,

},

data () {return{

height:220,

}

},

methods: {

heightChange(movement){this.height +=movementif(this.height < 30){this.height = 30}if(this.height > 600){this.height = 600}

},

},

}

它对应的把手代码:

>

name:'YHandle',

data () {return{

lastY:''}

},

created () {

document.addEventListener('mouseup', this.mouseUp)

},

destroyed() {

document.removeEventListener('mouseup', this.mouseUp)

},

methods: {

mouseDown(event){

document.addEventListener('mousemove', this.mouseMove)this.lastY =event.screenY

},

mouseMove(event){

console.log('move')this.$emit('heightChange', this.lastY -event.screenY)this.lastY =event.screenY

},

mouseUp(event){this.lastY = ''document.removeEventListener('mousemove', this.mouseMove)

},

},

}

制作步骤

先建一个VUE项目:

1、安装node

2、安装webpack

3、安装VUE

4、新建VUE项目:vue init webpack-simple

5、根据相应布局制作VUE组件

具体代码,请参考:https://github.com/vularsoft/studio-ui,根据标注,获取相应的版本记录即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值