元素出现在 DOM 中其余内容之前的绝对定位伪元素之后

Absolutely positioned pseudo after element is appearing before the rest of the content in the DOM

我最近发现将伪元素用作设计目的的图形元素。我正在尝试在 div 上使用 ::after 元素在部分之间创建水平 div iders,如下:

.banner {
     position: relative;
     width: 100%;
     overflow: hidden;

}
 .banner__text, .banner__logo {
     width: 50%;
     float: left;
}
 .banner::after {
     content: '';
     position: absolute;
     left: 0;
     right: 0;
     border-bottom: 1px solid purple;
}
 
<div class="app">
  <div class="banner">
    <div class="banner__text">
      <h3>Hello World</h3>
      <p>longer string here</p>
    </div>
    <div class="banner__logo">
      <img src="//unsplash.it/159/250" />
    </div>
  </div>

  <div class="banner">
    <div class="banner__text">
      <h3>Hello World</h3>
      <p>longer string here</p>
    </div>
    <div class="banner__logo">
      <img src="//unsplash.it/159/250" />
    </div>
  </div>

 <div class="banner">
   <div class="banner__text">
     <h3>Hello World</h3>
     <p>longer string here</p>
   </div>
   <div class="banner__logo">
     <img src="//unsplash.it/159/250" />
   </div>
  </div>

</div>

但是,您会注意到所有 ::after 元素都堆叠在顶部;有没有办法让这些绝对定位的元素 相对定位 parentsafter 每个 div.banner?

注意:这个问题的答案太具体了我无法确定解决方案,虽然它在范围上相似...

更新

overflow: hidden 添加到 .banner 修复了 after 元素堆叠在顶部,但它们仍然出现在 before 每个 div.banner,虽然我想要它们 after.

添加 bottom: 0 使分隔符出现在每个 .banner 的底部。但是,为简单起见,您可能希望为此使用底部边框而不是 ::after 伪元素。并非所有事情都需要一个人完成。话虽如此,但实验并没有错。