使用给定的 HTML 结构显示内联横幅和响应式横幅

Display Banners inline and responsive with a given HTML structure

我有这个HTML:

<div class="bannerWrapper">
  <div class="bannerCollection">
    <div class="bannerUnit">
      <a href=""><img src="" /></a>
    </div>
    <div class="bannerUnit">
      <a href=""><img src="" /></a>
    </div>
    <div class="bannerUnit">
      <a href=""><img src="" /></a>
    </div>
    <div class="bannerUnit">
      <a href=""><img src="" /></a>
    </div>
  </div>
  <div class="bannerCollection">
    <div class="bannerUnit">
      <a href=""><img src="" /></a>
    </div>
    <div class="bannerUnit">
      <a href=""><img src="" /></a>
    </div>
  </div>
</div>

现在我想在 1 行中显示所有横幅并响应,因此它们应该在小屏幕上以相同的方式调整大小。

这个 CSS 完成了工作:

.bannerWrapper {
    display: table;
    margin: 5px auto;
}
.bannerCollection {
    display: contents;
}
.bannerCollection .bannerUnit {
    display: table-cell;
    padding: 0 3px;
}
.bannerUnit img {
    max-width: 100%;
}

这是一个 JS Fiddle: https://jsfiddle.net/NoGo/8pzsk0m2/

我的问题:我不能使用display: contents;,因为这似乎会导致Javascript选择器出现问题。

是否有机会在不更改 div.bannerCollection 内的任何内容且不使用 display: contents; 的情况下实现此目标?

这个设计可以使用flexbox来完成。不需要显示:contents.

只需将 display: flex 添加到 .bannerWrapper.bannerCollection。从 .bannerCollection .bannerUnit

中删除 display: table-cell

我在这里修改了你的fiddle: https://jsfiddle.net/8pzsk0m2/5/

重要的是要注意浏览器对显示的支持:内容仍然相当少,并且根据您的目标浏览器,最好避免使用它,直到它得到更广泛的支持。 https://caniuse.com/#search=display%3A%20contents

试试这个

.bannerWrapper {
    display: flex;
    margin: 5px auto;
}
.bannerCollection {
    display: flex;
}
.bannerCollection .bannerUnit {
    padding: 0 3px;
}
.bannerUnit img {
    max-width: 100%;
}
<div class="bannerWrapper">
  <div class="bannerCollection">
    <div class="bannerUnit">
      <a href=""><img src="https://dummyimage.com/150x150/000/fff" /></a>
    </div>
    <div class="bannerUnit">
      <a href=""><img src="https://dummyimage.com/150x150/000/fff" /></a>
    </div>
    <div class="bannerUnit">
      <a href=""><img src="https://dummyimage.com/150x150/000/fff" /></a>
    </div>
    <div class="bannerUnit">
      <a href=""><img src="https://dummyimage.com/150x150/000/fff" /></a>
    </div>
  </div>
  <div class="bannerCollection">
    <div class="bannerUnit">
      <a href=""><img src="https://dummyimage.com/150x150/000/fff" /></a>
    </div>
    <div class="bannerUnit">
      <a href=""><img src="https://dummyimage.com/150x150/000/fff" /></a>
    </div>
  </div>
</div>