VUE实现Studio管理后台之鼠标拖放改变窗口大小


Posted in Javascript onMarch 04, 2020

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

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

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

先看效果:

VUE实现Studio管理后台之鼠标拖放改变窗口大小

布局原理

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

VUE实现Studio管理后台之鼠标拖放改变窗口大小

细实线描述的是各个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:

<template>
 <div class="bottom-area" :style="{height:height + 'px'}">
 <YHandle @heightChange="heightChange"></YHandle>
 <div class="bottom-inner">
  <slot></slot>
 </div>
 </div>
</template>

<script>
import YHandle from './YHandle.vue'
export default {
 name: 'BottomArea',
 components:{
 YHandle,
 },
 data () {
 return {
  height:220,
 }
 },
 methods: {
 heightChange(movement){
  this.height += movement
  if(this.height < 30){
  this.height = 30
  }
  if(this.height > 600){
  this.height = 600
  }
 },
 },
}
</script>

它对应的把手代码:

<template>
 <div class="y-handle" 
 @mousedown="mouseDown" 
 ></div>
</template>

<script>
export default {
 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)
 },
 },
}
</script>

制作步骤

先建一个VUE项目:
1、安装node
2、安装webpack
3、安装VUE
4、新建VUE项目:vue init webpack-simple
5、根据相应布局制作VUE组件
具体代码,请参考:https://github.com/vularsoft/studio-ui,根据标注,获取相应的版本记录即可。

到此这篇关于VUE实现Studio管理后台之鼠标拖放改变窗口大小 的文章就介绍到这了,更多相关vue 鼠标拖放改变窗口大小 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
javascript中的if语句使用介绍
Nov 20 Javascript
js函数在frame中的相互调用详解
Mar 03 Javascript
javascript 动态创建表格
Jan 08 Javascript
vue 请求后台数据的实例代码
Jun 22 Javascript
原生JavaScrpit中异步请求Ajax实现方法
Nov 03 Javascript
浅谈es6中export和export default的作用及区别
Feb 07 Javascript
实例详解Node.js 函数
Jun 10 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
May 21 Javascript
微信小程序如何调用json数据接口并解析
Jun 29 Javascript
json解析大全 双引号、键值对不在一起的情况
Dec 06 Javascript
vant 解决tab切换插件标题样式自定义的问题
Nov 13 Javascript
介绍一下28个JS常用数组方法
May 06 Javascript
微信小程序如何加载数据库真实数据的实现
Mar 04 #Javascript
微信小程序开发搜索功能实现(前端+后端+数据库)
Mar 04 #Javascript
微信小程序云函数添加数据到数据库的方法
Mar 04 #Javascript
jquery实现垂直手风琴菜单
Mar 04 #jQuery
JS数据类型(基本数据类型、引用数据类型)及堆和栈的区别分析
Mar 04 #Javascript
微信浏览器左上角返回按钮监听的实现
Mar 04 #Javascript
js回调函数原理与用法案例分析
Mar 04 #Javascript
You might like
在VS2008中编译MYSQL5.1.48的方法
2010/07/03 PHP
学习php设计模式 php实现模板方法模式
2015/12/08 PHP
php微信开发之上传临时素材
2016/06/24 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
thinkphp5.1 框架钩子和行为用法实例分析
2020/05/25 PHP
一些有用的JavaScript和jQuery的片段分享
2011/08/23 Javascript
鼠标拖拽移动子窗体的JS实现
2014/02/25 Javascript
JavaScript 学习笔记之操作符(续)
2015/01/14 Javascript
javascript每日必学之基础入门
2016/02/16 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
2016/12/14 Javascript
js 获取图像缩放后的实际宽高,位置等信息
2017/03/07 Javascript
快速搭建React的环境步骤详解
2017/11/06 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
2019/06/18 Javascript
微信小程序的开发范式BeautyWe.js入门详解
2019/07/10 Javascript
jQuery实现form表单基于ajax无刷新提交方法实例代码
2019/11/04 jQuery
微信小程序获取当前位置和城市名
2019/11/13 Javascript
2019最新21个MySQL高频面试题介绍
2020/02/06 Javascript
在vue中动态修改css其中一个属性值操作
2020/12/07 Vue.js
python使用wmi模块获取windows下硬盘信息的方法
2015/05/15 Python
详解Python的Flask框架中的signals信号机制
2016/06/13 Python
Python基于列表list实现的CRUD操作功能示例
2018/01/05 Python
Python Learning 列表的更多操作及示例代码
2018/08/22 Python
Python实战购物车项目的实现参考
2019/02/20 Python
Python 3.8正式发布,来尝鲜这些新特性吧
2019/10/15 Python
Windows下Anaconda和PyCharm的安装与使用详解
2020/04/23 Python
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
丝芙兰意大利官方网站:Sephora.it
2019/12/13 全球购物
Java中的异常处理机制的简单原理和应用
2013/04/27 面试题
文秘专业自荐信
2013/10/14 职场文书
车间统计员岗位职责
2014/01/05 职场文书
环保倡议书怎么写
2014/05/16 职场文书
房屋维修申请报告
2015/05/18 职场文书
九年级数学教学反思
2016/02/17 职场文书
Python实战之用tkinter库做一个鼠标模拟点击器
2021/04/27 Python
企业版Windows 11有哪些新功能? Win11适用于企业的功能介绍
2021/11/21 数码科技
深入理解pytorch库的dockerfile
2022/06/10 Python