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 冒泡事件阻止实现代码
Jan 27 Javascript
html向js方法传递参数具体实现
Aug 08 Javascript
JS检测图片大小的实例
Aug 21 Javascript
JQuery设置获取下拉菜单某个选项的值(比较全)
Aug 05 Javascript
jQuery简单tab切换效果实现方法
Apr 08 Javascript
利用纯JS实现像素逐渐显示的方法示例
Aug 14 Javascript
js阻止默认右键的下拉菜单方法
Jan 02 Javascript
React中使用async validator进行表单验证的实例代码
Aug 17 Javascript
JavaScript查看代码运行效率console.time()与console.timeEnd()用法
Jan 18 Javascript
详解微信小程序实现仿微信聊天界面(各种细节处理)
Feb 17 Javascript
vue.js实现双击放大预览功能
Jun 23 Javascript
基于JS实现快速读取TXT文件
Aug 25 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
去除php注释和去除空格函数分享
2014/03/13 PHP
PHP CURL中传递cookie的方法步骤
2019/05/09 PHP
javascript 面向对象编程基础 多态
2009/08/21 Javascript
jQuery父级以及同级元素查找介绍
2013/09/04 Javascript
js 获取时间间隔实现代码
2014/05/12 Javascript
JS在一定时间内跳转页面及各种刷新页面的实现方法
2016/05/26 Javascript
javascript基础知识
2016/06/07 Javascript
JS实现页面进入和返回定位到具体位置
2016/12/08 Javascript
Vue+axios 实现http拦截及路由拦截实例
2017/04/25 Javascript
详解webpack + vue + node 打造单页面(入门篇)
2017/09/23 Javascript
vue中post请求以a=a&amp;b=b 的格式写遇到的问题
2018/04/27 Javascript
微信小程序实现页面下拉刷新和上拉加载功能详解
2018/12/03 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
python 自动提交和抓取网页
2009/07/13 Python
python构造icmp echo请求和实现网络探测器功能代码分享
2014/01/10 Python
Python实现以时间换空间的缓存替换算法
2016/02/19 Python
pandas DataFrame实现几列数据合并成为新的一列方法
2018/06/08 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
2019/07/22 Python
python+selenium自动化实战携带cookies模拟登陆微博
2021/01/19 Python
HTML5 3D旋转相册的实现示例
2019/12/03 HTML / CSS
印度首选时尚目的地:Reliance Trends
2018/01/17 全球购物
美国高档帽子网上商店:Hats.com
2018/08/09 全球购物
蔻驰意大利官网:COACH意大利
2019/01/16 全球购物
什么是ESB?请介绍一下ESB?
2015/05/27 面试题
工伤赔偿协议书范本
2014/04/15 职场文书
大学中国梦演讲稿
2014/04/23 职场文书
计划生育宣传标语
2014/06/21 职场文书
禁毒宣传活动总结
2014/08/26 职场文书
意外伤害赔偿协议书范文
2014/09/23 职场文书
2014年光棍节活动策划方案(创意集锦)
2014/09/29 职场文书
党支部组织生活会整改方案
2014/09/30 职场文书
2015年上半年物业工作总结
2015/03/30 职场文书
因家庭原因离职的辞职信范文
2015/05/12 职场文书
初中班级口号霸气押韵
2015/12/24 职场文书
《葡萄沟》教学反思
2016/02/23 职场文书
win10搭建配置ftp服务器的方法
2022/08/05 Servers