首先,你需要在你想怎麼組的元素決定。這兩種解決方案都使用Flexbox。您可以使用display: table/table-row/table-cell
元素重新創建此元素,但需要額外元素才能完成此操作。
(1,1,2)((3,5),4)
這種分組有道理的,如果元件1,1,和圖2是一個頭部元件的一部分。
http://codepen.io/cimmanon/pen/kihgd
標記:
<div class="container">
<header class="group1">
<div class="a">
1
</div>
<div class="a">
1
</div>
<div class="b">
2
</div>
</header>
<div class="group2">
<div class="group2a">
<article class="c">
3
</article>
<footer class="e">
5
</footer>
</div>
<aside class="d">
4
</aside>
</div>
</div>
CSS:
body, html {
height: 100%;
}
.container {
display: flex;
flex-direction: column;
height: 100%;
}
/* group 1, the header */
header.group1 {
display: flex;
height: 10em;
background: yellow;
padding: .5em;
}
.a {
flex: 1 auto;
background: aqua;
margin: .5em;
}
.b {
width: 10em;
background: grey;
margin: .5em;
}
/* group 2 */
.group2 {
display: flex;
flex: 1;
margin: .5em;
}
.group2a {
display: flex;
flex-direction: column;
flex: 1;
}
article.c {
flex: 1;
background: pink;
margin: .5em;
}
footer.e {
height: 5em;
background: green;
margin: .5em;
}
aside.d {
width: 10em;
background: olive;
margin: .5em;
}
((1,1),3,5),(2,4)
這種分組如果元素2和4是邊欄的一部分,則是合理的。這個分組只需要很少的修改就可以適應更窄的視口:只需隱藏.container
上的顯示屬性即可。
http://codepen.io/cimmanon/pen/GCrFa
標記:
<div class="container">
<header class="group1">
<div class="a">
1
</div>
<div class="a">
1
</div>
<div class="b">
2
</div>
</header>
<div class="group2">
<div class="group2a">
<article class="c">
3
</article>
<footer class="e">
5
</footer>
</div>
<aside class="d">
4
</aside>
</div>
</div>
CSS:
body, html {
height: 100%;
margin: 0;
padding: 0;
}
.container {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-orient: vertical;
-moz-box-orient: vertical;
-webkit-box-direction: normal;
-moz-box-direction: normal;
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column;
height: 100%;
}
/* group 1, the header */
header.group1 {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
height: 10em;
background: yellow;
padding: .5em;
border: 1px solid;
}
.a {
-webkit-box-flex: 1;
-moz-box-flex: 1;
-webkit-flex: 1 auto;
-ms-flex: 1 auto;
flex: 1 auto;
background: aqua;
margin: .5em;
}
.b {
width: 10em;
background: grey;
margin: .5em;
}
/* group 2 */
.group2 {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-flex: 1;
-moz-box-flex: 1;
-webkit-flex: 1;
-ms-flex: 1;
flex: 1;
padding: .5em;
border: 1px solid;
}
.group2a {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-orient: vertical;
-moz-box-orient: vertical;
-webkit-box-direction: normal;
-moz-box-direction: normal;
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-flex: 1;
-moz-box-flex: 1;
-webkit-flex: 1;
-ms-flex: 1;
flex: 1;
}
article.c {
-webkit-box-flex: 1;
-moz-box-flex: 1;
-webkit-flex: 1;
-ms-flex: 1;
flex: 1;
background: pink;
margin: .5em;
}
footer.e {
height: 5em;
background: green;
margin: .5em;
}
aside.d {
width: 10em;
background: olive;
margin: .5em;
}
瀏覽器支持應該包括鉻,歌劇,火狐(通常需要添加顯式寬度的任何地方display: -moz-box
使用), IE10,Safari。http://caniuse.com/flexbox
是否有元素必須在的特定源順序?或者是什麼都可以工作好嗎? – cimmanon
無論什麼作品都OK :)我不知道從哪裏開始,或者人們如何解決這樣的問題。 – T3rm1
你能找到一個或兩個你正在尋找的東西嗎?這樣的事情呢? http://beta2.mybattlereport.com/collective.php – ntgCleaner