【问题标题】:Want text to wrap inside div想让文本在 div 内换行
【发布时间】:2013-12-19 16:08:25
【问题描述】:

在下面的代码中,我有 3 张图片,其中一些图片下方有一个标题。我不希望文本的宽度超过图像的宽度。注意:图像的宽度可能会有所不同。它不是固定宽度。如果文本超出图像的宽度,则文本需要换行。我在下面的代码中遇到的另一个问题是第二个和第三个图像在图像底部显示了一些填充。此图像周围的边框不应有填充。

http://jsfiddle.net/AndroidDev/Asu7V/15/

<div style="width:300px; overflow-x: auto;white-space: nowrap;">
    <div style="vertical-align:top">
        <div class="x">
            <img src="http://25.media.tumblr.com/avatar_dae559818d30_128.png" />
            <div style="white-space:wrap">Grumpy Cat is a famous cat</div>
        </div>
        <div class="x">
            <img src="http://scottsdalepethotel.com/wp-content/uploads/et_temp/cat-648150_128x128.jpg" />
            <img src="http://playgo.ro/wp-content/themes/play3.0/play.png" style="position:absolute; left:0; top:0" />
        </div>
        <div class="x">
            <img src="http://blog.sureflap.com/wp-content/uploads/2011/11/Maru.jpg" />
        </div>
    </div>
</div>

【问题讨论】:

    标签: html word-wrap css


    【解决方案1】:

    由于您没有将任何 width 分配给您的 div 元素,因此请分配它,而不是使用 white-space: normal;

    <div style="white-space: normal; width: 130px;">Grumpy Cat is a famous cat</div>
    

    Demo

    再次提醒您,避免使用内联样式..

    另外,当您修复仅包含图像的包装器div 时,最好将max-widthmax-height 用于您的img,这样可以确保它不会overflow

    此外,最后但并非最不重要的一点是,考虑使用 p 元素而不是 div,这将为您的文本赋予一些语义意义。


    您使用的是white-space: wrap;,其中wrap 不是white-space 属性的有效值,因此您需要normal


    正如您评论的那样,您希望摆脱两边的空白,因此,通过为包装元素分配一些固定的width 来修复包装元素,对于图像问题下方的空白,可以可以通过在包装元素上使用 font-size: 0; 而不是为文本分配一些 font-size 来修复,或者更好的方法是将 display: block; 用于您的 img 元素。

    【讨论】:

    • 来自问题:“注意:图像的宽度可以变化。它不是固定宽度。”
    • 这非常接近,但我注意到您的代码在图像右侧有少量填充。有什么办法可以去掉?以及如何从其他图像中删除填充?
    • @AndroidDev 我已经修复了包装器元素,只需分配一些固定高度并使用font-size: 0; jsfiddle.net/Asu7V/19,然后为文本包装器分配一些大小div
    • @AndroidDev 或者您可以将display: block; 用于您的图像jsfiddle.net/Asu7V/21
    • @AndroidDev 表示选择直接子元素到父元素,会给你一个例子,对于你的东西,使用display: block; 作为img 标签,这样更好
    【解决方案2】:

    一种简单的方法是将您的图像和文本包装在一个 div 中,这样当您的图像大小增加时,它也会为文本提供相同的流动区域,并且不会超出图像范围。

    【讨论】:

      【解决方案3】:

      你的 CSS 缺少宽度,这是一个演示: DEMO

      HTML

      <div style=""><span class="text">Grumpy Cat is a famous cat</span>
      

      CSS

       .text {
              vertical-align:top;
              display:inline-block;
              white-space:normal;
              word-wrap: break-word;
              width:70%;
              max-width:70%;
          }
          .x {
              border:1px solid #000000;
              display:inline-block;
              white-space:nowrap;
              position:relative;
              width:42%;
              vertical-align: top;
          }
      

      【讨论】:

      • 我对您的代码进行了微调,但右边框插入了几个像素。否则,您的解决方案比 Mr. Aliens 更好,因为它不依赖于固定宽度。有什么办法可以修复右边框? jsfiddle.net/AndroidDev/Asu7V/23
      • @AndroidDev :如果它是 2-3px 并且您允许,那么 overflow:hidden 是一种解决方案,因为它对图像没有太大影响 => jsfiddle.net/Asu7V/24 OR 如果你想要精确的宽度,这是另一种方式(但我不喜欢它)=> jsfiddle.net/Asu7V/25/......my 建议,如果你可以忽略一些像素,请使用 overflow!!
      猜你喜欢
      • 2012-08-12
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      • 2022-11-19
      相关资源
      最近更新 更多