You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过id为drag的拖拽元素调整showfilteredhistory的div高度

核心问题修正

原代码存在以下几处问题,修改后即可实现拖动指定元素调整目标div高度的效果:

  • 纵向拖拽调整高度使用Y轴坐标即可,原代码错误定义了X轴相关变量,且高度计算公式方向有误,得到的高度不符合拖拽方向预期
  • 给#showfilteredhistory设置height属性后又立即清空该属性,导致高度配置完全不生效
  • 没有设置最小高度限制,拖拽时容易出现高度为0的异常情况
  • #container未设置相对定位,内部元素的高度计算无法拿到正确的偏移值

修正后的CSS代码

html, body {
  margin: 0;
  padding: 0;
  height: 100%;
}
#container {
  width: 100%;
  height: 100%;
  position: relative;
  box-sizing: border-box;
  padding: 10px;
}
#showfilteredhistory {
  overflow-y: auto;
  margin-bottom: 15px;
}
#drag {
  cursor: n-resize;
  text-align: center;
  user-select: none;
}

修正后的JS代码

var isResizing = false;

$(function () {
  var container = $('#container'),
      filteredhistory = $('#showfilteredhistory'),
      handle = $('#drag');
  // 初始高度赋值
  filteredhistory.css('height', '70px');

  handle.on('mousedown', function (e) {
    isResizing = true;
    e.preventDefault();
  });

  $(document).on('mousemove', function (e) {
    if (!isResizing) return;
    // 计算新高度
    var newHeight = e.clientY - container.offset().top;
    // 限制最小高度为初始的70px
    if (newHeight < 70) newHeight = 70;
    filteredhistory.css('height', newHeight + 'px');
  }).on('mouseup', function () {
    isResizing = false;
  });
});

修正后的HTML代码

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="container">
  <div class="row" id="showfilteredhistory">
    <li>A</li>
    <li>B</li>
    <li>C</li>
    <li>D</li>
    <li>E</li>
    <li>F</li>
    <li>G</li>
    <li>H</li>
    <li>I</li>
    <li>J</li>
    <li>K</li>
    <li>L</li>
    <li>M</li>
    <li>N</li>
    <li>O</li>
    <li>P</li>
  </div>
  <div id="bottom-panel">
    <div id="drag">===========</div>
  </div>
</div>

内容的提问来源于stack exchange,提问作者Technosoft Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:27:03