html - 让子元素在父元素高度之间平分

标签 html css

我知道您可以让一个元素的子元素平分父元素的宽度,以便每个元素具有相同的宽度,并用以下内容填充整个父元素的宽度:

#parent {
    display: table;
    table-layout: fixed;
}
.child {
    display: table-cell;
}

但是,我想知道是否有办法在 child 之间平均分配高度我搜索了 Google 并试图自己找出答案,但想出了什么都没有。

Javascript 和 jQuery 都可以使用,如果需要,几乎可以使用任何其他库。

编辑: child 的数量未知。

编辑 2: 我用 jQuery 找到了自己的解决方案( children 有类 item):

$(".item").css("height", (100 /  $(".item").length) + "%");

它的工作方式似乎与下面描述的柔性盒模型相同。

最佳答案

柔性盒模型(caniuse.com)

最好的解决方案是在 IE 10- 中工作的解决方案。

那么这是如何工作的,采用以下 HTML:

<div id="container">
     <div class="box"></div>
     <div class="box"></div>
     <div class="box"></div>
</div>

你会这样做(解释见下文)

#container{
     display: flex; /* add -webkit and -ms prefixes yourself */
     flex-direction: column;
}
.box{
     flex-grow: 1;
}

因此,我什至不打算详细解释 flexbox 的工作原理,而是解释这段代码。 display:flex 将容器设置为将其子项设置为 flexbox 。接下来 flex-direction: column 使它水平而不是垂直工作,flex-grow: 1 使所有 child 大小相等。如果一个人有 flex-grow:2, children 会这样安排,其中一个会是其他 child 的两倍。

替代方式

在任何浏览器中都可以使用的替代方法当然是在输出代码时计算元素并简单地设置内联 style="height: n%" 或者如果出于某种原因你'你绝对受客户端代码的约束,你总是可以只计算元素的数量,然后设置高度(给出一些类似 $(".box").css("height", Math.floor( 1/$(".box").length * 100) + "px")).

关于html - 让子元素在父元素高度之间平分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24111682/

相关文章:

javascript - Bootstrap 文本中心不适用于按钮

javascript - 如何使用 jquery/javascript 从打印预览中获取输入值

jquery - 使用 jQuery 将 JSON 值加载到 DIV 中

css - 如何设置选择框的样式以从所选选项继承其颜色?

php - 将链接添加到 wordpress 短代码中

javascript - Material-UI Dialog 如何在对话框的右上角放置关闭按钮

jquery - Rails 4,设置 CSS 背景图片

javascript - Html css 在图像右侧对齐

javascript - 从服务器加载已经存在的 HTML 文件而不是浏览器缓存

将鼠标悬停在工具提示单元格上时,JQuery 工具提示会跳转 gridview 中的行 - 如何防止?