首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >父母无血缘关系的子女的同等身高

父母无血缘关系的子女的同等身高
EN

Stack Overflow用户
提问于 2022-04-04 10:03:43
回答 2查看 146关注 0票数 1

我想要两个不相关的div的等高。基本上,我需要把父母B的孩子的身高和父母A的孩子的身高相等。下面是突出显示其内容的图片:

知道如何用jQuery来完成这个任务吗?我遇到的大多数相同高度的解决方案都是关于同一个父母的孩子的。

我使用的代码是用于容器中的子程序的。

代码语言:javascript
复制
$(document).ready(function(){
    $('.containers').each(function(){  
      var min_highestBox = 0;
      $('.columns', this).each(function(){
        if($(this).height() > min_highestBox) {
          min_highestBox = $(this).height(); 
        }
      });               
      $('.columns',this).height(min_highestBox);
    }); 
});
代码语言:javascript
复制
.containers {border:1px solid; width:100%; display:inline-block;}
.columns {border:1px solid red; padding: 20px; min-width:20%; float:left;}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="containers">
    <div class="columns">This is<br />the highest<br />column</div>
    <div class="columns">One line</div>
    <div class="columns">Four<br />lines<br />the highest<br />column</div>
</div>
<div class="containers">
    <div class="columns">One line</div>
    <div class="columns">Two<br>lines</div>
    <div class="columns">One line</div>
</div>

我已经尝试过CSS网格,但在这种特定情况下,CSS网格不是解决方案。

更新:实际容器既独立又相互独立:

代码语言:javascript
复制
.a, .b {border:2px solid; padding: 25px; float:left; width: 200px;}
.a div, .b div {border:2px solid red;}
代码语言:javascript
复制
<div class="a">Parent A
<div>Child of A <br> some additional text</div>
</div>

<div class="b">Parent B
<div>Child of B</div>
</div>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-08 08:23:11

在不能将它们放置在包装器中的情况下,您可以使用从最低到最高的排序,并对所有受影响的节点应用最高的值,并使用MutationObserver轻松地监视这些节点上的更改,从而再次调用高度调整例程。

对于同等身高的父母:

代码语言:javascript
复制
$(document).ready(() => {
  const selector = ".containers";
  function resize() {
    const nodes = $(selector)
          .css("height", "auto")
          .sort((a, b) => $(a).height() - $(b).height()),
      heighest = nodes.last().height();
    if (nodes.first().height() != heighest)
      $(selector).css(`height`, `${heighest}px`);
  }

  resize();

  const observer = new MutationObserver(resize);
  $(selector).each((idx, el) => observer.observe(el, { childList: true, subtree: true }));


  // Examples:
  setTimeout(() => {
    $(".columns").first().append("<br>Lorem<br>Ipsum<br>Dolor<br>sit<br>Amet");
  }, 1500);
  setTimeout(() => {
    $(".columns").last().append("<br>Lorem<br>Ipsum<br>Dolor<br>sit<br>Amet");
  }, 3000);
  setTimeout(() => {
    $(".columns").last().append("<br>Lorem<br>Ipsum<br>Dolor<br>sit<br>Amet");
  }, 5000);
})
代码语言:javascript
复制
.containers {
  border: 1px solid;
  width: 100%;
  display: inline-block;
}

.columns {
  border: 1px solid red;
  padding: 20px;
  min-width: 20%;
  float: left;
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="containers">
  <div class="columns">This is<br>the highest<br>column</div>
  <div class="columns">One line</div>
  <div class="columns">Four<br>lines<br>the highest<br>column</div>
</div>
<div class="containers">
  <div class="columns">One line</div>
  <div class="columns">Two<br>lines</div>
  <div class="columns">One line</div>
</div>

对于同等高度的儿童:

代码语言:javascript
复制
$(document).ready(() => {
  const selector = ".columns";
  function resize() {
    const nodes = $(selector)
          .css("height", "auto")
          .sort((a, b) => $(a).height() - $(b).height()),
      heighest = nodes.last().height();
    if (nodes.first().height() != heighest)
      $(selector).css(`height`, `${heighest}px`);
  }

  resize();

  const observer = new MutationObserver(resize);
  $(selector).each((idx, el) => observer.observe(el, { childList: true, subtree: true }));


  // Examples:
  setTimeout(() => {
    $(".columns").first().append("<br>Lorem<br>Ipsum<br>Dolor<br>sit<br>Amet");
  }, 1500);
  setTimeout(() => {
    $(".columns").last().append("<br>Lorem<br>Ipsum<br>Dolor<br>sit<br>Amet");
  }, 3000);
  setTimeout(() => {
    $(".columns").last().append("<br>Lorem<br>Ipsum<br>Dolor<br>sit<br>Amet");
  }, 5000);
})
代码语言:javascript
复制
.containers {
  border: 1px solid;
  width: 100%;
  display: inline-block;
}

.columns {
  border: 1px solid red;
  padding: 20px;
  min-width: 20%;
  float: left;
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="containers">
  <div class="columns">This is<br>the highest<br>column</div>
  <div class="columns">One line</div>
  <div class="columns">Four<br>lines<br>the highest<br>column</div>
</div>
<div class="containers">
  <div class="columns">One line</div>
  <div class="columns">Two<br>lines</div>
  <div class="columns">One line</div>
</div>

票数 1
EN

Stack Overflow用户

发布于 2022-04-04 11:31:59

如果您考虑使用额外的包装器,则只需使用CSS即可。

代码语言:javascript
复制
.wrapper {
  display: grid;
  gap: 5px;
  grid-auto-rows: 1fr; /* eqaul containers */
}
.containers {
  border: 1px solid;
  display: flex; /* equal childs */
}

.columns {
  border: 1px solid red;
  padding: 20px;
  min-width: 20%;
}
代码语言:javascript
复制
<div class="wrapper">
  <div class="containers">
    <div class="columns">This is<br />the highest<br />column</div>
    <div class="columns">One line</div>
    <div class="columns">Four<br />lines<br />the highest<br />column</div>
  </div>
  <div class="containers">
    <div class="columns">One line</div>
    <div class="columns">Two<br>lines</div>
    <div class="columns">One line</div>
  </div>
</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71735364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档