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脚本1k大小的3D玫瑰效果
Feb 11 Javascript
探讨JavaScript标签位置的存放与功能有无关系
Jan 15 Javascript
深入浅析javascript中的作用域(推荐)
Jul 19 Javascript
JS中数组重排序方法
Nov 11 Javascript
如何实现json数据可视化详解
Nov 24 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
Mar 30 Javascript
浅谈关于axios和session的一些事
Jul 13 Javascript
vue路由拦截及页面跳转的设置方法
May 24 Javascript
解决vue v-for 遍历循环时key值报错的问题
Sep 06 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
Sep 15 Javascript
jQuery实现的移动端图片缩放功能组件示例
May 01 jQuery
mapboxgl区划标签避让不遮盖实现的代码详解
Jul 01 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实现伪静态方法汇总
2016/01/13 PHP
PHP中用mysqli面向对象打开连接关闭mysql数据库的方法
2016/11/05 PHP
为jQuery增加join方法的实现代码
2010/11/28 Javascript
ajax异步刷新实现更新数据库
2012/12/03 Javascript
用svg制作富有动态的tooltip
2015/07/17 Javascript
javascript关于继承解析
2016/05/10 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
AngularJs bootstrap搭载前台框架——基础页面
2016/09/01 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
2016/10/18 Javascript
js中new一个对象的过程
2017/02/20 Javascript
vue2组件之select2调用的示例代码
2017/10/12 Javascript
vue 通过下拉框组件学习vue中的父子通讯
2017/12/19 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
使用Vue自定义指令实现Select组件
2018/05/24 Javascript
vue+webpack中配置ESLint
2018/11/07 Javascript
JS实现长图上下滚动效果
2020/03/19 Javascript
Vue element-ui父组件控制子组件的表单校验操作
2020/07/17 Javascript
[01:03:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第一场 1月29日
2021/03/11 DOTA
编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
2016/01/20 Python
对pandas中apply函数的用法详解
2018/04/10 Python
python写入已存在的excel数据实例
2018/05/03 Python
pygame游戏之旅 添加键盘按键的方法
2018/11/20 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
2019/06/24 Python
keras自定义回调函数查看训练的loss和accuracy方式
2020/05/23 Python
HTML5 3D衣服摇摆动画特效
2016/03/17 HTML / CSS
学校介绍信范文
2014/01/14 职场文书
公司前台辞职报告
2014/01/19 职场文书
西北政法大学自主招生自荐信
2014/01/29 职场文书
珍惜时间演讲稿
2014/05/14 职场文书
工作证明格式及范本
2014/09/12 职场文书
社区青年志愿者活动总结
2015/05/06 职场文书
离婚被告答辩状
2015/05/22 职场文书
投诉信回复范文
2015/07/03 职场文书
公司人力资源管理制度
2015/08/05 职场文书
JavaWeb 入门篇(3)ServletContext 详解 具体应用
2021/07/16 Java/Android
一文搞懂MySQL索引页结构
2022/02/28 MySQL