javascript - 如何在 Javascript 中使用不均匀的 div 内容制作等高的行?

标签 javascript jquery html css

Working example

注意:我有下面对我有用的 JQuery 代码,但我必须使用 Javascript。 我有一个表,其中有两列。 列的每一行必须具有相同的高度,但每一行不包含完全相同数量的内容。 容器类“row”在第一列有 3 个 div,在第二列有 2 个 div。

这是我的 HTML

        <div class="table">
            <div class="column">
                <div class="row">
                    <div class="value-label">TEXT1</div>
                    <div class="compare-label">TEXT2</div>
                    <div class="comment-label">TEXT3</div>
                </div>
            </div>
            <div class="column">
                <div class="row">
                    <div class="value-label">TEXT1</div>
                    <div class="compare-label">TEXT2</div>
                </div>
            </div>
        </div>

我使用以下 JQuery 函数使行高相同:

                    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
                    <script>
                        jQuery(document).ready(function($) { 
                            var heights = $(".row").map(function() {
                                return $(this).height();
                            }).get(),
                            maxHeight = Math.max.apply(null, heights);
                            $(".row").height(maxHeight);
                            });
                    </script>

我的问题是我的公司不允许使用 JQuery,我在尝试用 Javascript 完成同样的事情时遇到了很多问题。 我需要每列中行的高度相同,无论行内的 div 数量如何,但在 Javascript 中。

更新:忘记补充一点,在某些情况下,3 div 列将恢复为 2 div 列。因此,高度需要根据显示的 div 数量进行更改。这只是一行的示例。我有 5 行跨两列执行此操作。

最佳答案

使用我喜欢使用并推荐其他人使用的 flexbox(CSS3) 布局,只需使用以下 CSS 即可轻松实现上述目标:

.table {
  display: flex; // to initialize flex
  background: lightgrey;
  justify-content: center; // horizontally centers its child contents
}

.table .column {
  border: 1px solid black;
  flex-basis: 40%; // used similar to width property
  display: flex;
  justify-content: center;
}

.table {
  display: flex;
  background: lightgrey;
  justify-content: center;
}

.table .column {
  border: 1px solid black;
  flex-basis: 40%;
  display: flex;
  justify-content: center;
}
<div class="table">
  <div class="column">
    <div class="row">
      <div class="value-label">TEXT1</div> 
      <div class="compare-label">TEXT2</div> 
      <div class="comment-label">TEXT3</div>
    </div>
  </div>
  <div class="column">
    <div class="row">
      <div class="value-label">TEXT1</div>
      <div class="compare-label">TEXT2</div>
    </div>
  </div>
</div>

关于javascript - 如何在 Javascript 中使用不均匀的 div 内容制作等高的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44159385/

相关文章:

javascript - 为什么此 jQuery 代码仅适用于一次迭代?

asp.net - 如何用 mvc4 actionlink 列表替换列表

html - 使用 box-sizing 有什么已知的问题吗?

JavaScript 和 HTML 表单验证

javascript - 使用 JavaScript 在浏览器上拖放控件

javascript - 如何将此 else if 语句转换为 switch 语句?

jquery 文件上传插件 : How to change the upload path?

javascript - 如何使用jquery分割输入值?

javascript - 如何使用缓冲区对象作为 Ffmpeg 的源输入

html - 即使悬停在链接上,如何保持自定义光标?