我遇到了2x2的问题,我试图使用flexbox实现。我试图实现这样的目标。
每个网格都应包含相同数量的填充。此外,还需要在内部添加边框。 (在网格内,像十字架)
这是我提出的代码,但它无法正常运行。
HTML
<div class="info-box">
<div class="info-item grid1"></div>
<div class="info-item grid2"></div>
<div class="info-item grid3"></div>
<div class="info-item grid4"></div>
</div>
CSS
.info-box {
margin: 2rem auto 0 auto;
text-align: center;
display: flex;
flex-wrap: wrap;
flex-flow: row wrap;
flex-direction: column;
.info-item {
flex: 1 1 calc(50%);
background: $light;
&:nth-child(odd) {
flex: 0 0 50%;
}
}
}
如何在这些单独的4个网格中包含一些文本并在其周围添加一些填充。我也试图在里面添加边框。任何人都可以帮助我吗?
答案 0 :(得分:2)
您可以使用内部元素上的border
和容器上的padding
来简单地实现交叉。也不需要指定弹性方向,因为它应该是row
(默认值)。不要忘记添加box-sizing: border-box
以避免任何溢出问题。
所以你可以尝试这样的事情:
* {
box-sizing: border-box;
}
.info-box {
margin: 2rem auto 0 auto;
text-align: center;
display: flex;
flex-wrap: wrap;
border:1px solid;
padding:50px;
}
.info-item {
flex: 1 1 50%;
min-height: 100px;
padding:50px;
}
.grid1 {
border-right:1px solid;
border-bottom:1px solid;
}
.grid2 {
border-bottom:1px solid;
border-left:1px solid;
}
.grid3 {
border-top:1px solid;
border-right:1px solid;
}
.grid4 {
border-left:1px solid;
border-top:1px solid;
}
<div class="info-box">
<div class="info-item grid1">1</div>
<div class="info-item grid2">2</div>
<div class="info-item grid3">3</div>
<div class="info-item grid4">4</div>
</div>
或者另一种避免使用border的解决方案是使用这样的伪元素:
* {
box-sizing: border-box;
}
.info-box {
margin: 2rem auto 0 auto;
text-align: center;
display: flex;
flex-wrap: wrap;
border:1px solid;
padding:50px;
position:relative;
}
.info-box:before {
content:"";
position:absolute;
background:#000;
width:2px;
right:50%;
margin-right:-1px;
top:50px;
bottom:50px;
}
.info-box:after {
content:"";
position:absolute;
background:#000;
height:2px;
top:50%;
margin-top:-1px;
left:50px;
right:50px;
}
.info-item {
flex: 1 1 50%;
min-height: 100px;
padding:50px;
}
<div class="info-box">
<div class="info-item grid1">1</div>
<div class="info-item grid2">2</div>
<div class="info-item grid3">3</div>
<div class="info-item grid4">4</div>
</div>