JavaScript报表设计器带包含可在设计器中更改的绝对定位字段.

Html:

<div class='designer-panel-body' style='height:100px'>
  <div class='designer-label' style='top:10px'>
    Field1
  </div>
  <div class='designer-label' style='top:60px; left:20px'>
    Field2
  </div>
</div>

Css:以下内容:

.designer-panel-body {
  border: solid 1px;
}

.designer-label {
  position: absolute
}

JavaScrip:

$(".designer-panel-body").resizable({
  start: function(event, ui) {
    $(this).resizable("option", "minHeight", 80)
    },
      handles: "s"
});

菲德尔:https://jsfiddle.net/xk98f2rq/

条带高度也可以通过鼠标更改. 如何设置最小高度,使带区高度不会低于上一场顶部位置?

示例中的代码为此使用硬代码值80.如果字段在运行时被更改,例如字段2被删除,则此值较小,以便面板可以调整到字段1的顶部.

如何计算最小高度是起始法? 是否合理/如何重构这段代码,使其使用普通的Java脚本,而不是jQuery和jQuery UI?

推荐答案

如果使用position: absolute,则父div不会使其高度与子div的高度相适应.一种解决方案是在函数get_height()中计算子对象的高度(包括outerHeightoffset),并将计算出的高度应用于容器.

当移除.designer-label个项目(通过点击它们)时,调整可调整大小的元素的minHeight.

function get_height() {
  var minHeight = 0;
  var h;
  $('.designer-panel-body').find('.designer-label').each(function() {
    h = $(this).outerHeight(true) + $(this).offset().top;
    if (h > minHeight) {
      minHeight = h;
    }
  });
  return minHeight;
}

$(".designer-panel-body").height(get_height());

$(".designer-panel-body").resizable({
  minHeight: get_height(),
  handles: "s"
});

$('.designer-label').on('click', function() {
  $(this).remove();
  $(".designer-panel-body").resizable("option", "minHeight", get_height());
});
.designer-panel-body {
  border: solid 1px;
  position: relative;
}

.designer-label {
  position: absolute;
  border: 1px solid blue;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.9/jquery-ui.js"></script>
<link href="https://ajax.microsoft.com/ajax/jquery.ui/1.8.7/themes/black-tie/jquery-ui.css" rel="stylesheet" />
<div class='designer-panel-body'>

  <div class='designer-label' style='top:10px'>
    Field1
  </div>
  <div class='designer-label' style='top:60px; left:20px'>
    Field2
  </div>

</div>

Javascript相关问答推荐

Klaro与Angular的集成

TypScript界面中的Infer React子props

Redux工具包查询(RTKQ)端点无效并重新验证多次触发

Msgraph用户邀请自定义邮箱模板

康威的生活游戏规则在我的Javascript版本中不起作用.''我做错了什么?

我在我的Java代码中遇到了问题,代码的一部分看不到先前定义的对象

如何通过将实例方法的名称传递给具有正确类型的参数的继承方法来调用实例方法?

如何将innerHTML字符串修剪为其中的特定元素?

邮箱密码重置链接不适用于已部署的React应用程序

使用插件构建包含chart.js提供程序的Angular 库?

有效路径同时显示有效路径组件和不存在的路径组件

基于产品ID更新条带产品图像的JavaScript命中错误

JavaScript&;Reaction-如何避免在不使用字典/对象的情况下出现地狱?

未找到用于 Select 器的元素:in( puppeteer 师错误)

我的NavLink活动类在REACT-ROUTER-V6中出现问题

将字符串解释为数字;将其重新编码为另一个基数

每隔一行文本段落进行镜像(Boustrophedon)

由于http.get,*ngIf的延迟很大

带元素数组的Mongo聚合

Playwright:ReferenceError:browserContext未定义