最近在做vue项目中遇到需要通过拖动面板边缘,动态调整面板宽度的问题,最开始是打算找一个vue组件解决得了,后来想了一下应该也挺简单的就自己实现了。项目中是左右宽度调整,这里只介绍左右面板resizable,上下调整原理是一样的。

思路:

step1、在左右面板之间添加一个div,div样式如下:

.resizable-widget {position: absolute;top: 0;bottom: 0;left: 255px;right: 0;width: 5px;cursor: col-resize;
}

然后添加两个小竖线:

.resizable-widget::after {content: '';width: 1px;height: 12px;border-left: 2px solid #ccc;border-right: 2px solid #ccc;position: absolute;top: 50%;left: 1px;
}

step2:  给最外层div(或document)绑定mouseover和mouseup事件,添加prevent修饰符防止文本选中

<div class="layout-container" @mousemove.prevent="bindMouseover($event)" @mouseup.prevent="bindMouseup">
bindMouseover (e) {this.mouse_position_x = e.x   // 鼠标移动到的位置
},
bindMouseup () {clearInterval(this.timerId)   // 鼠标抬起,清除定时器
}

step3: 给resizable元素添加mousedown事件

<div class="resizable-widget" :style="[resizableLeftObj, resizableHeightObj]" @mousedown.prevent="resizableMousedown($event)"></div>
resizableMousedown () {if (!this.timerId) {clearInterval(this.timerId)}this.timerId = setInterval(() => {this.move_x = this.mouse_position_x - this.contentWidth   // 10ms计算一次移动的宽度,contentWidth初始值是250px}, 10)
}

最后,在computed属性中计算个面板的宽度值即可

面板可调整大小resizable(基于vue)相关推荐

  1. vue可视化拖拽生成工具_vdesjs: 基于vue的可视化拖拽,代码生成工具。提升前端开发效率,或者集成至项目作为在线拖拽工具。(持续迭代升级中)...

    vdesjs 介绍 vdesjs是一款基于vue技术栈,可视化拖拽,代码生成工具.我们提供详细的文档来帮助您理解我们工具的实现原理,并且您可以方便的基于vdesjs来扩展您自己的代码生成组件. 技术选 ...

  2. 基于vue的UI框架集锦(移动端+pc端)

    1. vonic 一个基于 vue.js 和 ionic 样式的 UI 框架,用于快速构建移动端单页应用,很简约,是我喜欢的风格 star 2.3k 中文文档 在线预览 2.vux 基于WeUI和Vu ...

  3. 基于vue 旅游网移动开发

    文章目录 前言 开发前准备 项目配置 vue.config.js 使用框架vant babel.config.js配置 main.js 引入路由 vuex环境 axios 1.创建axios实例 2. ...

  4. 干货|6个牛逼的基于Vue.js的后台控制面板,接私活必备

    JavaEE擅长的就是企业级应用,作为一个Java程序员,如果想自己徒手撸一个ERP.WMS之类的系统还是有一点挑战的,不过今天松哥要给大家介绍几款牛逼的基于Vue.js的后台管理控制面板,掌握这几款 ...

  5. 基于 Vue 和 TS 的 Web 移动端项目实战心得

    关注 程序员成长指北,回复"1" 加入我们一起学习,天天进步 作者:mcuking(杭州个推) 来源:https://juejin.im/post/5d759f706fb9a06a ...

  6. 基于 Vue.js+Springboot 的学院社团管理系统的设计与实现

    在教育深化改革的背景下,我国除了优化教育体制,提升教育水平之外,还鼓励学生参与课外活动,促进学生全面发展.如何更好地让大学生加入适合自己的社团,在繁忙的学习之余,可以更好的参与到社团的活动,从中汲取新 ...

  7. html5快速开发模板生成器,推荐一个基于Vue 的 H5 快速开发模板

    本项目以基于 vue-cli4 和 Vant-ui 搭建的,进行移动端开发中的一些最佳实践方案 模板地址 动动你的小手点颗star 样式适配 在移动端网页开发时,样式适配始终是一个绕不开的问题.对此目 ...

  8. 基于Vue的电商管理系统 (1)

    正好这段时间在做一个电商管理系统的项目,借此总结一下.该项目主要是一个电商的后台管理系统,可实现管理用户账号,即登录.退出.用户管理.权限管理等,商品管理,即商品分类.分类参数.商品信息,订单信息等以 ...

  9. html九图拼图游戏代码,基于Vue.js实现数字拼图游戏

    先来看看效果图: 功能分析 当然玩归玩,作为一名Vue爱好者,我们理应深入游戏内部,一探代码的实现.接下来我们就先来分析一下要完成这样的一个游戏,主要需要实现哪些功能.下面我就直接将此实例的功能点罗列 ...

最新文章

  1. LeetCode 121 Best Time to Buy and Sell Stock
  2. python全套视频教程下载-老男孩python全套视频教程百度云资源下载
  3. 404错误处理以及以后缀为action结尾的处理
  4. android安卓开发-eclipse平台下错误记录
  5. WPF中自定义窗体标题栏
  6. springboot2.5.0 整合 redis 配置详解
  7. 2019年6月26 突然想到的代码优化
  8. sql练习(针对Mysql)
  9. python中自动化办公 【笔记】
  10. 友价虚拟商城实物商城PC端模板18套+手机模板两套
  11. npm解决node-sass安装失败
  12. ElasticSearch基于REST风格APi的常用操作
  13. 自然语言项目之Python语种检测代码实现
  14. PHP之mb_convert_case使用
  15. 2020-12-09
  16. 【python量化】用时间卷积神经网络(TCN)进行股价预测
  17. 【保姆级|建议收藏】阿ken带你学Java入门及进阶(二)——运算符、循环语句,文末有彩蛋鸭✨✨✨
  18. 在vue中获取dom元素
  19. LevelDB Arena源码分析
  20. 微信小程序可横向滑动展开菜单

热门文章

  1. Git分支合并(merge)时忽略某个文件或者目录
  2. 共享服务器哪个系统号,什么是服务器internet应用服务器之一,他可以使用户在不同·操作系统之间进行文件共享...
  3. java爬虫 模拟登录_java 基于Jsoup 对领英完成模拟登陆(Java爬虫)
  4. 安卓api之高德地图API(申请高德地图apiv2)
  5. javaScript开发扫雷游戏
  6. python3-扫雷网页版
  7. 关于 appium 如何关闭 app (已解决)
  8. 你知道网速的发展史吗? 80年代的我们是这样上网的!
  9. 程序员腰椎和颈椎问题 健康最重要
  10. 金融数据分析必备的126个数据源