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 四则运算精度修正函数代码
May 31 Javascript
jquery实现滑动图片自己测试的例子
Nov 05 Javascript
Javascript写入txt和读取txt文件示例
Feb 12 Javascript
js校验表单后提交表单的三种方法总结
Feb 28 Javascript
js由下向上不断上升冒气泡效果实例
May 07 Javascript
JavaScript获取function所有参数名的方法
Oct 30 Javascript
node.js发送邮件email的方法详解
Jan 06 Javascript
jQuery使用方法
Feb 04 Javascript
javascript 网页进度条简单实例
Feb 22 Javascript
clipboard.js在移动端复制失败的解决方法
Jun 13 Javascript
微信小程序中换行空格(多个空格)写法详解
Jul 10 Javascript
解决antd日期选择组件,添加value就无法点击下一年和下一月问题
Oct 29 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/05/07 PHP
PHP输出日历表代码实例
2015/03/27 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
2007/01/11 Javascript
User Scripts: Video Download by User Scripts
2007/05/14 Javascript
window.onload 加载完毕的问题及解决方案(上)
2009/07/09 Javascript
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
2011/07/10 Javascript
jQuery javaScript捕获回车事件(示例代码)
2013/11/07 Javascript
jQuery如何获取同一个类标签的所有值(默认无法获取)
2014/09/25 Javascript
Javascript解析URL方法详解
2014/12/05 Javascript
Lua表达式和控制结构学习笔记
2014/12/15 Javascript
jquery实现Ctrl+Enter提交表单的方法
2015/07/21 Javascript
angular中不同的组件间传值与通信的方法
2017/11/04 Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
2018/02/14 Javascript
js判断输入框不能为空格或null值的实现方法
2018/03/02 Javascript
NodeJS使用Range请求实现下载功能的方法示例
2018/10/12 NodeJs
详解在React-Native中持久化redux数据
2019/05/22 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
2019/08/12 Javascript
layer弹出层倒计时关闭的实现方法
2019/09/27 Javascript
js实现二级联动简单实例
2020/01/11 Javascript
Python字符串逐字符或逐词反转方法
2015/05/21 Python
python路径的写法及目录的获取方式
2019/12/26 Python
查看已安装tensorflow版本的方法示例
2020/04/19 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
2020/04/25 Python
filter使用python3代码进行迭代元素的实例详解
2020/12/03 Python
Django+Django-Celery+Celery的整合实战
2021/01/20 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
世界上最全面的汽车零部件和配件集合:JC Whitney
2016/09/04 全球购物
Daniel Wellington官方海外旗舰店:丹尼尔惠灵顿DW手表
2018/02/22 全球购物
业务员简历自我评价
2014/03/06 职场文书
同志主要表现材料
2014/08/21 职场文书
事业单位年度考核评语
2014/12/31 职场文书
加薪申请报告范本
2015/05/15 职场文书
红色电影观后感
2015/06/18 职场文书
不负正版帝国之名 《重返帝国》引领SLG手游制作新的标杆
2022/04/07 其他游戏