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实现仿银行密码输入框效果的代码
Dec 13 Javascript
Mootools 1.2教程(21)——类(二)
Sep 15 Javascript
GRID拖拽行的实例代码
Jul 18 Javascript
web css实现整站样式互相切换
Oct 29 Javascript
jQuery 取值、赋值的基本方法整理
Mar 31 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
Mar 04 Javascript
JS使用eval()动态创建变量的方法
Jun 03 Javascript
JQuery 动态生成Table表格实例代码
Dec 02 Javascript
vue.js+Echarts开发图表放大缩小功能实例
Jun 09 Javascript
Angularjs实现下拉框联动的示例代码
Aug 22 Javascript
浅谈vuex之mutation和action的基本使用
Aug 29 Javascript
Vue项目利用axios请求接口下载excel
Nov 17 Vue.js
微信小程序如何加载数据库真实数据的实现
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
谈PHP生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
php函数array_merge用法一例(合并同类数组)
2013/02/03 PHP
php检测文件编码的方法示例
2014/04/25 PHP
php时间计算相关问题小结
2016/05/09 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
2019/10/22 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
2020/04/06 PHP
js实现拖拽 闭包函数详细介绍
2012/11/25 Javascript
工作中比较实用的JavaScript验证和数据处理的干货(经典)
2016/08/03 Javascript
原生Javascript插件开发实践
2017/01/09 Javascript
详解js几个绕不开的事件兼容写法
2017/08/30 Javascript
vue双花括号的使用方法 附练习题
2017/11/07 Javascript
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
2018/01/09 Javascript
vue之父子组件间通信实例讲解(props、$ref、$emit)
2018/05/22 Javascript
详解angular如何调用HTML字符串的方法
2018/06/30 Javascript
JS实现匀速与减速缓慢运动的动画效果封装示例
2018/08/27 Javascript
Vue 莹石摄像头直播视频实例代码
2018/08/31 Javascript
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
vue打开子组件弹窗都刷新功能的实现
2020/09/21 Javascript
Python访问纯真IP数据库脚本分享
2015/06/29 Python
Python日期的加减等操作的示例
2017/08/15 Python
将pip源更换到国内镜像的详细步骤
2019/04/07 Python
pygame实现打字游戏
2021/02/19 Python
Python unittest 自动识别并执行测试用例方式
2020/03/09 Python
Python如何转换字符串大小写
2020/06/04 Python
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
手对手的教你用canvas画一个简单的海报的方法示例
2018/12/10 HTML / CSS
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
GOLFINO英国官网:高尔夫服装
2020/04/11 全球购物
解释一下Windows的消息机制
2014/01/30 面试题
什么是规则表达式
2012/05/03 面试题
幼儿园实习自我鉴定
2013/12/15 职场文书
大学运动会入场词
2014/02/22 职场文书
无财产无子女离婚协议书范文
2014/09/14 职场文书
python识别围棋定位棋盘位置
2021/07/26 Python
Nginx实现会话保持的两种方式
2022/03/18 Servers