1

我们有一个问题,我们需要一个包含动态内容的 div 列表。每行总是有 2 个 div。这两个元素应该具有相同的高度。

目前我们有一个使用 JavaScript 设置盒子高度的解决方案,但它的性能不是很好,因为它会在每次调整大小时重新计算大小(响应式设计)。

有没有固定高度值的解决方案?

重要提示:盒子仍然需要填充,并且填充需要以百分比为单位(目前 div 上的边距为 4%)

jsfiddle:http: //jsfiddle.net/6dmwU/

<div class="boxes">
    <div class="box-wrapper">
        <div class="box" style="height: 203px;">
            <p class="box-title">Lorem Vulputate</p>
            <p>On corerias sunturero in cullabore dolestionet apid utatur On corerias sunturero in cullabore dolestionet apid utatur</p>
        </div>
        <div class="box" style="height: 203px;">
            <p class="box-title">Egestas Pharetra</p>
            <p>On corerias sunturero in cullabore dolestionet apid utatur</p>
        </div>
    </div>
    <div class="box-wrapper">
        <div class="box" style="height: 151px;">
            <p class="box-title">Vulputate Egestas</p>
            <p>On corerias sunturero in cullabore dolestionet apid utatur</p>
        </div>
        <div class="box" style="height: 151px;">
            <p class="box-title">Egestas Pharetra</p>
            <p>On corerias sunturero in cullabore dolestionet apid utatur</p>
        </div>
    </div>
</div>

任何帮助将不胜感激

4

4 回答 4

2

您可以为此使用 flex 模型:

.boxes .box 
{
    margin-left: 2%;
    margin-bottom: 2%;
    width: 50%;
    padding: 4%;
    border: 1px solid #b6b6b6;
    border: 0.0625rem solid #b6b6b6;
    box-sizing: border-box;
}

.box-wrapper
{
    width: 100%;
    display: -webkit-box;
    display: -moz-box;
    display: -webkit-flexbox;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
}

jsFiddle

这样每一行都将是最高子元素的高度。然而,对此的支持是有限的。

因此,如果您不想使用此方法,则可以将结构转换为表结构。这样每一行都将是最高子元素的高度。

.boxes .box 
{
    display: table-cell;
    margin-left: 2%;
    margin-bottom: 2%;
    width: 50%;
    padding: 4%;
    border: 1px solid #b6b6b6;
    border: 0.0625rem solid #b6b6b6;
    box-sizing: border-box;

}

.box-wrapper
{
    display: table-row;
}

.boxes
{
    display: table;
    border-collapse: separate;
    border-spacing: 5px;
}

因为边距在表格单元格之间不起作用,所以我用来border-spacing定义单元格之间的分隔。

jsFiddle

于 2013-11-13T11:32:04.650 回答
1

尝试这个

.boxes .box {
    float: left;
    margin-left: 2%;
    margin-bottom: 2%;
    width: 38%;
    padding: 4%;
    border: 1px solid #b6b6b6;
    border: 0.0625rem solid #b6b6b6;
    box-sizing: border-box;
    display:inline-block
}
.box-wrapper,.boxes{
        display:inline-block;
        width:100%;
}

小提琴

于 2013-11-13T11:17:34.030 回答
0

看看这个小提琴你可以使用display:table-cell;

CSS:

.row {
    display: table;
    width: 100%;
}
.left {
    width:50%;
    background: blue;
    display:table-cell;
}
.right {
    width:50%;
    background: red;
    display:table-cell;
}

HTML

<div class='row'>
    <div class='left'>

"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."

    </div>
    <div class='right'>

"At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos

    </div>    
</div>
于 2013-11-13T11:13:08.133 回答
0

我使用 flexbox,它很神奇 ^^:

HTML

<div class="boxes">
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
</div>

CSS

.boxes {
  display: flex;
  flex-wrap: wrap;
}
.box {
   margin: 0 1% 1% 0;
   width: 48%;
}

CODEPEN 演示

css-trick上的 flexbox 完整指南

于 2019-06-13T18:17:19.710 回答