将div向上移动其自身高度的50%

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将div向上移动其自身高度的50%相关的知识,希望对你有一定的参考价值。

TL; DR:您可以将div向上移动其自身高度的50%,而其余文档流仍在其正下方吗?


我必须进行布局,在其中有一系列带有标题(文本的长度可变)的图像(固定的宽度:高度比)。

我很确定我必须使用flex或grid。以下是指向具有display: flex个子级的display: flex||grid容器的约束:

  1. 即使屏幕宽度可能有所不同,每行的项目数仍已固定
  2. 即使同一行的标题长度可变,包含同一行标题文本的框也应具有相同的高度。
  3. [如果一行中没有图像,则应将居中的图像减少(即,父级不能为grid。]

这里是踢脚

  1. 标题应垂直于各自图像的底部居中。(与下面的代码段完全相同,当启用transform时。)

为什么translateY无法工作:使用translateY(-50%)可以轻松做到这一点(请参见下面的代码段),但是我对两行图像之间的垂直间距没有任何控制。如果由于标题长度的变化而导致标题行的高度为100像素,那么我将在该行下方添加50像素的边距,如果下一行的标题框只有80像素高,则该标题框的下方的边距将为40像素。 ..我正在尝试在每一行下方获得一致的边距。

代码段:布局正确。当translateY启用时,字幕相对于其各自的图像正确放置。当translateY为[[disabled]]时,可以确定图像行之间的垂直间距。我希望两者都做。

body { display: flex; flex-wrap: wrap; justify-content: center; } section { box-sizing: border-box; width: calc(100% / 3); display: flex; flex-direction: column; } .img { background: center / cover no-repeat url(https://cdn.pixabay.com/photo/2020/02/16/20/29/new-york-4854718_1280.jpg) } .img::before { content: ''; display: block; padding-bottom: 65%; } .text { background-color: rgba(255, 255, 255, .8); box-shadow: inset 0 0 0 1px red; flex: 1; transform: translateY(-50%); }
<section>
    <div class="img"></div>
    <div class="text"><span>Convallis cursus ornare mus luctus varius fusce tempus arcu quisque</span></div>
</section>
<section>
    <div class="img"></div>
    <div class="text"><span>Eleifend lorem facilisis dictumst phasellus aenean conubia libero.</span></div>
</section>
<section>
    <div class="img"></div>
    <div class="text"><span>Nam ut gravida nisi scelerisque</span></div>
</section>
<section>
    <div class="img"></div>
    <div class="text"><span>Ligula quisque nibh class sociosqu netus laoreet interdum volutpat mus</span></div>
</section>
<section>
    <div class="img"></div>
    <div class="text"><span>Duis nec maecenas ultricies ridiculus nascetur nisi rutrum dignissim nam</span></div>
</section>
TL; DR:您可以将div向上移动其自身高度的50%,而其余文档流仍在其正下方吗?我必须进行布局以放置一系列图像(固定的宽度:高度比)...
答案
如果只需要使字幕垂直居中,则将.text设置为显示弹性并将孩子居中。通过阅读问题,标题是您唯一遇到的问题,无需弄乱transform

以上是关于将div向上移动其自身高度的50%的主要内容,如果未能解决你的问题,请参考以下文章

如何让div自动适应自身的img高度

如何将整个 div 元素向上移动 x 个像素?

如何将嵌套 div 向上移动两个 div 级别以匹配父级?

底部固定 div 的 JQuery 切换将所有 div 向上移动

bootstrap栅格系统的div高度怎样定

div随鼠标移动