【发布时间】:2025-12-27 17:30:06
【问题描述】:
基本上我想实现一个横幅 CTA 块,它总是会遍历前一个和下一个 DIV,而不是创建一个白色的空白间距。无论实际 CTA 横幅块的高度如何,我都想以流畅的方式实现这一点。
代码示例:https://codepen.io/Gugols/pen/pORwxB
.before-banner {
background: pink;
margin-bottom: -90px;
min-height: 100px;
padding-bottom: 90px;
}
.after-banner {
background: orange;
min-height: 100px;
padding-top: 90px;
}
.cta-wrapper {
/*min-height: 150px;*/
margin-bottom: -90px;
}
.cta {
width: 50%;
background: green;
opacity: 0.7;
font-size: 28px;
margin: 0 auto;
}
<div class="before-banner paragraph">
In consectetuer turpis ut velit. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Fusce a quam. Vivamus elementum semper nisi. Cras non dolor.
In consectetuer turpis ut velit. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Fusce a quam. Vivamus elementum semper nisi. Cras non dolor.
In consectetuer turpis ut velit. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Fusce a quam. Vivamus elementum semper nisi. Cras non dolor.
In consectetuer turpis ut velit. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Fusce a quam. Vivamus elementum semper nisi. Cras non dolor.
In consectetuer turpis ut velit. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Fusce a quam. Vivamus elementum semper nisi. Cras non dolor. In consectetuer turpis ut velit. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Fusce a quam. Vivamus elementum semper nisi. Cras non dolor.
In consectetuer turpis ut velit. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Fusce a quam. Vivamus elementum semper nisi. Cras non dolor.
In consectetuer turpis ut velit. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Fusce a quam. Vivamus elementum semper nisi. Cras non dolor.
In consectetuer turpis ut velit. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Fusce a quam. Vivamus elementum semper nisi. Cras non dolor.
In consectetuer turpis ut velit. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Fusce a quam. Vivamus elementum semper nisi. Cras non dolor.
In consectetuer turpis ut velit. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Fusce a quam. Vivamus elementum semper nisi. Cras non dolor.
In consectetuer turpis ut velit. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Fusce a quam. Vivamus elementum semper nisi. Cras non dolor.
</div>
<div class="cta-wrapper">
<div class="cta">
<p>This is a CTA banner. Praesent egestas neque eu enim. Ut id nisl quis enim dignissim sagittis. Praesent vestibulum dapibus nibh. Etiam sit amet orci eget eros faucibus tincidunt. Vestibulum ante
</p>
</div>
</div>
<div class="after-banner paragraph">
In consectetuer turpis ut velit. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Fusce a quam. Vivamus elementum semper nisi. Cras non dolor.
</div>
一些插图:
建议的 CSS 解决方案路径是理想的,但也可以接受基于 JavaScript(也包括 jQuery)的解决方案。 谢谢。
【问题讨论】:
-
当您没有向我们展示您现有的任何 HTML、CSS 或 JS 时,不确定您希望别人如何帮助您
-
@RoryMcCrossan 好点。将尝试重新创建它并在此处发布。虽然这是一个错误的实现。
-
显示错误的实现可以让我们修复它——这正是 * 的用途。
-
好的,我已经添加了代码实现。
-
position: absolute; transform: translateY(-50%);可以将其定位在其他两个元素之间的中间 - 但由于绝对定位会将元素从流中取出,因此您必须提供适当的 padding-bottom 和 -top到其他两个元素,以便它们保留必要的空间 - 它需要“足够”的填充来为不同数量的 CTA 内容保留足够的空间。