【问题标题】:Twitter Bootstrap .col on a <label><label> 上的 Twitter Bootstrap .col
【发布时间】:2015-08-12 22:52:19
【问题描述】:

当使用 Twitter Bootstrap 两列时,在 xs 设备上查看时,每列宽 12 列,将它们自己呈现在一行上:

<label for="contact" class="col-sm-3 control-label">Preferred Contact Method:</label>
<label for="telephone" class="col-sm-2 control-label">
  <small><em>Telephone</em></small>
</label>

在小型移动设备上查看时,列应有效地扩展到每个col-xs-12;但是,这两个项目彼此相邻显示,表明情况并非如此。更奇怪的是,另一个项目,比如col-sm-2,确实出现在下一行。

上述问题和正确的功能可以通过将&lt;label&gt; 包装在&lt;div&gt; 中来实现。我的印象是 col-* 类可以用于任何元素;但是,也许我已经理解了这个错误,因为将其应用于&lt;label&gt; 不会产生预期的结果,也就是说,&lt;label&gt; 不会扩展以填充row,除非它出现在&lt;div&gt; 之后/之后。

是我的理解不正确还是另有原因?

【问题讨论】:

标签: html css twitter-bootstrap


【解决方案1】:

我的印象是 col-* 类可以用于任何元素

是的,一般来说,您几乎可以在任何元素上使用 col-* 类 - 但如果没有 row 元素围绕它们,您可能无法获得预期的结果。 (例如,.row 在左侧和右侧包含一个负边距,以抵消在它们之间产生“gutter”的列之间的填充。)

但是,对于您的具体问题,您可以通过两种方式解决。
要么在它们两个上添加 col-xs-12 类 - 这将应用 width:100%,并使它们在小屏幕上跨越整个宽度。
或者添加label { display:block; },这将使它们也采用全宽——默认情况下,它们是内联元素。

【讨论】:

  • 谢谢。我知道我可以添加col-xs-12;但是,我的印象是 Bootstrap 首先是移动设备,因此如果没有为 xs 大小的设备指定任何内容,那么它假定元素是 col-xs-12。显然,除了&lt;div&gt; 元素之外,它不会这样做。
  • 如果没有col-xs-12 类,则根本不会对小屏幕上的元素应用额外的格式。正如我所说,label 默认情况下是一个内联元素,因此它只占用其内容所需的空间。如果您不想添加引导类,那么正如我所说,通过您自己的样式表应用 display:block 也可以。
  • 我对您的部分回复我已在另一篇帖子中回复。我没有问过如何解决这个问题,就像我在问题中所说的那样,我已经通过将其中一个包装在 &lt;div&gt; 中来解决它;但是,我相信您对 &lt;label&gt; 作为内联元素的评论可能是关键。但是,它没有解释为什么没有指定 col-xs 会将块级元素呈现为全屏宽度,而内联元素则不会。有什么想法吗?
  • “它没有解释为什么没有指定 col-xs 会将块级元素呈现为全屏宽度” – 默认情况下,块元素仅采用全宽。
【解决方案2】:

以下代码是我认为你想要的:

.control-label{
    background:#00F;
    color:#FFF;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
<label for="contact" class="col-xs-12 col-sm-3 col-md-6 control-label">Preferred Contact Method:</label>
<label for="telephone" class="col-xs-12 col-sm-2 col-md-6 control-label">
  <small><em>Telephone</em></small>
</label>

在非常小的设备(小于 768 像素)上是全宽 - 即 col-xs - 在小型设备上是四分之一宽度(在 768 像素和 992 像素之间) - 即 col-sm - 在任何大于该值的设备上为半角 - 即 col-md

如果我弄错了,请说更新我的答案。 如果有帮助,+1。

【讨论】:

  • 感谢您的回答。但是,我知道我可以添加 col-xs-12 来解决问题,但是,我的印象是 Bootstrap 是移动优先的,因此如果没有为 xs 大小的设备指定任何内容,那么它假定元素是 col-xs-12。显然,除了&lt;div&gt; 元素之外,它不会这样做,至少它不适用于&lt;label&gt; 元素。
  • 没有。它不是移动优先的框架,必须指定是否希望某些元素以这种方式运行。我很高兴能帮上忙。接受答案会很好。或 + :)
  • 也许我误解了他们的website,但它说:Bootstrap 是最流行的 HTML、CSS 和 JS 框架,用于开发响应式、移动优先项目 它还说here 在第三个标题中是Mobile First。最后,在媒体查询部分它说xs 是默认值。在tutorial page 上,它还说 我们不必为超小型设备定义任何内容,因为默认值为一列。 有什么想法?
  • 但是标签是内联块,如果引导程序使内联块元素全宽(或任何其他宽度)按钮和跨度看起来全宽(意味着可怕和不需要)。跨度>
猜你喜欢
  • 2020-08-14
  • 1970-01-01
  • 2014-09-09
  • 2016-10-25
  • 2016-03-16
  • 2013-10-02
  • 1970-01-01
  • 2013-11-13
  • 2013-08-06
相关资源
最近更新 更多