【发布时间】:2018-10-02 18:43:23
【问题描述】:
我正在尝试使用 align-content: center 将 div 与 flexbox 垂直对齐。它在 Firefox 和 IE 中运行良好,但在 Chrome 中不能垂直对齐。在 Chrome 中,div 始终位于顶部。
<div class="products-wrapper">
<div class="product">
<img src="images/temporary.jpg" alt="Temporary">
<h3>Title</h3>
<p>Text.</p>
</div>
<div class="product">
<img src="images/temporary.jpg" alt="Temporary">
<h3>Title</h3>
<p>Text.</p>
</div>
<div class="product">
<img src="images/temporary.jpg" alt="Temporary">
<h3>Title</h3>
<p>Text.</p>
</div>
</div>
还有 CSS:
.products-wrapper {
width: 100%;
min-height: 100vh;
/* FLEX */
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
align-content: center;
}
.product {
max-width: 250px;
padding: 10px;
}
.product img {
display: block;
margin: 0 auto;
max-height: 250px;
max-width: 250px;
}
我也一直在尝试 align-items: center; 将 div 垂直居中,但如果我有不同数量的文本,它不会与图像和文本成一条直线。
任何人有解决方案如何垂直居中 div(直线),适用于所有浏览器?
图片示例:
编辑:如果您不需要动态高度,align-items: center; 将与(例如)max-height : 400px; 在 .product div 上。虽然不是我想要的。
【问题讨论】:
-
我发现问题不在于
product元素的 align 方式不同,而是它们在 Chrome 中获得了 100% 的高度。还不知道为什么。 -
看来如果你将高度设置为 .product 你会解决它?
-
@A.Meshu 如果你知道产品的高度需要多少,当然可以。
-
@A.Meshu 是的,如果高度是一成不变的,它就可以工作。但必须有更好的动态解决方案。
-
由于文本的数量在动态变化,我想不出别的办法,只能设置它(并处理溢出等)。
标签: css flexbox vertical-alignment text-align