【问题标题】:Set a button group's width to 100% and make buttons equal width?将按钮组的宽度设置为 100% 并使按钮宽度相等?
【发布时间】:2012-12-21 17:22:25
【问题描述】:

我正在使用 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%;
}

【问题讨论】:

    标签: css twitter-bootstrap


    【解决方案1】:

    BOOTSTRAP 2 (source)

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

    .btn {width:20%;}
    

    编辑:

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

    注意:

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

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

    【讨论】:

    • 完成! (只需要等待 5 分钟,直到 SO 让我接受。)再次感谢。
    • 检查 css3 规则“flex”!
    • @andersoyvind 感谢您提供的信息,但是我在 w3fools.com 上并没有完全出售。我用过 box-sizing:border-box;所以我知道它有效,并且我知道此特定页面上列出的语法/信息是准确的。请记住,任何页面文档代码都容易出错,查看它是否有效的最佳方法是对其进行测试。
    • 如果事先不知道按钮的数量怎么办?
    • @CDT,你现在可能会使用 flex。假设您不必支持旧版本的 IE。 OregonJeff 在他的回答中有一个 flex 的例子。
    【解决方案2】:

    我不喜欢 .btn 上设置宽度的解决方案,因为它假定 .btn 组中的项目数量总是相同的。这是一个错误的假设,会导致臃肿的、特定于表示的 CSS。

    更好的解决方案是更改 .btn-group 与 .btn-block 和子 .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/

    【讨论】:

    • 哦,第二个:对于 Bootstrap 3,请使用 .btn-group-justified
    • 这不会为单个按钮产生相等的长度。有什么要补充的吗?
    • @PiotrekZatorski,你错了。我提供的示例使用的是 Bootstrap 2,但这个更新版本使用的是 Bootstrap 3.3.6。 jsfiddle.net/DEwX8/138
    • @MalayDesai,我的第二把小提琴绝对会产生等宽按钮(在合理范围内)。如果您在一个中放置大量文本而在另一个中放置很少的文本,显然不会,但对于相似长度的按钮字符串,它们将具有相同的宽度。在第二个小提琴中,它们都是 96px 宽。
    【解决方案3】:

    Bootstrap 有 .btn-group-justified css 类。

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

    With &lt;a&gt; tags

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

    With &lt;button&gt; tags

    <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>
    

    【讨论】:

    • 举个例子可能会有用。
    • 重要的是要指出,使用.btn-group-justified 时,基于&lt;a&gt;&lt;button&gt; 标签getbootstrap.com/components/#with-<a>-elements 构建它的方式有所不同
    • 这绝对应该是公认的答案。你知道为什么我们需要将每个.btn 包装在.btn-group 中吗?
    • 这就是我想要的,谢谢。当我们修改宽度时,它肯定会扼杀响应能力。这很完美。 :-)
    • 此选项已在 Bootstrap 4 中删除:getbootstrap.com/docs/4.2/migration/#button-group
    【解决方案4】:

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

    你必须将它添加到父元素,然后像这样用 .btn-group 将每个 btn 元素包装在一个 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>
    

    【讨论】:

    • 这将平均分割按钮,如果你想让一个按钮比另一个大,你需要设置每个按钮的宽度:&lt;div class="btn-group" style="width: 80%"&gt;&lt;div class="btn-group" style="width: 20%"&gt;会给你一个 80-20分裂。
    【解决方案5】:

    Angular - 等宽按钮组

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

    • 确保父 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>
    

    【讨论】:

      【解决方案6】:

      <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>

      【讨论】:

        【解决方案7】:

        引导程序 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>
        

        【讨论】:

        【解决方案8】:

        对于 bootstrap 4,只需添加这个类:

        w-100

        【讨论】:

        • 如果一行中的一个按钮有环绕文本但另一个没有,则也添加 h-100。
        【解决方案9】:

        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>
        

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

        【讨论】:

          【解决方案10】:

          Bootstrap 4 删除了 .btn-group-justified。作为替代,您可以使用 &lt;div class="btn-group d-flex" role="group"&gt;&lt;/div&gt; 作为 .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>
          

          【讨论】:

          • 这个答案很棒,获取按钮的大小以适应屏幕的分辨率。
          猜你喜欢
          • 2015-06-24
          • 2023-03-23
          • 1970-01-01
          • 2015-10-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-15
          • 2016-12-07
          相关资源
          最近更新 更多