【问题标题】:Method to show responsive divs side by side to fit whole space with margins in between them并排显示响应式 div 以适应整个空间并在它们之间留有边距的方法
【发布时间】:2017-03-26 16:57:13
【问题描述】:

我正在努力寻找一个可靠的解决方案来并排显示任意数量的 div 以适应整个空间。尽管内容不同,它们还需要具有相同的高度和大小。 div 需要有一些余量才能彼此分开。 我不能使用 Flex,因为我正在处理的页面需要与 IE9 兼容。因此,我依赖 inline-block、float 和 table 方法。

你有什么建议吗?

这是我尝试过的 HTML 和完整示例的小提琴链接 --> https://jsfiddle.net/crvu1oc9/

<div class="cards-list">
   <div class="card">
      <div class="card__image-box">
        <img class="img-teaser" src="http://farm5.static.flickr.com/4005/4706825697_c0367e6dee_b.jpg" alt="Card 1 image">
      </div>
      <div class="card__content-box">
        <div class="text-box">
          <h3>Choosing your elderly care at home</h3>
          <date>04 Nov, 2016</date>
        </div>
      </div>
  </div>

  <div class="card">
      <div class="card__image-box">
        <img class="img-teaser" src="http://farm5.static.flickr.com/4005/4706825697_c0367e6dee_b.jpg" alt="Card 1 image">
      </div>
      <div class="card__content-box">
        <div class="text-box">
          <h3>Choosing your elderly care at home</h3>
          <date>04 Nov, 2016</date>
        </div>
      </div>
  </div>

  <div class="card">
      <div class="card__image-box">
        <img class="img-teaser" src="http://farm5.static.flickr.com/4005/4706825697_c0367e6dee_b.jpg" alt="Card 1 image">
      </div>
      <div class="card__content-box">
        <div class="text-box">
          <h3>Choosing your elderly care at home</h3>
          <date>04 Nov, 2016</date>
        </div>
      </div>
  </div>

</div>

【问题讨论】:

  • 请向我们展示您尝试过的内容和 html 示例,以便我们帮助您修复该代码,否则看起来您希望有人为您编写所有代码……而这不是本网站的方式作品。见minimal reproducible example
  • 抱歉,我确实尝试了一些方法。让我附上一些东西。

标签: jquery html css layout


【解决方案1】:

在 CSS 中,为您的每个卡片类别指定一个百分比,加起来为 100;由于子元素继承了父元素的宽度,因此所有 class="card" 的 div 的百分比将相加。

宽度 + 内边距 + 边框 + 边距 = 总大小

所以,在你的情况下:

.cards-list{
            width: 90%;
            max-width: 980px;


        .card{
            float: left; /* or right */
            width: 32%;
            margin-right: 1.333333%;

由于卡片类只有 3 个元素,这将填满整个卡片列表 div 元素。 32% 宽度 + 1.33% 右边距 = 33.33% / 卡片。

添加元素时,重新计算百分比。

这是您使用四个“卡片”的代码:https://jsfiddle.net/crvu1oc9/1/

【讨论】:

  • @wIh 感谢您的回答。这就是我基本上在做的事情。但是当我向其中一张卡片添加更多文本时,其他卡片的高度看起来不同。我尝试使用“display:table”和“table-cell”让所有卡片看起来都一样。类似表格的方法的问题是我不能只在它们之间添加“右边距”。边距被添加到每张卡片周围,并且无法找到仅将其添加到右侧的方法。
  • 保持高度统一的唯一方法是在班级级别设置高度。如果您添加创建另一行的文本,则该特定框的高度将增加。您是否考虑过使用 bootstrap link 之类的东西,您可以在其中使用他们的网格来保持一致?
  • 我想找到一个既不使用 grid 也不使用 flex 方法的解决方案。除非设置每个div的高度,否则似乎没有解决方案?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
相关资源
最近更新 更多