如何使输入文本字段采用所有可用宽度?

Posted

技术标签:

【中文标题】如何使输入文本字段采用所有可用宽度?【英文标题】:How do I make the input text field take all available width? 【发布时间】:2014-03-23 06:45:07 【问题描述】:

我正在尝试将输入文本字段拉伸到可用宽度(减去边距)。这不起作用。为什么?

  <div style="background:yellow; padding:5px;">
    <input id="test-input" type="text" />
  </div>
  <style type="text/css">
    *  box-sizing: border-box; 
    #test-input 
        margin-left: 10px;
        margin-right: 10px;
        width: auto;
        display: block;
        border: 1px black solid;
    
  </style>

【问题讨论】:

box-sizing:仅供参考,您仍然需要 Firefox 的前缀(以及较小程度的 WebKit)caniuse.com 如果您需要兼容 IE8- 和 android 4.3- 的解决方案,请在 parent 和 width: 100% 上设置更大的填充 【参考方案1】:

您可以使用 CSS3 calc() 函数来计算不包括左右边距的width,如下所示:

#test-input 
    margin-left: 10px;
    margin-right: 10px;
    width: calc(100% - 20px); /* Exclude left/right margins */
    display: block;

WORKING DEMO

或者使用padding作为容器而不是使用margin作为输入:

<div class="parent">
    <input id="test-input" type="text" />
</div>
.parent 
    padding: 5px 15px;


#test-input 
    width: 100%;
    display: block;

WORKING DEMO

【讨论】:

嘿,我刚刚从您的回答中学到了一些东西,我不知道您可以使用 calc。感谢分享! 谢谢@Hashem。我以前从未见过 CSS calc。 “填充”也有效,但您必须删除“边距”以避免溢出似乎有点奇怪。我认为 box-sizing:border-box 应该解决这个问题。 您可能需要注意calc() 是实验性的,并不适用于所有浏览器。 @j08691 没错,我添加了指向 MDN 页面的链接以供进一步阅读。 再次感谢 Hashem 和 @j08691!

以上是关于如何使输入文本字段采用所有可用宽度?的主要内容,如果未能解决你的问题,请参考以下文章

如何使文本输入框占据父块内的所有剩余宽度?

如何使 DockPanel 中的项目扩展以适应 WPF 中的所有可用空间?

将 html 画布大小调整为所有可用宽度并向下调整到底部

使 div 展开以占用所有可用空间 [重复]

宽度=“*”的网格列未按预期使用所有可用空间[重复]

颤振图标如何填充选项卡中可用的所有宽度和高度