【发布时间】:2021-02-09 03:06:26
【问题描述】:
我制作的这个布局似乎可行,唯一的问题是我希望所有 che 填充的 div 都居中。
有三种可能的“状态”:
-
青色元素在所有其他元素的左侧
-
金色和粉色元素位于两列
-
所有元素都在一个列上。
在第一种情况下,所有内容都居中并且可以正常工作,而在其他两种情况下则不行:元素始终向左对齐。
为了居中,我正在考虑使用margin: 0 auto,但即使I used inline-flex 似乎div 也比它们的内容大(查看运行示例中状态#3 的灰色区域)。为什么?
我该如何解决?
.container {
outline: 1px solid black;
max-width: 490px;
margin: 0 auto;
}
.columns {
outline: 1px solid black;
display: inline-flex;
flex-wrap: wrap;
}
.map {
background-color: cyan;
width: 150px;
min-width: 150px;
height: 150px;
min-height: 150px;
margin-right: 20px;
}
.content {
outline: 1px solid black;
background-color: lightgray;
max-width: 320px;
}
.cards {
outline: 1px solid black;
display: inline-flex;
flex-wrap: wrap;
}
.card {
background-color: pink;
outline: 1px solid black;
width: 150px;
height: 70px;
display: inline-block;
}
.card.left {
margin-right: 20px;
}
.texts {
outline: 1px solid black;
display: inline-flex;
flex-wrap: wrap;
}
.text {
background-color: gold;
outline: 1px solid black;
width: 150px;
height: 200px;
display: inline-block;
}
.text.left {
margin-right: 20px;
}
<div class="container">
<div class="columns">
<div class="map"></div>
<div class="content">
<div class="cards">
<div class="card left">card #1</div>
<div class="card">card #2</div>
<div class="card left">card #3</div>
<div class="card">card #4</div>
</div>
<div class="texts">
<div class="text left">text #1</div>
<div class="text">text #2</div>
</div>
</div>
</div>
</div>
【问题讨论】:
-
您是否已经考虑过使用 CSS 网格?对我来说,总体而言,这似乎是一个更好、更容易的解决方案。
-
不完全确定你想要什么。这? jsfiddle.net/ghL8qb71
-
@MichaelBenjamin 谢谢迈克尔,但你的例子不能如我所愿。我添加了 3 张图片,结果符合我的预期。
-
@tacoshy 谢谢你的提示,你有什么例子可以告诉我一些类似于我想要的东西吗?我在主信息中添加了 3 张图片
-
您可以更改 HTML 结构还是需要当前的结构?
标签: html css flexbox centering