我使用flex框创建表格视图。 但不像html表格,其中行是单元格(列)的容器,我需要列作为容器。对齐flex表中的行高度
这个要求完全来自响应式设计,当在较小的屏幕上时,可以在彼此堆叠的行上封装行。
列数和行数将是已知的,但行内的内容将不同,因此行高将在相邻列上不同。
我无法通过纯CSS获取行高度。我试过不同的flexbox解决方案,但都没有提供100%的解决方案。我试图避免JS解决方案。
我能够得到的最接近的结果是使用基于flex和flex-grow的属性,但必须为flex基础赋予任意值,并且使得某些单元格比它们必须大得多。另外flex框开始重叠下面的内容。
见我的小提琴:https://jsfiddle.net/k6bfyv1p/
$(function() {
$('#fix1').click(fix1Clicked);
function fix1Clicked() {
\t // Add or remove fix1 class to content-table div.
var cssClass = 'fix1';
var $button = $(this);
var $table = $('.content-table');
var hasFix1 = $table.hasClass(cssClass);
if (hasFix1) {
$table.removeClass(cssClass);
$button.html('Apply Fix1');
}
else {
$table.addClass(cssClass);
$button.html('Remove Fix1');
}
}
});
/*** FIX 1 ***/
.fix1 .row {
flex-grow: 1;
flex-shrink: 0;
flex-basis: 50%;
}
/*** Main CSS ***/
.content-table {
width: 500px;
display: flex;
flex-direction: row;
}
.col {
display: flex;
flex-direction: column;
width: 33.3%;
}
.row {
display: flex;
}
.row1 {
background-color: #d0d0d0;
}
.row2 {
background-color: #d0f0d0;
}
.row3 {
background-color: #d0d0f0;
}
.row4 {
background-color: #f0d0d0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h3>Known (constant) properties of the table:</h3>
<ul>
<li>Number of columns</li>
<li>Number of rows</li>
</ul>
<button type="button" id="fix1">Apply Fix1</button>
<br><br>
<div class="content-table">
<div class="col col1">
<div class="row row1">
Column 1 Row 1
</div>
<div class="row row2">
Column 1<br />Row 2
</div>
<div class="row row3">
Column 1 Row 3
</div>
<div class="row row4">
Column 1<br /><br /><br /><br />Row 4
</div>
</div>
<div class="col col2">
<div class="row row1">
Column 2<br /><br /><br />Row 1
</div>
<div class="row row2">
Column 2<br/>Row 2
</div>
<div class="row row3">
Column 2<br /><br/>Row 3
</div>
<div class="row row4">
Column 2 Row 4
</div>
</div>
<div class="col col3">
<div class="row row1">
Column 3<br />Row 1
</div>
<div class="row row2">
Column 3<br/><br/>Row 2
</div>
<div class="row row3">
Column 3<br />Row 3
</div>
<div class="row row4">
Column 3<br>Row 4
</div>
</div>
</div>
<p>
Lorem ipsum dolor sit amet, modus invidunt intellegam pri te, possit tritani id nec. Cu summo oratio honestatis per. Eum essent accumsan qualisque id. Animal molestie mel te, nec at elit fierent omittam, nec option fabulas ea. Iudico moderatius ad usu, eu modo melius qui, homero malorum usu no.
Lorem ipsum dolor sit amet, modus invidunt intellegam pri te, possit tritani id nec. Cu summo oratio honestatis per. Eum essent accumsan qualisque id. Animal molestie mel te, nec at elit fierent omittam, nec option fabulas ea. Iudico moderatius ad usu, eu modo melius qui, homero malorum usu no.
</p>
令人惊叹的,谢谢!修改建议修正:https://jsfiddle.net/h0ykgnyp/1/ – Patrick