html - 强制文本在没有宽度的情况下换行到 div 中

标签 html css word-wrap

是否可以在只有最小宽度的行内 block div 内换行? (不是宽度,也不是最大宽度)

我的意思是:

<style type="text/css">

  .container {
    width:100%;
  }

  .field {
    display: inline-block;
    vertical-align: top;
    min-width:25%;
  }

  label, input {
    display: inline-block;
  }

  .alert {
    display:block;
  }

</style>


<div class="container">

    <div class="field">
      <label style="width:100px;">My Label</label>
      <input style="width:200px;" type="text" />
      <div class="alert">
        This text should wrap at whatever width div.field actually is, and never push div.field out to the width of this text!
      </div>
  </div>

  <div class="field">...another field...</div>
  <div class="field">...another field...</div>
  <div class="field">...another field...</div>
  etc...

</div>

注意事项:

  1. label & inputinline-block所以他们保持在同一条线上,但是div.alertblock以便它出现在该字段其他内容下方的新行上。
  2. div.field只有 MIN-WIDTH(不是宽度或最大宽度),因为当用户调整窗口大小时(以及 div.container 的宽度)应该发生以下情况:

    一个。如果字段的固定宽度内联内容(在本例中,LABEL+INPUT=300px)小于 div.container 宽度的 25% , 然后 div.field应该正好是容器宽度的 25%。

    如果字段的固定宽度内联内容超过容器的 25%,那么他们应该将字段推到它们的组合宽度。

那么,有没有办法得到div.alert根据上面的规则根据字段的宽度换行?

最佳答案

我知道我是一个非常老的线程,但它可能对其他人有帮助。 有

.field {
    width: min-content;
}

也就是说,您的容器会尽可能缩小。要使用它,您必须确保标签和输入的最小宽度足够大。但是由于它们的固定尺寸,它已经完成了。但在这种情况下,如果有多个字段,它们会被并排包裹,所以我建议

.container {
    width: min-content;
}

这是一个 jsfiddle .

它不完全是跨浏览器的,但是almost .

我找到了 here .

关于html - 强制文本在没有宽度的情况下换行到 div 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12633495/

相关文章:

emacs - 阻止emacs在80列终端中包装80列行?

html - 尽管 block 中有空格,为什么在连续 block 之间发生换行?

javascript - 如果显示两个 div(并且仅当它们都显示时)将文本向上推

html - 悬停时的 CSS 向左展开元素

html - 如何发送 HTML 电子邮件

python - 如何在 `textwrap.fill` 中保留双换行符?

html - 图像不在中间

css - 具有恒定像素字体大小的响应式文本大小?

Jquery 只针对点击类的父类而不是其他类?

javascript - 避免 jQuery 代码重复