我希望从Bootstrap复制flexbox
网格系统。除了媒体查询部分之外,其他所有功能都很好。
这些列很好地水平堆叠,但是当激活特定的媒体断点时,我想将div堆叠在新行上。
我想我可以使用jQuery来做到这一点,但我想尝试首先使用纯css
来实现。我试图查看Bootstrap的源文件,但没有太多意义。
.row {
overflow: hidden;
display: flex;
width: 100%;
background-color: burlywood;
height: auto;
}
.row > .col {
padding: 14px;
border: 2px solid black;
flex: 1 1 auto;
}
.col-md-4 {
padding: 14px;
border: 2px solid black;
flex: 1 1 33.33333%;
@media (max-width: 768px) {
.col-md-4 {
//code wanted
}
}
<div class="row">
<div class="col-md-4" style="background-color:burlywood;">MyColumn 1</div>
<div class="col-md-4" style="background-color:chartreuse;">MyColumn 2</div>
<div class="col" style="background-color:crimson;">MyColumn 3</div>
<div class="col" style="background-color:crimson;">MyColumn 4</div>
</div>
内联样式仅用于测试目的。
答案 0 :(得分:2)
您在另一个css
规则中包含了媒体查询声明。
一个简单的解决方案是更改.row
本身的堆叠方向。
编辑:
如果您只是想学习,那很好。但是,如果要在生产环境中使用它,我建议您从引导程序中仅复制网格定义,而不要重新发明轮子。
此外,要知道引导程序首先是移动的。您最初的示例不是。我在下面添加的是flex-wrap
和通配符*
的{{1}}属性。那是最神奇的东西。
box-sizing
*{box-sizing: border-box;} /* borders will break your layout without this */
.row {
display: flex;
width: 100%;
background-color: burlywood;
height: auto;
flex-wrap: wrap; /*this is how columns 'wrap' on smaller devices */
}
.row>.col {
padding: 14px;
flex: 1 1 auto;
}
.col-md-4 {
padding: 14px 0;
border: 2px solid black;
width: 100%;
}
@media (min-width: 768px) {/*bootstrap uses media queries for larger screens, not smaller */
.col-md-4 {
-webkit-box-flex: 0;
-ms-flex: 0 0 33.333333%;
flex: 0 0 33.333333%;
max-width: 33.333333%;
}
}