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 addBookmark 加入收藏 多浏览器兼容
Aug 15 Javascript
原生js ActiveXObject获取execl里面的值
Nov 01 Javascript
js实现鼠标感应向下滑动隐藏菜单的方法
Feb 20 Javascript
微信小程序 开发经验整理
Feb 15 Javascript
jquery基于layui实现二级联动下拉选择(省份城市选择)
Jun 20 jQuery
探索webpack模块及webpack3新特性
Sep 18 Javascript
微信小程序wx.request实现后台数据交互功能分析
Nov 25 Javascript
基于vue打包后字体和图片资源失效问题的解决方法
Mar 06 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
May 27 Javascript
小程序实现搜索框
Jun 19 Javascript
layer设置maxWidth及maxHeight解决方案
Jul 26 Javascript
原生js实现分页效果
Sep 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实现的替换敏感字符串类实例
2014/09/22 PHP
php中cookie实现二级域名可访问操作的方法
2014/11/11 PHP
PHP未登录自动跳转到登录页面
2016/12/21 PHP
php微信开发之关注事件
2018/06/14 PHP
使Ext的Template可以解析二层的json数据的方法
2007/12/22 Javascript
jquery限定文本框只能输入数字即整数和小数
2013/11/29 Javascript
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
2014/09/26 NodeJs
php+ajax+jquery实现点击加载更多内容
2015/05/03 Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
2015/10/08 Javascript
JS实现超简洁网页title标题跑动闪烁提示效果代码
2015/10/23 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
2016/05/25 Javascript
8 行 Node.js 代码实现代理服务器
2016/12/05 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
2017/01/08 Javascript
微信小程序开发的四十个技术窍门总结(推荐)
2017/01/23 Javascript
javascript实现日历效果
2019/06/17 Javascript
微信小程序 组件的外部样式externalClasses使用详解
2019/09/06 Javascript
vue项目中锚点定位替代方式
2019/11/13 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
介绍Python中内置的itertools模块
2015/04/29 Python
numpy排序与集合运算用法示例
2017/12/15 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
浅谈python输出列表元素的所有排列形式
2020/02/26 Python
Melijoe美国官网:法国奢侈童装购物网站
2017/04/19 全球购物
世界上最大的艺术社区:SAA
2020/12/30 全球购物
.NET概念性的面试题
2012/02/29 面试题
村捐赠仪式答谢词
2014/01/21 职场文书
评析教师个人的自我评价
2014/02/19 职场文书
安全标准化实施方案
2014/02/20 职场文书
公司办公室岗位职责
2014/03/19 职场文书
学习礼仪心得体会
2014/09/01 职场文书
2014年国庆节演讲稿精选范文1500字
2014/09/25 职场文书
校长师德表现自我评价
2015/03/04 职场文书
详解如何在Canvas中添加事件的方法
2021/04/17 Javascript
为什么你写的height:100%不起作用
2021/05/10 HTML / CSS
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/06 其他游戏
Python通用验证码识别OCR库ddddocr的安装使用教程
2022/07/07 Python