【问题标题】:How to wrap text around an image using HTML/CSS如何使用 HTML/CSS 将文本环绕在图像周围
【发布时间】:2013-10-04 10:51:27
【问题描述】:

我想设计一个如下图的文字块:

质疑这是否可能?

【问题讨论】:

  • 您是否尝试像常规的<p> 标签等那样在图像周围环绕文本,但您也提到了<textarea>,这可能是一个完全不同的问题。如果您有一些 HTML,为什么不发布您的 HTML?谢谢。
  • 是的,您只需将 php 图像浮动到左侧,文本就会环绕它 :-)

标签: html css


【解决方案1】:

你必须float你的图片容器如下:

HTML

<div id="container">
    <div id="floated">...some other random text</div>
    ...
    some random text
    ...
</div>

CSS

#container{
    width: 400px;
    background: yellow;
}
#floated{
    float: left;
    width: 150px;
    background: red;
}

小提琴

http://jsfiddle.net/kYDgL/

【讨论】:

    【解决方案2】:

    使用CSS Shapes,您可以更进一步,而不仅仅是在矩形图像周围浮动文本。

    您实际上可以对文本进行换行,使其具有您要围绕它的图像或多边形的边缘的形状。

    DEMO FIDDLE(目前正在开发 webkit - caniuse

    .oval {
      width: 400px;
      height: 250px;
      color: #111;
      border-radius: 50%;
      text-align: center;
      font-size: 90px;
      float: left;
      shape-outside: ellipse();
      padding: 10px;
      background-color: MediumPurple;
      background-clip: content-box;
    }
    span {
      padding-top: 70px;
      display: inline-block;
    }
    <div class="oval"><span>PHP</span>
    </div>
    <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has
      survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing
      software like Aldus PageMaker including versions of Lorem Ipsum.Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley
      of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing
      Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy
      text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised
      in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>

    另外,这里有一个关于 CSS 形状的好 list apart article

    【讨论】:

    【解决方案3】:

    除了BeNdErR的回答:
    “其他文本”元素应该有float:none,比如:

        <div style="width:100%;">
            <div style="float:left;width:30%; background:red;">...something something something  random text</div>
            <div style="float:none; background:yellow;"> text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text  </div>
        </div>

    【讨论】:

    • 这是我可以让它工作的唯一方法。也是最干净的解决方案。
    • float:none 救了我!一直试图浮动:对第二个元素无济于事。
    【解决方案4】:

    如果图片大小可变或设计为响应式,除了环绕文字外,您还可以为段落设置最小宽度 strong> 避免它变得太窄。
    提供一个具有所需最小段落宽度的不可见 CSS 伪元素。如果没有足够的空间来容纳这个伪元素,那么它将被推到图像下方,并带走段落。

    #container:before {
      content: ' ';
      display: table;
      width: 10em;    /* Min width required */
    }
    #floated{
        float: left;
        width: 150px;
        background: red;
    }
    

    【讨论】:

    • 我认为您的回答可能会为我节省一些培根。我在响应式设计中堆叠左浮动图像时遇到问题。由于我的默认图像宽度为 30%,并且两侧都有图像,因此有时我的文本列可能只有 4 个字符宽。
    【解决方案5】:

    2022 年更新

    我试图用尽可能少的代码来实现这种类型的结果。这对我有用。

    #wrap {
        margin: 3em 8em;
    }
    .left {
        float: left;
        margin-right: 1.5em;
    }
    .right {
        float: right;
        margin-left: 1em;
    }
    p {
        margin-bottom: 2.5em;
        overflow: hidden; /* this is what keep the <p> from wrapping */
    }
    p:last-child {
        overflow: visible; /* this is an example of the browser default */
    }
    <div id="wrap">
    <img class="left" src="http://dummyimage.com/172x172/0088cc/ffffff.gif&amp;text=.img">
    <p>Nullam id dolor id nibh ultricies vehicula ut id elit. Donec id elit non
    mi porta gravida at eget metus. Morbi leo risus, porta ac consectetur ac,
    vestibulum at eros. Donec sed odio dui. Nullam id dolor id nibh ultricies
    vehicula ut id elit. Vivamus sagittis lacus vel augue laoreet rutrum faucibus
    dolor auctor. Etiam porta sem malesuada magna mollis euismod. Donec id
    elit non mi porta gravida at eget metus. Praesent commodo cursus magna,
    vel scelerisque nisl consectetur et. Aenean lacinia bibendum nulla sed
    consectetur. Nulla vitae elit libero, a pharetra augue. Morbi leo risus,
    porta ac consectetur ac, vestibulum at eros. Lorem ipsum dolor sit amet,
    consectetur adipiscing elit. Cras mattis consectetur purus sit amet fermentum.</p>
    <img
    class="right" src="http://dummyimage.com/172x172/0088cc/ffffff.gif&amp;text=.img">
    <p>Nullam id dolor id nibh ultricies vehicula ut id elit. Donec id elit non
    mi porta gravida at eget metus. Morbi leo risus, porta ac consectetur ac,
    vestibulum at eros. Donec sed odio dui. Nullam id dolor id nibh ultricies
    vehicula ut id elit. Vivamus sagittis lacus vel augue laoreet rutrum faucibus
    dolor auctor. Etiam porta sem malesuada magna mollis euismod. Donec id
    elit non mi porta gravida at eget metus. Praesent commodo cursus magna,
    vel scelerisque nisl consectetur et. Aenean lacinia bibendum nulla sed
    consectetur. Nulla vitae elit libero, a pharetra augue. Morbi leo risus,
    porta ac consectetur ac, vestibulum at eros. Lorem ipsum dolor sit amet,
    consectetur adipiscing elit. Cras mattis consectetur purus sit amet fermentum.</p>
    <img
    class="right" src="http://dummyimage.com/172x172/0088cc/ffffff.gif&amp;text=.img">
    <p>Nullam id dolor id nibh ultricies vehicula ut id elit. Donec id elit non
    mi porta gravida at eget metus. Morbi leo risus, porta ac consectetur ac,
    vestibulum at eros. Donec sed odio dui. Nullam id dolor id nibh ultricies
    vehicula ut id elit. Vivamus sagittis lacus vel augue laoreet rutrum faucibus
    dolor auctor. Etiam porta sem malesuada magna mollis euismod. Donec id
    elit non mi porta gravida at eget metus. Praesent commodo cursus magna,
    vel scelerisque nisl consectetur et. Aenean lacinia bibendum nulla sed
    consectetur. Nulla vitae elit libero, a pharetra augue. Morbi leo risus,
    porta ac consectetur ac, vestibulum at eros. Lorem ipsum dolor sit amet,
    consectetur adipiscing elit. Cras mattis consectetur purus sit amet fermentum.</p>
    </div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      相关资源
      最近更新 更多