以内联形式引导全角文本输入


138

我正在努力创建一个适合我的容器区域整个宽度的文本框。

<div class="row">
    <div class="col-md-12">
        <form class="form-inline" role="form">           
                <input type="text" class="form-control input-lg" id="search-church" placeholder="Your location (City, State, ZIP)">
                <button type="submit" class="btn btn-lg">Search</button>            
        </form>
    </div>
</div>

当我执行上述操作时,正如我期望的那样,这两个表单元素都是内联的,但充其量最多不会占用几列。将鼠标悬停col-md-12在firebug中的div上会显示它占用了预期的全宽。只是文本输入似乎无法填充。我什至尝试添加行内宽度值,但没有任何改变。我知道这应该很简单,只是现在感觉真傻。

这是一个小提琴:http : //jsfiddle.net/52VtD/4119/embedded/result/

编辑:

选择的答案在各个方面都是彻底的,并且是一个很好的帮助。这就是我最终使用的。但是,我认为最初的问题实际上是Visual Studio 2013中默认MVC5模板的问题。它在Site.css中包含此问题:

input,
select,
textarea {
    max-width: 280px;
}

显然,这阻止了文本输入的适当扩展。向未来的ASP.NET模板用户发出警告。


6
我只想第二次就默认MVC5模板的问题找到您的发现。我花了一个小时研究这个问题,然后在Bootstrap上进行了(错误的)诅咒,然后才在jsfiddle中找到一个有效的示例,促使我重新开始使用干净的HTML页面,并且工作正常。直到那时,我才发现VS2013模板存在问题,并且遇到了这篇文章。善良知道为什么要决定最大宽度,但这表明您在使用其他人的代码时必须小心。当遇到这样的问题时,这也证明了可以重返基础知识。
詹森·斯内德斯

2
谢谢,也使用asp.net模板,但是我已经将输入的最大宽度设置为none,但是仅当我手动将其设置为100%时,它仍然不会占用整个宽度。但是然后它右边的按钮下降了,我希望它保持在同一行。
罗南·费斯廷格

@Killnine您问题中的编辑消除了我的头痛。实际上是问题所在,谢谢您编辑您的帖子!
Flame_Phoenix

我从site.css文件中删除了一部分CSS,但仍然遇到相同的问题。有任何想法吗?
dave317

1
Dayuuumn!一直在为此苦苦挣扎,事实证明这是一个MVC问题!我不检查文本框的css属性真是愚蠢!感谢您指出了这一点!
Hajjat

Answers:


99

引导文档对此进行了说明

需要自定义宽度默认情况下,Bootstrap中的输入,选择和文本区域的宽度为100%。要使用内联表单,您必须在其中使用的表单控件上设置宽度。

form-control如果您form-inline在表单上使用该类,则所有表单元素在获得该类时获得的默认宽度为100%,这并不适用。

您可以看一下bootstrap.css(或.less,无论您喜欢什么),在这里您可以找到以下部分:

.form-inline {

  // Kick in the inline
  @media (min-width: @screen-sm-min) {
    // Inline-block all the things for "inline"
    .form-group {
      display: inline-block;
      margin-bottom: 0;
      vertical-align: middle;
    }

    // In navbar-form, allow folks to *not* use `.form-group`
    .form-control {
      display: inline-block;
      width: auto; // Prevent labels from stacking above inputs in `.form-group`
      vertical-align: middle;
    }
    // Input groups need that 100% width though
    .input-group > .form-control {
      width: 100%;
    }

    [...]
  }
}

也许您应该看一下input-groups,因为我想它们正好具有您要使用的标记(在这里工作很简单):

<div class="row">
   <div class="col-lg-12">
    <div class="input-group input-group-lg">
      <input type="text" class="form-control input-lg" id="search-church" placeholder="Your location (City, State, ZIP)">
      <span class="input-group-btn">
        <button class="btn btn-default btn-lg" type="submit">Search</button>
      </span>
    </div>
  </div>
</div>

3
请参阅上面的编辑。我认为ASP.NET模板中的Site.css可能使我对此感兴趣。但是,这是一个了不起的答案,对将来的参考很有帮助。
Killnine 2014年

5
输入组是进行此操作的方法。就个人而言,当我不希望按钮紧挨输入旁边时,我将输入组样式调整为类似于嵌入式表单。使用Bootstrap LESS的工作演示包括:jsfiddle.net/silb3r/gwxc5c75
cfx

1
真好!我知道这个问题是特定于Bootstrap的,但是如果有人希望将其放入没有Bootstrap的站点(不是Bootstrap LESS;),我在这里提取了相关样式:stackoverflow.com/a/27413796/1241736
henry

小提琴中的Bootstrap链接已损坏。它可能指向了新版本的Bootstrap,并且Fiddle不再起作用。
克洛伊(Chloe)

@Chloe你是对的,小提琴使用的是不存在的bootstrap css文件。我刚刚更新了小提琴,它再次起作用。
morten.c

32

看一下这样的东西:

<form role="form">  
    <div class="row">
      <div class="col-xs-12">
        <div class="input-group input-group-lg">
            <input type="text" class="form-control" />
          <div class="input-group-btn">
            <button type="submit" class="btn">Search</button>
          </div><!-- /btn-group -->
        </div><!-- /input-group -->
      </div><!-- /.col-xs-12 -->
    </div><!-- /.row -->
</form>

http://jsfiddle.net/n6c7v/1/


10

类似问题中所述,请尝试删除input-group该类的实例,看看是否有帮助。

指的是引导程序:

各个表单控件会自动接收某些全局样式。所有具有.form-control的text,和元素均设置为width:100%; 默认。将标签和控件包装在.form-group中以获得最佳间距。


每人这不适用于嵌入式表单。因此,您需要输入组将其强制为100%
user441058'1

3

尝试以下类似的方法以达到所需的结果

input {
    max-width: 100%;
}

1

对于Bootstrap> 4.1,这只是使用flexbox实用程序类的一种情况。只需在列内放置一个flexbox容器,然后将其中的所有元素都设为“ flex-fill”类即可。与内联表单一样,您需要自己设置元素的边距/填充。

.prop-label {
    margin: .25rem 0 !important;
}

.prop-field {
    margin-left: 1rem;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"/>
<div class="row">
	<div class="col-12">
		<div class="d-flex">
			<label class="flex-fill prop-label">Label:</label>
			<input type="text" class="flex-fill form-control prop-field">
		</div>
	</div>
</div>

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.