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 实现父窗口引用弹出窗口的值的脚本
Aug 07 Javascript
JS动画效果代码3
Apr 03 Javascript
javascript中的array数组使用技巧
Jan 31 Javascript
关于JS字符串函数String.replace()
Apr 07 Javascript
jQuery EasyUI Dialog拖不下来如何解决
Sep 28 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
Dec 08 Javascript
javascript性能优化之事件委托实例详解
Dec 12 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
Nov 22 Javascript
微信小程序开发之实现选项卡(窗口顶部TabBar)页面切换
Nov 25 Javascript
完美实现js焦点轮播效果(二)(图片可滚动)
Mar 07 Javascript
jQuery EasyUI window窗口使用实例代码
Dec 25 jQuery
js中的reduce()函数讲解
Jan 18 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
smarty简单入门实例
2014/11/28 PHP
php中array_multisort对多维数组排序的方法
2020/06/21 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
2017/05/24 PHP
PHP Laravel 上传图片、文件等类封装
2017/08/16 PHP
Yii2.0框架behaviors方法使用实例分析
2019/09/30 PHP
json 入门基础教程 推荐
2009/10/31 Javascript
用jquery方法操作radio使其默认选项是否
2013/09/10 Javascript
javaScript对文字按照拼音排序实现代码
2013/12/27 Javascript
javascript去掉代码里面的注释
2015/07/24 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
2015/09/02 Javascript
基于jquery实现复选框全选,反选,全不选等功能
2015/10/16 Javascript
深入浅析react native es6语法
2015/12/09 Javascript
JS实现漂亮的时间选择框效果
2016/08/20 Javascript
vue和better-scroll实现列表左右联动效果详解
2019/04/29 Javascript
js简单的分页器插件代码实例
2019/09/11 Javascript
解决layui弹出层layer的area过大被遮挡的问题
2019/09/21 Javascript
Vue.js中Line第三方登录api的实现代码
2020/06/29 Javascript
python使用wmi模块获取windows下的系统信息 监控系统
2015/10/27 Python
python使用Matplotlib绘制分段函数
2018/09/25 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
使用 Python 在京东上抢口罩的思路详解
2020/02/27 Python
使用python-Jenkins批量创建及修改jobs操作
2020/05/12 Python
python中的测试框架
2020/11/13 Python
java字符串格式化输出实例讲解
2021/01/06 Python
python 制作网站筛选工具(附源码)
2021/01/21 Python
html5 input输入实时检测以及延时优化
2018/07/18 HTML / CSS
耐克美国官网:Nike.com
2016/08/01 全球购物
加拿大高尔夫超市:Golf Town
2018/01/12 全球购物
瑞士图书网站:Weltbild.ch
2019/09/17 全球购物
应届生财务会计求职信
2013/11/05 职场文书
实习鉴定范文
2013/12/19 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
秋季运动会开幕词
2015/01/28 职场文书
幼儿园科学课教学反思
2016/03/03 职场文书
PyCharm 配置SSH和SFTP连接远程服务器
2022/05/11 Python
Oracle删除归档日志及添加定时任务
2022/06/28 Oracle