需求:上下两个盒子之间添加可拖拽按钮,实现高度变化

  html:

              <textarea
:id="'mycode'+(index*1+1)"
:ref="'mycode'+(index*1+1)"
v-model="item.sqlContent"
class="CodeMirror-hints"
:class="'mycode'+(index*1+1)"
placeholder="按Ctrl键进行代码提示"
/>
<!-- 拖拽组件 -->
<div class="resizeBtn"><span @mousedown="resizeDown" @mousemove="resizeMove" @mouseup="resizeUp">===</span></div>
<el-tabs class="bottomTabsBox" style="height: 225px" size=mini v-model="activeSqlRes" type="card" @tab-click="handleSqlResClick"></el-tabs>

  css:

    .CodeMirror {
flex: 1;
}
.resizeBtn {
background: #143152;
text-align: center;
height: 10px;
line-height: 7px;
color: gray;
font-weight: 900;
span {
cursor: n-resize;
}
}
.bottomTabsBox {
height: 30%;
background: $--sqlBg-color;
border-top: 1px solid rgba(255,255,255,.2);
z-index: 1;
}

出现问题的版本:

  1 卡顿

  2 不流畅

  3 鼠标快速移动无法改变高度

  4 mouseup无法释放

resizeBox: null,
resizeY: 0,
boxHeight: '225px', // 下部分盒子高度
    resizeDown(e, index) {
this.resizeBox = document.getElementsByClassName('bottomTabsBox')
this.boxHeight = parseFloat(this.resizeBox[index].style.height)
this.resizeY = e.clientY
},
resizeMove(e) {
if (!this.resizeBox) return false
let change = this.boxHeight + (this.resizeY - e.clientY)
if (change < 40) return false
this.resizeBox[index].style.height = change+ 'px'
},
resizeUp(e) {
this.resizeBox = null
}

优化后版本:超级丝滑~

html:

    <!-- 拖拽组件 -->
<div class="resizeBtn"><span @mousedown="resizeDown($event, index)">===</span></div>
    resizeDown(e, index) {
this.resizeBox = document.getElementsByClassName('bottomTabsBox')
this.boxHeight = parseFloat(this.resizeBox[index].style.height)
this.resizeY = e.clientY document.onmousemove = (e) => {
if (!this.resizeBox) return false
let change = this.boxHeight + (this.resizeY - e.clientY)
if (change < 40) return false // 设置最小高度
this.resizeBox[index].style.height = change+ 'px'
} document.onmouseup = () => {
this.resizeBox = null
document.onmousemove = null;
}
}

vue 拖拉改变盒子高度(mousedown、mousemove、mouseup)流畅不卡顿的更多相关文章

  1. javascript简单拖拽(鼠标事件 mousedown mousemove mouseup)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  2. JavaScript区分click事件和mousedown(mouseup、mousemove)方法

    在前端开发工作中,会遇到这样问题:针对同一个dom元素,即希望为它绑定click事件,又想该元素可以允许拖拽的效果.而使用拖拽的效果,我们一般就会用到mousedown,mousemove和mouse ...

  3. js改变盒子大小(上下左右)分析

    js改变盒子大小 知识点 三个mouse事件:mousedown mousemove mouseup css的定位和cursor 思路 先解决单边问题识别范围,得到所选区域 event. 根据距离,判 ...

  4. 使用bootstrap网格系统自适应盒子宽度时保持所有盒子高度一致。

    使用了bootstrap网格系统的好处是很容易便实现了响应式布局,盒子可以根据设置的样式,随着屏幕的大小改变而自动改变宽度,但是也存在一个问题,那就是盒子的高度是由盒子的内容决定的,如果盒子里的内容不 ...

  5. click事件和mousedown、mouseup事件

    点击select标签元素的时候,会弹出下拉.然而当option中没有元素时,就不希望弹出下拉(比如在某些浏览器中,点击select会默认出一个罩层效果,而此时没有数据选择的话,弹出比较不友好). 首先 ...

  6. 学习微信小程序之css15解决父盒子高度塌陷

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. JQuery使用mousedown和mouseup简单判断鼠标按下与释放位置是否相同

    在JQuery中,我们可以利用mousedown.mouseup来跟踪页面的鼠标按下与释放事件. 如何获取鼠标的位置信息呢?事件event的pageX和pageY属性可以让我们获得鼠标在页面中的具体位 ...

  8. tkinter中scale拖拉改变值控件(十一)

    scale拖拉改变值控件 使用户通过拖拽改变值 简单的实现: import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuya. ...

  9. css背景图撑开盒子高度

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. UITableView cell 半透明效果,改变cell高度时背景不闪的解决方法

    如果直接指定cell.backgroundColor = = [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 ...

随机推荐

  1. 小米路由器4c刷入openwrt并成功进行锐捷认证

    小米路由器4C 刷入openwrt 并成功进行锐捷认证 前言: 在大学中,宿舍有个路由器当然是刚需,然而,我们学校的校园网需要进行锐捷认证,常规的路由器还用不了,需要自己刷路由器或是从奸商处购买.初入 ...

  2. WXS 模块

    https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxs/01wxs-module.html 2.1.概述 WXS(Wei ...

  3. Vue第三方库与插件实战手册

    title: Vue第三方库与插件实战手册 date: 2024/6/8 updated: 2024/6/8 excerpt: 这篇文章介绍了如何在Vue框架中实现数据的高效验证与处理,以及如何集成E ...

  4. rsync备份

    备份工具rsync 备份是太常见.且太重要的一个日常工作了. 备份源码.文档.数据库.等等. 类似cp命令拷贝,但是支持服务器之间的网络拷贝,且保证安全性. 学习背景 超哥游戏公司要每天都要对代码备份 ...

  5. Linux设置时区

    引言 在linux安装好了过后,如果时区不正确,需要手动地对它设置我们需要的时区 设置 控制台输入tzselect,回车 tzselect 2.然后选择 5 "Asia" 亚州,回 ...

  6. CTF反序列化wp(ciscn,nss,ctfshowweb入门)

    [CISCN 2023 华北]ez_date 题目: <?php error_reporting(0); highlight_file(__FILE__); class date{ public ...

  7. Qt 应用程序中自定义鼠标光标

    在 Qt 应用程序中,你可以自定义鼠标光标.你可以使用 `QCursor` 类来设置不同类型的鼠标光标,比如内置样式或者自定义的图片.以下是一些使用示例: 使用内置光标样式 Qt 提供了一些内置的光标 ...

  8. MoneyPrinterPlus:AI自动短视频生成工具-阿里云配置详解

    MoneyPrinterPlus是一个很好的自动短视频生成工具,虽然是一个非常好的工具,但是有些小伙伴可能不太清楚具体应该如何配置才能让它跑起来. 因为MoneyPrinterPlus依赖一些具体的配 ...

  9. LLM技术全景图:技术人必备的技术指南,一张图带你掌握从基础设施到AI应用的全面梳理

    LLM技术全景图:技术人必备的技术指南,一张图带你掌握从基础设施到AI应用的全面梳理 LLM 技术图谱(LLM Tech Map)是将 LLM 相关技术进行系统化和图形化的呈现,此图谱主要特点是&qu ...

  10. CLR via C# 笔记 -- 委托(17)

    1. 委托是方法的包装器,使方法能通过包装器来间接回调.在一个类型中通过委托来调用另一个类型的私有成员,只要委托对象是具有足够安全性/可访问性的代码创建,便没有问题. 2. 协变性:方法能返回从委托的 ...