【发布时间】:2021-09-01 17:55:27
【问题描述】:
我正在写一个页面来显示收据。它有以下列:
- 产品图片。
- 说明。
- 数量。
- 价格。
我为项目创建了一个 div,并为每列创建了四个 div。我无法垂直对齐列 div(因此描述、数量和价格与图像垂直居中)。
我创建了一个小小提琴来显示我在哪里 - https://jsfiddle.net/j1dias/hpg32x7b/
我以为我可以使用 display:inline-block 和 vertical-align:center,但它们似乎没有像我预期的那样工作。
我试图避免使用 flexbox。另外我宁愿不必设置高度。
请看下面的html和css。
谢谢。
HTML
<div class="checkout-item">
<div class="checkout-item-image">
<img src="https://picsum.photos/536/354"/>
</div>
<div class="checkout-item-description">
<span>Product name</span>
<br>
<span>Product description</span>
</div>
<div class="checkout-item-qty">
<span>2</span>
</div>
<div class="checkout-item-total-price">
<span>$90.00</span>
</div>
</div>
CSS
.checkout-cart {
background-color: yellow;
padding: 20px;
margin-bottom: 50px;
font-size: 0.9em;
}
.checkout-item {
position: relative;
overflow: hidden;
display: inline-block;
}
.checkout-item-image {
width: 15%;
float: left;
margin-right: 50px;
display: inline-block;
vertical-align: middle;
}
.checkout-item-image img {
vertical-align: middle;
max-width: 100%;
}
.checkout-item-description {
width: 30%;
float: left;
margin-right: 50px;
display: inline-block;
vertical-align: middle;
}
.checkout-item-qty {
width: 5%;
float: left;
margin-right: 50px;
font-size: 1.5em;
font-weight: bold;
text-align: center;
display: inline-block;
vertical-align: middle;
}
.checkout-item-total-price {
width: 5%;
float: left;
font-size: 1.5em;
font-weight: bold;
text-align: right;
display: inline-block;
vertical-align: middle;
}
编辑
我最终遵循了建议并使用了 flexbox。好像大部分浏览器都支持。
我将display:inline-block 更改为display:flexbox。
谢谢。
【问题讨论】:
-
只是出于好奇,你为什么要避免使用 flexbox?
-
@DanMullin 我正在考虑使用 flexbox 的想法。起初我想避免它,因为我担心兼容性。但似乎大多数人都在使用它。 :)
-
自从 CSS 出来后我就一直在写它。当 Flexbox 得到广泛支持时,它改变了生活。我仍然认为网格布局有点冒险。尽管 Flexbox 是可靠的。非常直观。不需要明确的修复或奇怪的浮动魔法来制作漂亮的布局。