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 相关文章推荐
简单JS代码压缩器
Oct 12 Javascript
关于__defineGetter__ 和__defineSetter__的说明
May 12 Javascript
JQuery记住用户名和密码的具体实现
Apr 04 Javascript
jQuery的context属性用法实例
Dec 27 Javascript
基于jquery实现简单的分页控件
Mar 17 Javascript
JavaScript常见的五种数组去重的方式
Dec 15 Javascript
jQuery中layer分页器的使用
Mar 13 Javascript
vue-lazyload图片延迟加载插件的实例讲解
Feb 09 Javascript
bootstrap 弹出框modal添加垂直方向滚轴效果
Jul 09 Javascript
JavaScript实现简单随机点名器
Nov 21 Javascript
vue3.0实现点击切换验证码(组件)及校验
Nov 18 Vue.js
vue中封装axios并实现api接口的统一管理
Dec 25 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
Discuz7.2版的faq.php SQL注入漏洞分析
2014/08/06 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
PHP的mysqli_ssl_set()函数讲解
2019/01/23 PHP
PHP判断是否微信访问的方法示例
2019/03/27 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
JavaScript实际应用:innerHTMl和确认提示的使用
2006/06/22 Javascript
js 遍历对象的属性的代码
2011/12/29 Javascript
多种方法实现load加载完成后把图片一次性显示出来
2014/02/19 Javascript
页面加载完毕后滚动条自动滚动一定位置
2014/02/20 Javascript
Javascript连接多个数组不用concat来解决
2014/03/24 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
2015/08/05 Javascript
js实现iPhone界面风格的单选框和复选框按钮实例
2015/08/18 Javascript
在Html中使用Requirejs进行模块化开发实例详解
2016/04/15 Javascript
Google 地图API Map()构造器详解
2016/08/06 Javascript
前端js实现文件的断点续传 后端PHP文件接收
2016/10/14 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
2016/11/02 Javascript
JavaScript遍历Json串浏览器输出的结果不统一问题
2016/11/03 Javascript
angular ng-repeat数组中的数组实例
2017/02/18 Javascript
BootStrap 表单控件之单选按钮水平排列
2017/05/23 Javascript
vue2项目使用sass的示例代码
2017/06/28 Javascript
对vue中v-if的常见使用方法详解
2018/09/28 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
微信小程序开发之左右分栏效果的实例代码
2019/05/20 Javascript
vue开发拖拽进度条滑动组件
2019/09/21 Javascript
Python模拟登录12306的方法
2014/12/30 Python
Python排序搜索基本算法之堆排序实例详解
2017/12/08 Python
Django model序列化为json的方法示例
2018/10/16 Python
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
Python分析彩票记录并预测中奖号码过程详解
2019/07/09 Python
python安装sklearn模块的方法详解
2020/11/28 Python
美丽的现代设计家具:2Modern
2018/07/26 全球购物
英国领先的电视购物零售商:Ideal World
2019/03/18 全球购物
学生会招新策划书
2014/02/14 职场文书
个人作风建设剖析材料
2014/10/11 职场文书
2014年政协工作总结
2014/12/09 职场文书
大学毕业典礼致辞
2015/07/29 职场文书