【问题标题】:textarea max-width when is set COLS设置 COLS 时的 textarea 最大宽度
【发布时间】:2018-11-02 11:01:34
【问题描述】:

看起来 textarea 设置为 100% 时不尊重 css 最大宽度,设置为固定像素时没问题

<textarea cols="80">text here</textarea>

max-width: 100%;

max-width: 100px;

查看 max-width: 100% 的 sn-p 代码:

.table {
  width: 100%;
  display:table;
}

.table-cell {
  display: table-cell;
  padding: 10px;
  width: 300px;
  background: #DAC082;
}

textarea {
  max-width: 100%;
}
<div class="table">
  <div class="table-cell">
    <p>textarea cell</p>
    <textarea cols="80">TEXT</textarea>
  </div>
</div>

并查看 max-width: 100px 的 sn-p 代码:

.table {
  width: 100%;
  display:table;
}

.table-cell {
  display: table-cell;
  padding: 10px;
  width: 300px;
  background: #DAC082;
}

textarea {
  max-width: 100px;
}
<div class="table">
  <div class="table-cell">
    <p>textarea cell</p>
    <textarea cols="80">TEXT</textarea>
  </div>
</div>

请注意,在第一个示例中,textarea 覆盖了 css 最大宽度 100%,我想这是错误的,它应该是 300px 的表格单元格宽度。 在第二个示例中,textarea 保持在 100px:它可以工作。

注意我的浏览器是 Firefox ESR 60.3。是firefox的bug吗?

【问题讨论】:

  • 最外层的div不应该有display:table吗?
  • 是的,它有显示:表,我已经编辑了错误,但问题仍然存在。

标签: html css textarea


【解决方案1】:

你试过了吗

textarea {
    width: 100%;
}

这对我有用,并且与我在 .table-cell 中设置的任何宽度相匹配

【讨论】:

    【解决方案2】:

    表格单元格倾向于将其width 属性视为提示,而不是一成不变。

    一种解决方案是在表格单元格的内容周围放置一个额外的 div,并设置该单元格的宽度。然后 textarea 会尊重它。

    .table {
        width: 100%;
    }
    
    .table-cell {
      display: table-cell;
      padding: 10px;
      background: #DAC082;
    }
    
    .table-cell>div {
      width: 300px;
    }
    
    textarea {
      max-width: 100%;
    }
    <div class="table">
      <div class="table-cell">
        <div>
          <p>textarea cell</p>
          <textarea cols="80">TEXT</textarea>
        </div>
      </div>
    </div>

    更新:在你更清楚你想要什么之后,一个新的解决方案如下:不要将宽度属性分配给表格,而是将它们分配给内容;那么表格将根据其内容塑造自己,而不是反之亦然。

    .table {
      display: table;
    }
    
    .table-cell {
      display: table-cell;
      padding: 10px;
      background: #DAC082;
    }
    
    textarea {
      max-width: calc(100vw - 16px - 20px); /* = viewport - body margin - cell padding */
    }
    <div class="table">
      <div class="table-cell">
        <p>textarea cell</p>
        <textarea cols="80">TEXT</textarea>
      </div>
    </div>

    textarea 的最大宽度是视口的宽度,减去主体的边距和单元格中的内边距。当然,您可以根据自己的需要进行调整!

    【讨论】:

    • 这看起来是一个不错的解决方案,一个额外的 div 很容易添加。顺便说一句,这是一个错误。我用 .table-cell div{} 我想是一样的。
    • 编辑:这不是最终的解决方法,因为 if .table-cell>div { width: 100%;解决方法不起作用。见此代码:jsfiddle.net/zt1rq6v9/1
    • @kensan 在小提琴中,您没有任何固定宽度。该表将其宽度视为(或多或少)最小宽度,因此内部 div 获得“至少视口宽度的 100%”。那么你想达到什么目标?一张总是 100% 宽的桌子?然后不要给表格和单元格指定宽度,但要确保 contents 有那么宽。 jsfiddle.net/MrLister/zt1rq6v9/2 这也使结构更容易。但是你在问题中没有说清楚。无论如何,我现在更新了我的答案;更好?
    • 是的,我的问题并不清楚,因为我认为应用于 textarea 的最大宽度很容易做到,没有麻烦或错误。现在我应该确切地解释我想要做什么。我有两个带有 cols="nn" 的 textarea (对于桌面分辨率来说,nn 很大),我想将它放入智能手机的视口大小。这两个文本区域在两个框架内,填充和边距很多。我可以计算 textarea1 周围和 textarea2 周围的空间大小,并应用两个不同的最大宽度:calc()。所以我可以使用你的解决方法。泰。
    猜你喜欢
    • 2021-04-15
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 2011-04-11
    • 2017-02-25
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多