html - 将相关文本保留在 float 图像旁边

标签 html css image css-float

我正在开发一个响应式网页,该网页将人脸照片作为 float IMG,旁边是关于每个人的一些描述性文本。

what it's meant to look like

这在较小的页面宽度下效果很好,但当页面变宽时,与下一个人相关的文本会从上一个人的图像旁边开始。

not so good

我需要一种方法来强制文本显示不高于特定图像的顶部。

我已经设置了一个 JSFiddle here .

img {
  float: left;
  clear: both;
  margin: 0 20px 20px 0;
}
<img src="https://placehold.it/300x300">
<h1>First person's name</h1>
<p>A few paras of text.</p>
<img src="https://placehold.it/300x300">
<h1>Second person's name</h1>
<p>A few paras of text.</p>

注意:clear: both 是为了确保第二张图片不会 float 到第一张图片的右侧。

编辑:理想情况下,我会在不使用任何特殊标记的情况下执行此操作,例如 DIV 和内联样式。原因是非技术人员正在使用 TinyMCE 编辑器将此内容输入到我们的 CMS 中。理想情况下,这些人不需要了解任何 HTML。所以我真的更喜欢纯 CSS 解决方案。

最佳答案

您可以使用以下方法清除 p 元素后的float:

<div style="clear:both"></div>

请看下面的演示:

#container img {
  float: left;
  margin: 0 20px 20px 0;
}
<div id="container">
  <img src="https://placehold.it/360x360">
  <h1>
    First person's name
  </h1>
  <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque id ex ut nunc pharetra congue. Morbi ut lectus vulputate nunc congue convallis. Nunc ultricies quam ac dolor tincidunt feugiat. Integer condimentum metus leo, a interdum felis molestie in.
    Ut non diam non ligula aliquam iaculis vestibulum quis urna. Maecenas efficitur purus et elementum auctor. Praesent condimentum id sapien vitae tempor. Ut ultrices accumsan lectus, quis ullamcorper velit auctor at. Suspendisse bibendum, odio gravida
    rhoncus pretium, enim elit porta massa, quis sagittis dolor sapien vel nulla. Nullam et enim ac tellus aliquam pulvinar. Proin et bibendum dui.
  </p>
  <div style="clear:both"></div>
  <img src="https://placehold.it/360x360">
  <h1>
    Second person's name
  </h1>
  <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque id ex ut nunc pharetra congue. Morbi ut lectus vulputate nunc congue convallis. Nunc ultricies quam ac dolor tincidunt feugiat. Integer condimentum metus leo, a interdum felis molestie in.
    Ut non diam non ligula aliquam iaculis vestibulum quis urna. Maecenas efficitur purus et elementum auctor. Praesent condimentum id sapien vitae tempor. Ut ultrices accumsan lectus, quis ullamcorper velit auctor at. Suspendisse bibendum, odio gravida
    rhoncus pretium, enim elit porta massa, quis sagittis dolor sapien vel nulla. Nullam et enim ac tellus aliquam pulvinar. Proin et bibendum dui.
  </p>
</div>

如果无法更改标记,您可以使用元素来p:

p:after {
    display: block;
    content: '';
    clear: both;
}

请看下面的演示:

#container img {
  float: left;
  margin: 0 20px 20px 0;
}
p:after {
    display: block;
    content: '';
    clear: both;
}
<div id="container">
  <img src="https://placehold.it/360x360">
  <h1>
    First person's name
  </h1>
  <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque id ex ut nunc pharetra congue. Morbi ut lectus vulputate nunc congue convallis. Nunc ultricies quam ac dolor tincidunt feugiat. Integer condimentum metus leo, a interdum felis molestie in.
    Ut non diam non ligula aliquam iaculis vestibulum quis urna. Maecenas efficitur purus et elementum auctor. Praesent condimentum id sapien vitae tempor. Ut ultrices accumsan lectus, quis ullamcorper velit auctor at. Suspendisse bibendum, odio gravida
    rhoncus pretium, enim elit porta massa, quis sagittis dolor sapien vel nulla. Nullam et enim ac tellus aliquam pulvinar. Proin et bibendum dui.
  </p>
  <img src="https://placehold.it/360x360">
  <h1>
    Second person's name
  </h1>
  <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque id ex ut nunc pharetra congue. Morbi ut lectus vulputate nunc congue convallis. Nunc ultricies quam ac dolor tincidunt feugiat. Integer condimentum metus leo, a interdum felis molestie in.
    Ut non diam non ligula aliquam iaculis vestibulum quis urna. Maecenas efficitur purus et elementum auctor. Praesent condimentum id sapien vitae tempor. Ut ultrices accumsan lectus, quis ullamcorper velit auctor at. Suspendisse bibendum, odio gravida
    rhoncus pretium, enim elit porta massa, quis sagittis dolor sapien vel nulla. Nullam et enim ac tellus aliquam pulvinar. Proin et bibendum dui.
  </p>
</div>

关于html - 将相关文本保留在 float 图像旁边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45728347/

相关文章:

java - 图像分辨率 vs 屏幕分辨率 vs 相机分辨率

html - 两人如何在 Azure 上为同一域设置三个应用服务

html - Firefox 中边框底部的 css 问题

html - 更正 CSS 以按特定顺序显示 html 表单元素?

html - css 打印模式 : display header and footer only on first page of a generated word doc

c - bmp 图像到 c 中的矩阵(二维数组)

html - 奇怪的 CSS 问题 - 在 Safari 上运行正常,在 Chrome 上运行不正常

php - 二次更新页面文件消失

css - 如何在 angularjs 和 bootstrap 中使用下拉网格进行选择

c# - 将 32 位 bmp 转换为 24 位