使用 Bootstrap v4 对齐按钮
Justify buttons with Bootstrap v4
Bootstrap v4 删除了 .btn-group-justified
class,参见 https://github.com/twbs/bootstrap/issues/17631
如何调整按钮:
<div class="btn-group btn-group-justified" role="group" aria-label="Justified button group">
<a class="btn btn-primary" href="#" role="button">Left</a>
<a class="btn btn-primary" href="#" role="button">Middle</a>
<a class="btn btn-primary" href="#" role="button">Right</a>
</div>
确实缺少导航对齐 class。暂时可以根据TB3的代码自行添加:
SCSS代码
// Justified button groups
// ----------------------
.btn-group-justified {
display: table;
width: 100%;
table-layout: fixed;
border-collapse: separate;
.btn,
.btn-group {
float: none;
display: table-cell;
width: 1%;
.btn {
width: 100%;
}
.dropdown-menu {
left: auto;
}
}
}
编译CSS代码
.btn-group-justified {
display: table;
width: 100%;
table-layout: fixed;
border-collapse: separate; }
.btn-group-justified .btn,
.btn-group-justified .btn-group {
float: none;
display: table-cell;
width: 1%; }
.btn-group-justified .btn .btn,
.btn-group-justified .btn-group .btn {
width: 100%; }
.btn-group-justified .btn .dropdown-menu,
.btn-group-justified .btn-group .dropdown-menu {
left: auto; }
HTML
<div class="btn-group btn-group-justified" role="group" aria-label="Justified button group">
<a class="btn btn-primary" href="#" role="button">Left</a>
<a class="btn btn-primary" href="#" role="button">Middle</a>
<a class="btn btn-primary" href="#" role="button">Right</a>
</div>
上面的 HTML 代码现在看起来如下图所示:
处理边框
- 由于特定的 HTML 和 CSS 用于对齐按钮(即
display: table-cell
),它们之间的边框加倍。在常规按钮组中,margin-left: -1px
用于堆叠边框而不是移除边框。但是,margin
不适用于 display: table-cell
。因此,根据您对 Bootstrap 的自定义,您可能希望删除边框或重新为其着色。
充当按钮的链接
- 如果
<a>
元素用作按钮 – 触发页内功能,而不是导航到当前页面内的另一个文档或部分 – 他们也应该被赋予适当的 role="button"
.
下拉菜单
对下拉按钮使用以下 HTML 代码:
<div class="btn-group btn-group-justified" role="group" aria-label="Justified button group with nested dropdown">
<a class="btn btn-secondary" href="#" role="button">Left</a>
<a class="btn btn-secondary" href="#" role="button">Middle</a>
<div class="btn-group">
<button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Action
</button>
<div class="dropdown-menu">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Separated link</a>
</div>
</div>
</div>
带有下拉按钮的对齐按钮组应如下图所示:
有<button>
个元素
- 要使用具有
<button>
个元素的对齐按钮组,您必须将每个按钮包装在一个按钮组中。大多数浏览器没有正确地将我们的 CSS 应用于 <button>
元素,但由于我们支持按钮下拉菜单,我们可以解决这个问题。
HTML
<div class="btn-group btn-group-justified" role="group" aria-label="Justified button group">
<div class="btn-group" role="group">
<button type="button" class="btn btn-secondary">Left</button>
</div>
<div class="btn-group" role="group">
<button type="button" class="btn btn-secondary">Middle</button>
</div>
<div class="btn-group" role="group">
<button type="button" class="btn btn-secondary">Right</button>
</div>
</div>
上面的 HTML 代码用于对齐具有 <button>
元素的按钮组应该如下图所示:
建立在 的基础上,这里是使用 flexbox 代替 display: table;
的相同功能
SCSS代码
// Justified button groups
// ----------------------
.btn-group-justified {
display: flex;
width: 100%;
.btn,
.btn-group {
flex: 1;
.btn {
width: 100%;
}
.dropdown-menu {
left: auto;
}
}
}
HTML
<div class="btn-group btn-group-justified" role="group" aria-label="Justified button group">
<a class="btn btn-primary" href="#" role="button">Left</a>
<a class="btn btn-primary" href="#" role="button">Middle</a>
<a class="btn btn-primary" href="#" role="button">Right</a>
</div>
有关使用下拉菜单、HTML 链接等的更多详细信息,请参阅 。
对于在 Bootstrap 4 Beta 发布后发现此问题的任何人...
<div class="btn-group d-flex" role="group">
<a href="" class="btn btn-secondary w-100">Previous</a>
<a href="" class="btn btn-secondary w-100">Next</a>
</div>
当与 class="dropdown-menu"
和 Bootstrap V4.0 一起使用时,基于上述 Chris Baswell 的解决方案和 Bootstrap 文档:https://getbootstrap.com/docs/4.0/components/button-group/#nesting
<div class="btn-group d-flex" role="group">
<button type="button" class="btn btn-secondary">1</button>
<button type="button" class="btn btn-secondary">2</button>
<div class="btn-group w-100" role="group">
<button type="button" class="btn btn-secondary dropdown-toggle-no-carret w-100" title="MANAGE ENTRIES" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Drop Down
</button>
<div class="dropdown-menu">
<a href="" class="btn btn-secondary w-100">Previous</a>
<a href="" class="btn btn-secondary w-100">Next</a>
</div>
</div>
</div>
Bootstrap v4 删除了 .btn-group-justified
class,参见 https://github.com/twbs/bootstrap/issues/17631
如何调整按钮:
<div class="btn-group btn-group-justified" role="group" aria-label="Justified button group">
<a class="btn btn-primary" href="#" role="button">Left</a>
<a class="btn btn-primary" href="#" role="button">Middle</a>
<a class="btn btn-primary" href="#" role="button">Right</a>
</div>
确实缺少导航对齐 class。暂时可以根据TB3的代码自行添加:
SCSS代码
// Justified button groups
// ----------------------
.btn-group-justified {
display: table;
width: 100%;
table-layout: fixed;
border-collapse: separate;
.btn,
.btn-group {
float: none;
display: table-cell;
width: 1%;
.btn {
width: 100%;
}
.dropdown-menu {
left: auto;
}
}
}
编译CSS代码
.btn-group-justified {
display: table;
width: 100%;
table-layout: fixed;
border-collapse: separate; }
.btn-group-justified .btn,
.btn-group-justified .btn-group {
float: none;
display: table-cell;
width: 1%; }
.btn-group-justified .btn .btn,
.btn-group-justified .btn-group .btn {
width: 100%; }
.btn-group-justified .btn .dropdown-menu,
.btn-group-justified .btn-group .dropdown-menu {
left: auto; }
HTML
<div class="btn-group btn-group-justified" role="group" aria-label="Justified button group">
<a class="btn btn-primary" href="#" role="button">Left</a>
<a class="btn btn-primary" href="#" role="button">Middle</a>
<a class="btn btn-primary" href="#" role="button">Right</a>
</div>
上面的 HTML 代码现在看起来如下图所示:
处理边框
- 由于特定的 HTML 和 CSS 用于对齐按钮(即
display: table-cell
),它们之间的边框加倍。在常规按钮组中,margin-left: -1px
用于堆叠边框而不是移除边框。但是,margin
不适用于display: table-cell
。因此,根据您对 Bootstrap 的自定义,您可能希望删除边框或重新为其着色。
充当按钮的链接
- 如果
<a>
元素用作按钮 – 触发页内功能,而不是导航到当前页面内的另一个文档或部分 – 他们也应该被赋予适当的role="button"
.
下拉菜单
对下拉按钮使用以下 HTML 代码:
<div class="btn-group btn-group-justified" role="group" aria-label="Justified button group with nested dropdown">
<a class="btn btn-secondary" href="#" role="button">Left</a>
<a class="btn btn-secondary" href="#" role="button">Middle</a>
<div class="btn-group">
<button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Action
</button>
<div class="dropdown-menu">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Separated link</a>
</div>
</div>
</div>
带有下拉按钮的对齐按钮组应如下图所示:
有<button>
个元素
- 要使用具有
<button>
个元素的对齐按钮组,您必须将每个按钮包装在一个按钮组中。大多数浏览器没有正确地将我们的 CSS 应用于<button>
元素,但由于我们支持按钮下拉菜单,我们可以解决这个问题。
HTML
<div class="btn-group btn-group-justified" role="group" aria-label="Justified button group">
<div class="btn-group" role="group">
<button type="button" class="btn btn-secondary">Left</button>
</div>
<div class="btn-group" role="group">
<button type="button" class="btn btn-secondary">Middle</button>
</div>
<div class="btn-group" role="group">
<button type="button" class="btn btn-secondary">Right</button>
</div>
</div>
上面的 HTML 代码用于对齐具有 <button>
元素的按钮组应该如下图所示:
建立在 display: table;
SCSS代码
// Justified button groups
// ----------------------
.btn-group-justified {
display: flex;
width: 100%;
.btn,
.btn-group {
flex: 1;
.btn {
width: 100%;
}
.dropdown-menu {
left: auto;
}
}
}
HTML
<div class="btn-group btn-group-justified" role="group" aria-label="Justified button group">
<a class="btn btn-primary" href="#" role="button">Left</a>
<a class="btn btn-primary" href="#" role="button">Middle</a>
<a class="btn btn-primary" href="#" role="button">Right</a>
</div>
有关使用下拉菜单、HTML 链接等的更多详细信息,请参阅
对于在 Bootstrap 4 Beta 发布后发现此问题的任何人...
<div class="btn-group d-flex" role="group">
<a href="" class="btn btn-secondary w-100">Previous</a>
<a href="" class="btn btn-secondary w-100">Next</a>
</div>
当与 class="dropdown-menu"
和 Bootstrap V4.0 一起使用时,基于上述 Chris Baswell 的解决方案和 Bootstrap 文档:https://getbootstrap.com/docs/4.0/components/button-group/#nesting
<div class="btn-group d-flex" role="group">
<button type="button" class="btn btn-secondary">1</button>
<button type="button" class="btn btn-secondary">2</button>
<div class="btn-group w-100" role="group">
<button type="button" class="btn btn-secondary dropdown-toggle-no-carret w-100" title="MANAGE ENTRIES" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Drop Down
</button>
<div class="dropdown-menu">
<a href="" class="btn btn-secondary w-100">Previous</a>
<a href="" class="btn btn-secondary w-100">Next</a>
</div>
</div>
</div>