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 相关文章推荐
JQuery 入门实例1
Jun 25 Javascript
jQuery 的全选(全非选)即取得被选中的值使用介绍
Nov 12 Javascript
jQuery实现视频作为全屏幕背景
Dec 18 Javascript
JQuery实现超链接鼠标提示效果的方法
Jun 10 Javascript
Jquery操作Ajax方法小结
Nov 29 Javascript
把普通对象转换成json格式的对象的简单实例
Jul 04 Javascript
Vue制作Todo List网页
Apr 26 Javascript
AngularJS 仿微信图片手势缩放的实例
Sep 28 Javascript
vue数据传递--我有特殊的实现技巧
Mar 20 Javascript
JS打印彩色菱形的实例代码
Aug 15 Javascript
微信小程序列表中item左滑删除功能
Nov 07 Javascript
Express结合Webpack的全栈自动刷新
May 23 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/02/03 PHP
php利用递归实现删除文件目录的方法
2016/09/23 PHP
PHP+mysql实现从数据库获取下拉树功能示例
2017/01/06 PHP
php利用fsockopen GET/POST提交表单及上传文件
2017/05/22 PHP
Jquery+JSon 无刷新分页实现代码
2010/04/01 Javascript
css值转换成数值请抛弃parseInt
2011/10/24 Javascript
VBS通过WMI监视注册表变动的代码
2011/10/27 Javascript
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
深入理解javascript动态插入技术
2013/11/12 Javascript
node.js中watch机制详解
2014/11/17 Javascript
jquery图片滚动放大代码分享(1)
2015/08/25 Javascript
JQuery为元素添加样式的实现方法
2016/07/20 Javascript
过期软件破解办法实例详解
2017/01/04 Javascript
bootstrap手风琴制作方法详解
2017/01/11 Javascript
js实现放大镜特效
2017/05/18 Javascript
关于定制FileField中的上传文件名称问题
2017/08/22 Javascript
详解vue2 $watch要注意的问题
2017/09/08 Javascript
详解VueJS应用中管理用户权限
2018/02/02 Javascript
vuex state及mapState的基础用法详解
2018/04/19 Javascript
js实现mp3录音通过websocket实时传送+简易波形图效果
2020/06/12 Javascript
[01:46]DOTA2上海特锦赛小组赛英文解说KotlGuy采访
2016/02/27 DOTA
Python中使用HTMLParser解析html实例
2015/02/08 Python
python出现&quot;IndentationError: unexpected indent&quot;错误解决办法
2017/10/15 Python
python3使用smtplib实现发送邮件功能
2018/05/22 Python
Python 控制终端输出文字的实例
2019/07/12 Python
Python通过4种方式实现进程数据通信
2020/03/12 Python
python学生管理系统的实现
2020/04/05 Python
HTML5是什么 HTML5是什么意思 HTML5简介
2012/10/26 HTML / CSS
写好自荐信需做到的5要点
2014/03/07 职场文书
学生保证书格式
2015/02/27 职场文书
2015年老干部工作总结
2015/04/23 职场文书
卡特教练观后感
2015/06/08 职场文书
优秀教师主要事迹材料
2015/11/04 职场文书
2019年警察入党转正申请书最新范文
2019/09/03 职场文书
导游词之潮音寺
2019/09/26 职场文书
python中的3种定义类方法
2021/11/27 Python