【发布时间】:2018-09-04 13:40:18
【问题描述】:
我正在尝试对齐三个 div 的内容,以便图像、标题和文本的 开头(因为我没有说清楚而改变)水平排列,并且图像偏移,如图所示。我尝试了一些方法(包括将图像包装器设置为固定大小),但是当我更改浏览器的大小时,它们似乎都不能很好地缩放 - 通常会导致文本和图像之间的间隙大小也发生变化很多而且看起来很奇怪。
这是我要排队的设计:
问题是每个图像的大小都基于其容器的宽度。如果我设置了一个图像包装高度(蓝色边框),为了对齐它下面的文本,当浏览器变小和/或变大时会导致问题。例如,在较小的浏览器尺寸下,相同的固定包装器高度会发生这种情况:
这种类型的布局/设计是否有最佳实践或其他东西?
我创建了一个代码笔来更清楚地显示问题,here
.container {
position: relative;
display: flex;
justify-content: space-around;
width: 100%;
top: 15rem;
}
.card {
display: flex;
flex-direction: column;
align-items: center;
width: 32%;
border: 1px solid red;
}
.card-image-wrapper {
border: 1px solid blue;
transform: translateY(-5rem);
/*height: 20rem; can use this to align the text, but it doesn't scale well */
}
.wrapper-1 {
width: 50%;
}
.wrapper-2 {
width: 25%;
}
.wrapper-3 {
width: 38%;
}
.card-image {
width: 100%;
}
<div class="container">
<div class="card">
<div class="card-image-wrapper wrapper-1">
<img src="https://cdn.inquisitr.com/wp-content/uploads/2016/08/Zombieland-Writers-Explain-How-They-Secured-Bill-Murray-For-That-Legendary-Cameo3-670x388.jpg" class="card-image">
</div>
<div class="card-heading">Heading</div>
<div class="card-text">Lorem ipsum dolor sit amet consectetur adipisicing elit. Doloremque neque quisquam omnis incidunt laborum delectus deleniti, aliquid magnam, sit, autem eos perferendis saepe iure aut provident minus molestiae similique! Eveniet debitis accusamus,
rerum illo dicta at atque quidem, ratione laboriosam doloribus, tempore optio nostrum vel sit. Fuga ipsam beatae doloremque.</div>
</div>
<div class="card">
<div class="card-image-wrapper wrapper-2">
<img src="https://d919ce141ef35c47fc40-b9166a60eccf0f83d2d9c63fa65b9129.ssl.cf5.rackcdn.com/images/76053.max-620x600.jpg" class="card-image">
</div>
<div class="card-heading">Heading</div>
<div class="card-text">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Dicta, ullam accusantium deserunt optio laborum nobis voluptates dolorem maxime ad omnis dolorum. Nisi esse maiores necessitatibus omnis voluptatem repudiandae obcaecati maxime dolores, cumque
quod pariatur magni sunt incidunt rem voluptatum commodi laborum odio vel? Quisquam culpa a praesentium eligendi aut totam commodi ab eius quis, eos, animi, amet minus debitis unde.</div>
</div>
<div class="card">
<div class="card-image-wrapper wrapper-3">
<img src="https://d2npu017ljjude.cloudfront.net/images/regular-43/w735/92783-11.jpg" class="card-image">
</div>
<div class="card-heading">Heading</div>
<div class="card-text">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Id molestias distinctio recusandae impedit iste ipsum, mollitia non laudantium incidunt saepe omnis error natus exercitationem alias quas in, nobis sed aliquam minima adipisci amet magnam.
Perferendis nostrum, dicta consequatur odit aliquid placeat sequi porro fuga enim?</div>
</div>
</div>
编辑:为了清楚起见,我正在尝试使标题和文本水平对齐。我稍后会添加第二张图片
【问题讨论】:
-
如果您使用负边距顶部而不是平移变换有帮助吗? (即
margin-top: -5rem;)。翻译转换仍然会让元素占用 DOM 中的空间,就好像它没有偏移一样 -
.card-image { 宽度:100%;高度:150px;垂直对齐:中间; }
-
zgood:这可能值得我这样做,纯粹是因为 dom 中的空间,但我不确定这是否有助于文本排列。会看看。谢谢
-
stalinrajindian:不幸的是,它并没有保留图像纵横比