将按钮组的宽度设置为100%,并使按钮相等?


71

我正在使用Bootstrap,我想将整个区域设置为btn-group其父元素的宽度的100%。我也希望内部按钮采用相同的宽度。就那样,我也无法实现。

我在这里做了一个JSFiddle:http : //jsfiddle.net/BcQZR/12/

这是HTML:

<div class="span8 background">
<div class="btn-group btn-block" id="colours">
<span class="btn"><input type='checkbox' name='size' value='red'/>red</span>
<span class="btn"><input type='checkbox' name='size' value='orange'/>orange</span>
<span class="btn"><input type='checkbox' name='size' value='yellow'/>yellow</span>
</div> <!-- /btn-group -->
</div>

这是我当前的CSS,它不起作用:

#colours { 
  width: 100%;
}

Answers:


22

BOOTSTRAP 2源代码

问题在于按钮上没有设置宽度。尝试这个:

.btn {width:20%;}

编辑:

默认情况下,按钮采用其文本长度的自动宽度加上一些填充,因此对于您的示例,我猜它可能更像是5个按钮的14.5%(以补偿填充)。

注意:

如果您不想尝试补偿填充,可以使用 box-sizing:border-box;

http://www.w3schools.com/cssref/css3_pr_box-sizing.asp


做完了!(只等了5分钟,直到SO让我接受。)再次感谢。
理查德

2
检查css3规则“ flex”!
mr_app 2013年

2
@andersoyvind感谢您提供信息,但是我在w3fools.com上并未完全售出。我用过box-sizing:border-box; 所以我知道它有效,并且我知道在此特定页面上列出的语法/信息是准确的。请记住,任何页面文档代码都容易出错,而最好的方法是通过测试来查看它是否有效。
Kris Hollenbeck 2014年

如果您事先不知道按钮的数量怎么办?
CDT

@CDT,您现在可能会使用flex。假设您不必支持旧版本的IE。OregonJeff的回答中有一个例子。
克里斯·霍伦贝克

154

引导程序具有 .btn-group-justifiedcss类。

它的结构取决于您使用的标签的类型。

<a>标签

<div class="btn-group btn-group-justified" role="group" aria-label="...">
   ...
</div>

<button>标签

<div class="btn-group btn-group-justified" role="group" aria-label="...">
  <div class="btn-group" role="group">
    <button type="button" class="btn btn-default">Left</button>
  </div>
  <div class="btn-group" role="group">
    <button type="button" class="btn btn-default">Middle</button>
  </div>
  <div class="btn-group" role="group">
    <button type="button" class="btn btn-default">Right</button>
  </div>
</div>

6
一个例子可能是有用的。
拉斐尔·赫斯科维奇

2
重要的是要指出,使用时.btn-group-justified,基于两者<a><button>标签getbootstrap.com/components/#with- <a> -elements的
Cesar Bielich 2015年

4
这绝对是公认的答案。您知道我们为什么需要将每个包装.btn成一个.btn-group吗?
加百利

这就是我想要的谢谢。当我们修改宽度时,它肯定会破坏响应能力。这很完美。:-)
Sundararajan

2
此选项已在Bootstrap 4中删除:getbootstrap.com/docs/4.2/migration/#button-group
marcovtwout

41

无需额外的CSS .btn-group-justified该类不需要。

您必须将其添加到父元素,然后将每个btn元素像这样用.btn-group包裹在div中

    <div class="form-group">

            <div class="btn-group btn-group-justified">
                <div class="btn-group">
                    <button type="submit" id="like" class="btn btn-lg btn-success ">Like</button>
                </div>
                <div class="btn-group">
                    <button type="submit" id="nope" class="btn btn-lg btn-danger ">Nope</button>
                </div>
            </div>

        </div>

3
这将平均拆分按钮,如果您希望一个按钮大于另一个按钮,则需要设置每个按钮的宽度:<div class="btn-group" style="width: 80%"> <div class="btn-group" style="width: 20%">将您拆分为80-20。
银圣骑士

10

我不喜欢.btn上的设置宽度的解决方案,因为它假定.btn组中的项目数始终相同。这是一个错误的假设,并导致膨胀的,特定于演示的CSS。

更好的解决方案是更改显示带有.btn-block的.btn-group和子.btn(s)的方式。我相信这是您要寻找的:

.btn-group.btn-block {
    display: table;
}
.btn-group.btn-block > .btn {
    display: table-cell;
}

这是一个小提琴:http : //jsfiddle.net/DEwX8/123/

如果您希望使用等宽按钮(在合理范围内)并且只能支持支持flexbox的浏览器,请尝试以下操作:

.btn-group.btn-block {
    display: flex;
}
.btn-group.btn-block > .btn {
    flex: 1;
}

这是一个小提琴:http : //jsfiddle.net/DEwX8/124/


4
哦,第二:Bootstrap 3的使用.btn-group-justified
HenningCash 2014年

对于单个按钮,这不会产生相等的长度。有什么要补充的吗?
马来德赛

@PiotrekZatorski,您不正确。我提供的示例使用的是Bootstrap 2,但此更新的版本使用的是Bootstrap 3.3.6。jsfiddle.net/DEwX8/138
俄勒冈州杰夫

@MalayDesai,我的第二个小提琴绝对会产生相等宽度的按钮(在合理的范围内)。如果将大量文本放在一个文本中,而在其他文本中却很少,那么显然不会,但是对于相似长度的按钮字符串,它们的宽度都是相同的。在第二个小提琴中,它们的宽度均为96px。
俄勒冈州杰夫

10

对于bootstrap 4,只需添加此类:

w-100


1
如果一行中的一个按钮具有自动换行符,而另一行没有自动换行,则还可以添加h-100。
吉姆·内夫

3

引导程序4已删除.btn-group-justified。作为替代,您可以将<div class="btn-group d-flex" role="group"></div>.w-100用作元素的包装。

尝试这个:

<div class="btn-group d-flex" role="group>
  <button type="button" class="btn btn-primary w-100">Submit</button>
  <button type="button" class="btn btn-primary w-100">Cancel</button>
</div>

这个答案很好,获取按钮的大小以适应屏幕的分辨率。

1

角度 -等宽按钮组

假设您的范围内有一系列“事物” ...

  • 确保父div的宽度为100%。
  • 使用ng-repeat在按钮组中创建按钮。
  • 使用ng-style计算每个按钮的宽度。

<div class="btn-group"
     style="width: 100%;">
    <button ng-repeat="thing in things"
            class="btn btn-default"
            ng-style="{width: (100/things.length)+'%'}">
        {{thing}}
    </button>
</div>

0

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>

<div class="btn-group btn-block">
  <button type="button" data-toggle="dropdown" class="btn btn-default btn-xs  btn-block  dropdown-toggle">Actions <span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span></button><ul role="menu" class="dropdown-menu"><li><a href="#">Action one</a></li><li class="divider"></li><li><a href="#" >Action Two</a></li></ul></div>


0

引导程序4

            <ul class="nav nav-pills nav-fill">
                <li class="nav-item">
                    <a class="nav-link active" href="#">Active</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">Longer nav link</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">Link</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link disabled" href="#">Disabled</a>
                </li>
            </ul>

5
代码段应始终附有关于该代码为何起作用的某种解释。谢谢!
AJT82'2


0

Bootstrap 4解决方案

<div class="btn-group w-100">
    <button type="button" class="btn">One</button>
    <button type="button" class="btn">Two</button>
    <button type="button" class="btn">Three</button>
</div>

您基本上btn-group可以通过添加w-100类来告诉容器宽度为100%。里面的按钮将自动填充整个空间。

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.