具有多个侧边栏的Flexbox响应式布局
问题描述:
有没有什么方法可以使用flexbox拥有5个元素,其中4个是容器宽度为75%
,然后是4号是25%
,并显示为侧栏?具有多个侧边栏的Flexbox响应式布局
最终我想把项目3变成第二个边栏。
移动
|_container 1_|
|_container 2_|
|_container 3_|
|___sidebar___|
|_container 4_|
桌面
|_container 1_|_sidebar_|
|_container 2_| |
|_container 3_| |
|_container 4_| |
大型桌面
|_container 1_|_container 4_|_sidebar_|
|_container 2_| | |
|_container 3_| | |
答
这是我尝试通过Flexbox实现了布局,在下面的例子中调整输出面板看效果:
<div class="wrapper">
<div class="item container-1">Container 1</div>
<div class="wrapper group">
<div class="item container-2">Container 2</div>
<div class="item container-3">Container 3</div>
</div>
<aside class="item sidebar">Sidebar</aside>
<div class="item container-4">Container 4</div>
</div>
* { box-sizing: border-box; }
.wrapper { display: flex; flex-flow: row wrap; }
.item { text-align: center; padding: .3em; }
.group, .item { flex: 1 100%; }
/* Medium devices */
@media (min-width: 768px) {
.item { flex: 0 75%; }
.container-1 { order: -2; flex: 1 auto; }
.sidebar { order: -1; flex: 0 25%; }
}
/* Large devices */
@media (min-width: 992px) {
.item { flex: 1 50%; }
.container-1 { order: -3; flex: 1 auto; }
.container-4 { order: -2; flex: 0 25%; }
.sidebar { order: -1; flex: 0 25%; }
.group { flex: 0 50%; }
}
注:需要供应商前缀支持早期版本的web浏览器,如IE10 (但不一样古老IE9!)。我在demo(感谢Codepen!)中使用了Autoprefixer!如果您点击“切换编译视图”,您将看到CSS声明的前缀版本。
您可能还想要更改@media
查询的断点以符合您的需求。
最后但并非最不重要的,如果你不熟悉CSS Flexible Box Layout,你可以参考以下资源:
+0
侧边栏可以做成全高? – Noah 2015-12-06 10:18:10
我确定有,但是SO指导方针建议您先尝试一下,我们可以协助您解决任何您无法完成的任务。尝试制作一个[**示例**](http://*.com/help/mcve) – 2014-08-31 17:40:28