【问题标题】:Input box 100% width, with label to the left输入框 100% 宽度,左侧有标签
【发布时间】:2011-07-15 21:39:36
【问题描述】:

我正在尝试使用 100% 宽度的流体输入框,同时让标签向左浮动。这是我目前拥有的:

.left {
  float: left;
}

input {
  width: 100%;
}

<form>
    <label class="left">Name:</label>
    <input class="left" id="name" name="name"/>
    <div class="clear"></div>
</form>

这可行,但它会下降到标签下方。如果我使用父 div 来分配浮点数,那么它不会跨越 100%。有什么想法吗?

谢谢!

【问题讨论】:

  • 你想做什么?您是否尝试将输入框和标签放在同一行?如果您有一个 100% 容器宽度的输入框,则同一行上没有标签的空间,因此不可能这样做。

标签: css


【解决方案1】:

参见: http://jsfiddle.net/r2769/ (调整窗口大小)

CSS:

.left {
    float: left;
}

.left2 {
    overflow: hidden;
    display: block;
    padding: 0 4px 0 10px
}
.left2 input {
    width: 100%
}

HTML:

<form>
    <label class="left" for="name">Name:</label>
    <span class="left2"><input id="name" name="name" /></span>
</form>

方法is here的解释。

【讨论】:

  • 是的,它真的很有用:)
  • 感谢在一个漂亮的 jsfiddle 上展示的聪明想法。
  • 你知道如何反其道而行之,文字在右边吗?比看起来更棘手。
  • @mpen: *.com/questions/6938900/… / jsfiddle.net/thirtydot/Khmhk/782。我现在通常使用display: table。也可以用 flexbox 来做。
  • @thirtydot 酷。我使用了表格变体。谢谢!
【解决方案2】:

我最近发现了 css 中的 calc:

width: calc(100% - 100px);

这个可以用来解决这个问题:jsfiddle here

HTML:

<div class="setting">
    label
    <input class="s2"/>
</div>

CSS:

.setting {
    position: relative;
    width: 100%;
}
.setting .s2 {
    position: absolute;
    left: 180px;
    width: calc(100% - 184px);
}

【讨论】:

  • 有效,但并非所有现代浏览器都支持(3 个版本)。中断,尤其是在 Safari 5 中