如何在没有 space-between 的情况下在两侧之间制作 space
How to make a space between two side without space-between
我正在制作响应式菜单,
<div style={{ display: "flex", flexFlow: "row wrap" }}>
{/* left side */}
<div key="1">nav 1</div>
<div key="2">nav 2</div>
<div key="3">nav 3</div>
{/* left side */}
{/* right side */}
<div key="4">nav 4</div>
<div key="5">nav 5</div>
<div key="6">nav 6</div>
{/* right side */}
</div>
我想在两侧之间有一个 space,但它仍然可以包裹每个元素。
像这样:
我不知道这个,谢谢你的帮助!
您可以在包装器中注入一个伪元素并设置它的 order
使其位于第 3 和第 4 div 之间;并设置 flex-grow: 1
:
#wrapper {
display: flex;
flex-wrap: wrap;
}
#wrapper > div:nth-child(-n + 3) {
order: 1;
background-color: papayawhip;
}
#wrapper::after {
content: "";
order: 2;
flex-grow: 1;
}
#wrapper > div:nth-child(n + 4) {
order: 3;
background-color: palegoldenrod;
}
<div id="wrapper">
<!-- left -->
<div key="1">nav 1</div>
<div key="2">nav 2</div>
<div key="3">nav 3</div>
<!-- right -->
<div key="4">nav 4</div>
<div key="5">nav 5</div>
<div key="6">nav 6</div>
</div>
所以我使用 float: left/right 而不是 flex。尝试调整浏览器大小以查看结果。
这里有一个 fiddle 可以玩:https://jsfiddle.net/x7f2pvn9/
div.wrapper div {
display: inline;
background: red;
padding: 1rem;
margin: 5px;
width: 40px;
height: 50px;
}
div.left {
float: left;
}
div.right {
float: right;
}
@media only screen and (max-width: 600px) {
div.right {
float: left;
}
}
<div class="wrapper">
<div class="left">1</div>
<div class="left">2</div>
<div class="left">3</div>
<div class="right">4</div>
<div class="right">5</div>
<div class="right">6</div>
</div>
我正在制作响应式菜单,
<div style={{ display: "flex", flexFlow: "row wrap" }}>
{/* left side */}
<div key="1">nav 1</div>
<div key="2">nav 2</div>
<div key="3">nav 3</div>
{/* left side */}
{/* right side */}
<div key="4">nav 4</div>
<div key="5">nav 5</div>
<div key="6">nav 6</div>
{/* right side */}
</div>
我想在两侧之间有一个 space,但它仍然可以包裹每个元素。
像这样:
我不知道这个,谢谢你的帮助!
您可以在包装器中注入一个伪元素并设置它的 order
使其位于第 3 和第 4 div 之间;并设置 flex-grow: 1
:
#wrapper {
display: flex;
flex-wrap: wrap;
}
#wrapper > div:nth-child(-n + 3) {
order: 1;
background-color: papayawhip;
}
#wrapper::after {
content: "";
order: 2;
flex-grow: 1;
}
#wrapper > div:nth-child(n + 4) {
order: 3;
background-color: palegoldenrod;
}
<div id="wrapper">
<!-- left -->
<div key="1">nav 1</div>
<div key="2">nav 2</div>
<div key="3">nav 3</div>
<!-- right -->
<div key="4">nav 4</div>
<div key="5">nav 5</div>
<div key="6">nav 6</div>
</div>
所以我使用 float: left/right 而不是 flex。尝试调整浏览器大小以查看结果。 这里有一个 fiddle 可以玩:https://jsfiddle.net/x7f2pvn9/
div.wrapper div {
display: inline;
background: red;
padding: 1rem;
margin: 5px;
width: 40px;
height: 50px;
}
div.left {
float: left;
}
div.right {
float: right;
}
@media only screen and (max-width: 600px) {
div.right {
float: left;
}
}
<div class="wrapper">
<div class="left">1</div>
<div class="left">2</div>
<div class="left">3</div>
<div class="right">4</div>
<div class="right">5</div>
<div class="right">6</div>
</div>