当前位置: 首页 > news >正文

elementUI可拖拉宽度抽屉

1,需求:

在elementUI的抽屉基础上,添加可拖动侧边栏宽度的功能,实现效果如下:
在这里插入图片描述

2,在原组件上添加自定义命令

在这里插入图片描述

    <el-drawer v-drawerDrag="'left'" :visible.sync="drawerVisible" direction="ltr"><div id="showId" style="padding: 1rem;font-size: 12px;overflow-x: hidden;" v-html="form.introduce"></div></el-drawer>

v-drawerDrag 属性是我们在原组件新加的命令,传入left或者right,需要与 direction 的let和rtl对应,

3,drawer-drag.js

export default {bind(el, binding, vnode, oldVnode) {// 默认抽屉宽度,当宽度小于此值不在压缩const minWidth = 400const dragDom = el.querySelector('.el-drawer')dragDom.style.overflow = 'auto'const resizeElL = document.createElement('div')const img = new Image(24, 38)img.src = require('@/assets/images/stretch.png')dragDom.appendChild(img)dragDom.appendChild(resizeElL)resizeElL.style.cursor = 'w-resize'resizeElL.style.position = 'absolute'resizeElL.style.height = '100%'resizeElL.style.width = '10px'resizeElL.style.top = '0px'img.style.position = 'absolute'img.style.top = '50%'// console.log('binding', binding.value)// 区分右侧侧边栏和左侧侧边栏if (binding.value === 'right') {resizeElL.style.left = '0px'img.style.left = '-12px'resizeElL.onmousedown = (e) => {const elW = dragDom.clientWidthconst EloffsetLeft = dragDom.offsetLeftconst clientX = e.clientXdocument.onmousemove = function(e) {e.preventDefault()if (clientX > EloffsetLeft && clientX < EloffsetLeft + 10) {// 往右拖拽if (e.clientX > clientX) {// console.log('向右-----------------------------')if (dragDom.clientWidth >= minWidth) {dragDom.style.width = elW - (e.clientX - clientX) + 'px'}}if (e.clientX < clientX) {// console.log('向左-----------------------------')dragDom.style.width = elW + (clientX - e.clientX) + 'px'}}}// 拉伸结束document.onmouseup = function(e) {document.onmousemove = nulldocument.onmouseup = null}}} else {resizeElL.style.right = '0px'img.style.right = '-12px'resizeElL.onmousedown = (e) => {const elW = dragDom.clientWidthconst EloffsetLeft = dragDom.offsetLeft + dragDom.offsetWidthconst clientX = e.clientXdocument.onmousemove = function(e) {e.preventDefault()if (clientX < EloffsetLeft && clientX > EloffsetLeft - 10) {if (e.clientX > clientX) {// console.log('向右-----------------------------')dragDom.style.width = elW + (e.clientX - clientX) + 'px'}if (e.clientX < clientX) {// console.log('向左-----------------------------')if (dragDom.clientWidth >= minWidth) {dragDom.style.width = elW - (clientX - e.clientX) + 'px'}}}}// 拉伸结束document.onmouseup = function(e) {document.onmousemove = nulldocument.onmouseup = null}}}}
}

图标自取 stretch.png
在这里插入图片描述

http://www.lryc.cn/news/159142.html

相关文章:

  • OpenPCDet系列 | 8.4 nuScenes数据集数据调用和数据分析
  • WeiTitlePopupWindow
  • qemu/kvm学习笔记
  • android 车载widget小部件部分详细源码实战开发-千里马车载车机framework开发实战课程
  • 如何使用CSS画一个三角形
  • 第15章_锁: (表级锁、页级锁、行锁、悲观锁、乐观锁、全局锁、死锁)
  • python音频转文字调用baidu
  • 靶场溯源第二题
  • mysql 的增删改查以及模糊查询、字符集语句的使用
  • Python Django框架中文教程:学习简单、灵活、高效的Web应用程序框架
  • Docker认识即安装
  • chrome 谷歌浏览器 导出插件拓展和导入插件拓展
  • fastjson漏洞批量检测工具
  • Vue进阶(六十七)页面刷新路由传参丢失问题分析及解决
  • 阿里云ubuntu服务器搭建ftp服务器
  • 03 卷积操作图片
  • 软考:中级软件设计师:程序语言基础:表达式,标准分类,法律法规,程序语言特点,函数传值传址
  • Java“牵手”1688商品详情数据,1688商品详情API接口,1688API接口申请指南
  • stable diffusion实践操作-批次出图
  • LeetCode热题100 【cpp】题解(一)哈希表和双指针
  • Python爬虫常见代理池实现和优化
  • 前端面试的话术集锦第 3 篇:进阶篇上
  • 【文字到语音的论文总结】
  • E. Data Structures Fan(思维 + 异或前缀和)
  • 初学python爬虫学习笔记——爬取网页中小说标题
  • The WebSocket session [x] has been closed and no method (apart from close())
  • 前端实现展开收起的效果 (react)
  • ABY2.0:更低的通信开销
  • vue项目预览图片
  • Tomcat 安装