【问题标题】:How to make blocks floating image properly如何正确使块浮动图像
【发布时间】:2018-02-18 12:48:09
【问题描述】:

这是我的代码:

    .container {
      width: 90%;
      margin: 0 auto;
    }
    .holder {
      display: inline-block;
      width: 75%;
      background-color: pink;
    }
    img {
      width: 25%;
      height: auto;
      float: left;
    }
    .data {
      display: inline-block;
      width: 50%;
    }
<div class="container">
    <h3>Title lacinia sed posuere non, ultricies in nisi</h3>
    <div>
      <img src="http://via.placeholder.com/350x150" alt="Placeholder">
      <p class="description">Aliquam nibh metus, lacinia sed posuere non, ultricies in nisi. Cras pharetra felis libero. Aliquam nibh metus, lacinia sed posuere non, ultricies in nisi. Cras pharetra felis libero. Aliquam nibh metus, lacinia sed posuere non, ultricies in nisi. Cras pharetra felis libero. Aliquam nibh metus, lacinia sed posuere non, ultricies in nisi. Cras pharetra felis libero. Aliquam nibh metus, lacinia sed posuere non, ultricies in nisi. Cras pharetra felis libero. Aliquam nibh metus, lacinia sed posuere non, ultricies in nisi. Cras pharetra felis libero. Aliquam nibh metus, lacinia sed posuere non, ultricies in nisi. Cras pharetra felis libero. Aliquam nibh metus, lacinia sed posuere non, ultricies in nisi. Cras pharetra felis libero. Aliquam nibh metus, lacinia sed posuere non, ultricies in nisi. Cras pharetra felis libero.</p>
      <div class="holder">
      <p class="data">Some Data 1</p><!--
      --><p class="data">Some Data 2</p>
      </div>
    </div>
  </div>

我希望描述和数据块在图像周围浮动。并且数据段各占50%(实际项目的数据行多,但每行2个数据)。它在大屏幕上看起来很棒:

但一旦我们在描述中添加更多文本或缩小窗口大小,数据块将开始换行,因为我将持有人设置为 75% 宽度(图像为 100% - 25%),数据段落不会占据整个宽度的 50%:

我正在尝试解决此问题(使“某些数据 1”和“某些数据 2”占用每个可用空间的 50% - 图像 1 正确,图像 2 不正确)但找不到离开。请帮帮我。我需要纯 CSS 解决方案。

【问题讨论】:

  • 您可以使用 CSS 查询根据屏幕大小更改元素的宽度
  • @GuillermoCarone 谢谢,但我不知道文本和数据块什么时候会变成浮动图像。想象一下,我们有 10 个相同的块,并且描述处处不同,那里有一行,另一个地方有 10 行。
  • 文字应该总是在图片的右边吗?
  • @PeterLeger 不,文本应该浮动。图像 1 看起来不错,图像 2 唯一的问题是“某些数据 1”和“某些数据 2”各不是 50%。它们不会占用整个可用空间。

标签: html css responsive-design responsive floating


【解决方案1】:

除非 html 是固定的,否则这应该可以吗?将图片放入容器中,并使用 flexbox 在文本下方做两列。

.container {
  width: 90%;
  margin: 0 auto;
}

.holder {
  display: flex;
  background-color: pink;
}

.block img {
  width: 25%;
  float: left;
  margin-right: 12px;
}

.data {
  width: 50%;
}
<div class="container">
  <h3>Title lacinia sed posuere non, ultricies in nisi</h3>
  <div class="block">
    <img src="http://via.placeholder.com/350x150" alt="Placeholder"> Aliquam nibh metus, lacinia sed posuere non, ultricies in nisi. Cras pharetra felis libero. Aliquam nibh metus, lacinia sed posuere non, ultricies in nisi. Cras pharetra felis libero.
    Aliquam nibh metus, lacinia sed posuere non, ultricies in nisi. Cras pharetra felis libero. Aliquam nibh metus, lacinia sed posuere non, ultricies in nisi. Cras pharetra felis libero. Aliquam nibh metus, lacinia sed posuere non, ultricies in nisi.
    Cras pharetra felis libero. Aliquam nibh metus, lacinia sed posuere non, ultricies in nisi. Cras pharetra felis libero. Aliquam nibh metus, lacinia sed posuere non, ultricies in nisi. Cras pharetra felis libero. Aliquam nibh metus, lacinia sed posuere
    non, ultricies in nisi. Cras pharetra felis libero. Aliquam nibh metus, lacinia sed posuere non, ultricies in nisi. Cras pharetra felis libero.
    <div class="holder">
      <p class="data">Some Data 1</p>
      <p class="data">Some Data 2</p>
    </div>
  </div>
</div>

【讨论】:

  • 感谢您的解决方案,但是当全屏和描述小于图像高度时,粉红色数据在您的情况下的图像下方。就我而言,在我的代码中,它就在描述之后(请参见图 1)。
  • 我明白了 - 如果您在持有人类中删除 width: 100% (或更改为 max-width:100% ),无论文本有多长,它都应该工作。 (我改变了我上面的建议)
  • 太棒了!感谢您的解决方案!
猜你喜欢
  • 2021-07-11
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 2016-03-24
  • 2013-04-05
  • 2017-11-25
相关资源
最近更新 更多