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新闻滚动 js如何实现新闻滚动效果
Jan 07 Javascript
jquery浏览器滚动加载技术实现方案
Jun 03 Javascript
JS+CSS实现六级网站导航主菜单效果
Sep 28 Javascript
Bootstrap 粘页脚效果
Mar 28 Javascript
JavaScript判断数组是否存在key的简单实例
Aug 03 Javascript
bootstrap 表单验证使用方法
Jan 11 Javascript
jquery横向纵向鼠标滚轮全屏切换
Feb 27 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
Jul 12 Javascript
vue使用laydate时间插件的方法
Nov 14 Javascript
JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析
Feb 12 Javascript
vue或react项目生产环境去掉console.log的操作
Sep 02 Javascript
js观察者模式的弹幕案例
Nov 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
《破坏领主》销量已超100万 未来将继续开发新内容
2020/03/08 其他游戏
利用PHP制作简单的内容采集器的代码
2007/11/28 PHP
Mysql中limit的用法方法详解与注意事项
2008/04/19 PHP
PHP函数nl2br()与自定义函数nl2p()换行用法分析
2016/04/02 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
2017/08/01 PHP
Prototype ObjectRange对象学习
2009/07/19 Javascript
一些相见恨晚的 JavaScript 技巧
2010/04/25 Javascript
Array.prototype.slice 使用扩展
2010/06/09 Javascript
JavaScript词法作用域与调用对象深入理解
2012/11/29 Javascript
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
原生JS实现幻灯片
2017/02/22 Javascript
微信小程序商品到详情的实现
2017/06/27 Javascript
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
基于jQuery使用Ajax动态执行模糊查询功能
2018/07/05 jQuery
vue2过滤器模糊查询方法
2018/09/16 Javascript
[02:37]TI8勇士令状不朽珍藏II视频展示
2018/06/23 DOTA
Python在线运行代码助手
2016/07/15 Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
2017/08/08 Python
详解Python爬取并下载《电影天堂》3千多部电影
2019/04/26 Python
python利用tkinter实现屏保
2019/07/30 Python
python numpy中cumsum的用法详解
2019/10/17 Python
python队列原理及实现方法示例
2019/11/27 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
详解python爬取弹幕与数据分析
2020/11/14 Python
怎样实现H5+CSS3手指滑动切换图片的示例代码
2019/05/05 HTML / CSS
苹果美国官方商城:Apple美国
2016/08/24 全球购物
酒店员工职业生涯规划
2014/02/25 职场文书
家长会主持词
2014/03/26 职场文书
大型活动组织方案
2014/05/10 职场文书
中文专业毕业生自荐信
2014/05/24 职场文书
孝老爱亲模范事迹材料
2014/05/25 职场文书
个人三严三实对照检查材料
2014/09/25 职场文书
保证金退回承诺函格式
2015/01/21 职场文书
JavaScript数组reduce()方法的语法与实例解析
2021/07/07 Javascript
关于CSS自定义属性与前端页面的主题切换问题
2022/03/21 HTML / CSS
《王者天下》第4季首话新剧照 4月9日正式开播
2022/04/07 日漫