【问题标题】:How to replicate float with display as inline block properly如何正确复制浮动并显示为内联块
【发布时间】:2020-01-28 00:20:34
【问题描述】:

我已经阅读了很多文章和帖子,并且被广泛告知使用显示作为内联块而不是浮动

所以我想试一试。 但是我无法在使用 inline-block 时复制 float 的确切输出

希望有人能帮帮我

第二点,如果有人能指出一些场景(如果存在的话),在今天使用 float 而不是 inline block 或 flexbox 仍然有益,那将非常有助于记住以供将来参考强>


<h1>float Vs inline-block</h1>

<p>In this example, the image will float to the right in the text, and the text in the paragraph will wrap around the image.</p>

<p><img src="https://picsum.photos/id/1/200/300" alt="Pineapple">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio, vitae scelerisque enim ligula venenatis dolor. Maecenas nisl est, ultrices nec congue eget, auctor vitae massa. Fusce luctus vestibulum augue ut aliquet. Mauris ante ligula, facilisis sed ornare eu, lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue. Nunc sagittis dictum nisi, sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit.</p>

img {
  float: left;
  width: 170px;
  height: 170px;
}

/*img {
  display: inline-block;
  width: 170px;
  height: 170px;
}*/ please fix this part to make it work exactly 
     like float 

编辑 - 现在在我看来 display: inline-block 只能对齐单行中的 div,但不能完全像浮动一样。即它不能像浮动一样将文本环绕在图像周围... 互联网上无数的 inline block 和 float 比较让我们相信我们可以使用 inline-block 精确地复制 float 效果(就像 inline block 完全替代 float 一样)

【问题讨论】:

  • 如何正确复制浮动并显示为内联块 --> 你不能,就这么简单。
  • Inline-block 不能替代浮动。或相反亦然。很少相信您在互联网上阅读的内容。

标签: html css image css-float


【解决方案1】:

floatinline-block 工作方式不同:

on float :元素是来自页面正常流程removed,位于其容器的左侧或右侧,但仍是流,这允许复制

inline-block :元素 dose not removed 来自 正常流程,因此理论上无法复制其他元素,如 float

  • 将 inline-block 视为向其添加 [width - height - margin ..ect] 控制的内联元素
  • 例如,如果您有

<ul>
    <li>item1</li>
    <li>item1</li>
    <li>item1</li>
    <li>item1</li>
</ul>

最简单的并排显示列表项的方法是使用inline-block而不是浮动它们

在你的例子中:

如果您将 inline-block 赋予图像

image and the text are in the same flow = [paragraph] 

如果您浮动图片

the image will leave the paragraph flow to the container flow 

赋予段落复制的能力

【讨论】:

    【解决方案2】:

    因为我知道 inline-block 显示属性没有您想要的替代品。这不是您期待的确切事情,但您可以使用here 中提供的这种方法来实现这样的事情。

    如您所知,使用 inline-block 比使用 float 更有优势,您可以查看这些相同的问题以获取更多信息:

    但要并排实现图像和文本,您也可以使用 flexbox,您可以查看this answer 或回答@PedroFigueiredo 提供的更多信息。

    【讨论】:

    • 好吧,在我看来 display: inline-block 只能对齐单行中的 div,但不能完全像 float 使文本包裹在图像上一样。互联网上无数的比较让我们相信我们可以使用 inline-block 精确复制浮动效果
    • @BadalSingh 据我所知,您可以将inline-block 用于spandivemstrongp
    【解决方案3】:

    首先,您的 HTML 格式不正确。为了更好的语义,不要在 p 标签内插入 image,因为最后一个应该只包含文本。

    如果您想要图像和标题,请使用 img 和 figcaption。 此外,如果您希望文本与图像并排,您应该使用 flex,这样可以轻松地将两个元素并排放置。

    这是一个快速演示:

    figure {
      display: flex;
    }
    
    img {
      width: 170px;
      height: 170px;
    }
    <figure>
    <img src="https://picsum.photos/id/1/200/300" alt="Pineapple">
      <figcaption>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio, vitae scelerisque enim ligula venenatis dolor. Maecenas nisl est, ultrices nec congue eget, auctor vitae massa. Fusce luctus vestibulum augue ut aliquet. Mauris ante ligula, facilisis sed ornare eu, lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue. Nunc sagittis dictum nisi, sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit.
    </figcaption>
    </figure>

    【讨论】:

    • 效果很好,谢谢。您能说出为什么它不能与内联块一起使用吗?当我使用 inline-block 时,文本而不是位于图像旁边,而是显示在其下方。如果您继续在您的解决方案中包含内联块,请按照注释进行操作并保持弹性
    • 我知道 flexbox 甚至比 inline-block 更好(float 是最差的),但目前我正处于 CSS 的初始阶段,而 Inline-block 是我更熟悉的东西......所以会也很高兴知道这一点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    相关资源
    最近更新 更多