我试图将一堆不同高度的徽标垂直对齐。它们位于一个水平居中的列表中。
https://jsfiddle.net/mtcruere/8/
.container {
width: 800px;
margin: 20px auto;
}
ul {
list-style: none;
margin: 0;
padding: 0;
text-align: center;
}
li {
display: inline-block;
margin-left: 15px;
margin-right: 15px;
}
li > div {
display: flex;
justify-content: center;
align-items: center;
height: 105px;
}
img {
max-width: 100%;
}

<div class="container">
<ul>
<li><div><img src="http://placehold.it/142x39"></div></li>
<li><div><img src="http://placehold.it/181x87"></div></li>
<li><div><img src="http://placehold.it/157x45"></div></li>
<li><div><img src="http://placehold.it/161x35"></div></li>
<li><div><img src="http://placehold.it/162x75"></div></li>
<li><div><img src="http://placehold.it/186x85"></div></li>
<li><div><img src="http://placehold.it/140x52"></div></li>
</ul>
</div>
&#13;
我有什么想法可以解决这个问题吗?
答案 0 :(得分:3)
也可以vertical-align: middle;
元素使用li
。
li {
display: inline-block;
margin-left: 15px;
margin-right: 15px;
vertical-align: middle;
}
<强> DEMO 强>
答案 1 :(得分:2)
为vertical-align: middle;
添加li
这将使div
成为中间
.container {
width: 800px;
margin: 20px auto;
}
ul {
list-style: none;
margin: 0;
padding: 0;
text-align: center;
}
li {
display: inline-block;
margin-left: 15px;
margin-right: 15px;
vertical-align: middle;
}
li > div {
display: flex;
justify-content: center;
align-items: center;
height: 105px;
}
img {
max-width: 100%;
}
<div class="container">
<ul>
<li><div><img src="http://placehold.it/142x39"></div></li>
<li><div><img src="http://placehold.it/181x87"></div></li>
<li><div><img src="http://placehold.it/157x45"></div></li>
<li><div><img src="http://placehold.it/161x35"></div></li>
<li><div><img src="http://placehold.it/162x75"></div></li>
<li><div><img src="http://placehold.it/186x85"></div></li>
<li><div><img src="http://placehold.it/140x52"></div></li>
</ul>
</div>
更多选项: -
为vertical-align: top;
添加li
(也适用)这将使div
处理垂直对齐
<强>解释: - 强>
你在div中给了
display: flex;
(这就是为什么vertical-align: top;
有效)。它照顾好了 垂直对齐中间。所以你不需要手动对齐它li
。默认情况下li
需要vertical-align:baseline
。所以要防止它 我们必须把它改成顶部(中间)
.container {
width: 800px;
margin: 20px auto;
}
ul {
list-style: none;
margin: 0;
padding: 0;
text-align: center;
}
li {
display: inline-block;
margin-left: 15px;
margin-right: 15px;
vertical-align: top;
}
li > div {
display: flex;
justify-content: center;
align-items: center;
height: 105px;
}
img {
max-width: 100%;
}
<div class="container">
<ul>
<li><div><img src="http://placehold.it/142x39"></div></li>
<li><div><img src="http://placehold.it/181x87"></div></li>
<li><div><img src="http://placehold.it/157x45"></div></li>
<li><div><img src="http://placehold.it/161x35"></div></li>
<li><div><img src="http://placehold.it/162x75"></div></li>
<li><div><img src="http://placehold.it/186x85"></div></li>
<li><div><img src="http://placehold.it/140x52"></div></li>
</ul>
</div>
答案 2 :(得分:1)
你只需要将这三个css属性添加到ul ... {align-items:center;辩解内容:中心; flex-wrap:wrap;}
.container {
width: 800px;
margin: 20px auto;
}
ul {
list-style: none;
margin: 0;
padding: 0;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
flex-wrap: wrap;
}
li {
display: flex;
margin-left: 15px;
margin-right: 15px;
}
li > div {
display: flex;
justify-content: center;
align-items: center;
height: 105px;
}
img {
max-width: 100%;
}
<div class="container">
<ul>
<li><div><img src="http://placehold.it/142x39"></div></li>
<li><div><img src="http://placehold.it/181x87"></div></li>
<li><div><img src="http://placehold.it/157x45"></div></li>
<li><div><img src="http://placehold.it/161x35"></div></li>
<li><div><img src="http://placehold.it/162x75"></div></li>
<li><div><img src="http://placehold.it/186x85"></div></li>
<li><div><img src="http://placehold.it/140x52"></div></li>
</ul>
</div>
答案 3 :(得分:0)
替换
li {
display: inline-block; <<
margin-left: 15px;
margin-right: 15px;
}
与
li {
display: block; <<
margin-left: 15px;
margin-right: 15px;
}
答案 4 :(得分:0)
与上面相比,您可以使用更简单的html结构来实现它。请考虑以下标记:
<ul class="container">
<li><img src="http://placehold.it/161x35"></li>
<li><img src="http://placehold.it/162x75"></li>
....
....
<li><img src="http://placehold.it/162x75"></li>
</ul>
并使用以下样式进行其他调整:
ul {
justify-content: center;
flex-wrap: wrap;
display: flex;
}
li {
align-content: center;
align-items: center;
display: flex;
height: 105px;
}
ul.container {
justify-content: center;
margin: 20px auto;
list-style: none;
flex-wrap: wrap;
display: flex;
max-width: 800px;
padding: 0;
}
li {
align-content: center;
align-items: center;
margin: 0 15px;
display: flex;
height: 105px;
}
img {
max-width: 100%;
}
&#13;
<ul class="container">
<li><img src="http://placehold.it/142x39"></li>
<li><img src="http://placehold.it/181x87"></li>
<li><img src="http://placehold.it/157x45"></li>
<li><img src="http://placehold.it/161x35"></li>
<li><img src="http://placehold.it/162x75"></li>
<li><img src="http://placehold.it/186x85"></li>
<li><img src="http://placehold.it/140x52"></li>
</ul>
&#13;
答案 5 :(得分:0)
你需要的只是代码Snippest
-fsanitize=bounds-stric
li{
width : 200px;
display : inline-block;
vertical-align : middle;
text-align : center;
}