Foundation 按钮组
按钮组允许你将多个相关按钮组合在一起,形成一个紧凑的按钮集合。本章将介绍 Foundation 按钮组的各种用法。
基本按钮组
使用 .button-group 类创建基本按钮组:
html
<div class="button-group">
<a class="button">第一个</a>
<a class="button">第二个</a>
<a class="button">第三个</a>
</div>按钮组颜色
按钮组可以应用所有标准按钮颜色:
html
<!-- Primary 按钮组 -->
<div class="button-group primary">
<a class="button">按钮 1</a>
<a class="button">按钮 2</a>
<a class="button">按钮 3</a>
</div>
<!-- Secondary 按钮组 -->
<div class="button-group secondary">
<a class="button">按钮 1</a>
<a class="button">按钮 2</a>
<a class="button">按钮 3</a>
</div>
<!-- Success 按钮组 -->
<div class="button-group success">
<a class="button">按钮 1</a>
<a class="button">按钮 2</a>
<a class="button">按钮 3</a>
</div>
<!-- Warning 按钮组 -->
<div class="button-group warning">
<a class="button">按钮 1</a>
<a class="button">按钮 2</a>
<a class="button">按钮 3</a>
</div>
<!-- Alert 按钮组 -->
<div class="button-group alert">
<a class="button">按钮 1</a>
<a class="button">按钮 2</a>
<a class="button">按钮 3</a>
</div>混合颜色
也可以为单个按钮指定不同颜色:
html
<div class="button-group">
<a class="button primary">主要</a>
<a class="button secondary">次要</a>
<a class="button success">成功</a>
<a class="button alert">警告</a>
</div>按钮组尺寸
按钮组支持不同尺寸:
html
<!-- Tiny 尺寸 -->
<div class="button-group tiny">
<a class="button">Tiny 1</a>
<a class="button">Tiny 2</a>
<a class="button">Tiny 3</a>
</div>
<!-- Small 尺寸 -->
<div class="button-group small">
<a class="button">Small 1</a>
<a class="button">Small 2</a>
<a class="button">Small 3</a>
</div>
<!-- 默认尺寸 -->
<div class="button-group">
<a class="button">默认 1</a>
<a class="button">默认 2</a>
<a class="button">默认 3</a>
</div>
<!-- Large 尺寸 -->
<div class="button-group large">
<a class="button">Large 1</a>
<a class="button">Large 2</a>
<a class="button">Large 3</a>
</div>扩展按钮组
使用 .expanded 类让按钮组占满容器宽度:
html
<div class="button-group expanded">
<a class="button">按钮 1</a>
<a class="button">按钮 2</a>
<a class="button">按钮 3</a>
</div>按钮会自动等分宽度。
堆叠按钮组
使用 .stacked 类让按钮垂直堆叠:
html
<div class="button-group stacked">
<a class="button">第一行</a>
<a class="button">第二行</a>
<a class="button">第三行</a>
</div>响应式堆叠
在小屏幕上堆叠,大屏幕上水平排列:
html
<div class="button-group stacked-for-small">
<a class="button">按钮 1</a>
<a class="button">按钮 2</a>
<a class="button">按钮 3</a>
</div>可用的响应式堆叠类:
.stacked-for-small- 小屏幕堆叠.stacked-for-medium- 中等屏幕及以下堆叠
空心按钮组
结合 .hollow 类创建空心按钮组:
html
<div class="button-group hollow">
<a class="button">按钮 1</a>
<a class="button">按钮 2</a>
<a class="button">按钮 3</a>
</div>
<div class="button-group hollow primary">
<a class="button">Primary 1</a>
<a class="button">Primary 2</a>
<a class="button">Primary 3</a>
</div>清除样式按钮组
使用 .clear 类创建透明按钮组:
html
<div class="button-group clear">
<a class="button primary">按钮 1</a>
<a class="button primary">按钮 2</a>
<a class="button primary">按钮 3</a>
</div>分割按钮
分割按钮由主按钮和下拉触发器组成:
html
<div class="button-group">
<a class="button">保存</a>
<button class="dropdown button arrow-only" data-toggle="save-dropdown">
<span class="show-for-sr">显示更多选项</span>
</button>
</div>
<div class="dropdown-pane" id="save-dropdown" data-dropdown data-auto-focus="true">
<ul class="menu vertical">
<li><a href="#">另存为...</a></li>
<li><a href="#">保存副本</a></li>
<li><a href="#">导出</a></li>
</ul>
</div>工具栏样式按钮组
创建工具栏风格的按钮组:
html
<div class="button-group">
<a class="button secondary" aria-label="粗体">
<strong>B</strong>
</a>
<a class="button secondary" aria-label="斜体">
<em>I</em>
</a>
<a class="button secondary" aria-label="下划线">
<u>U</u>
</a>
</div>
<div class="button-group">
<a class="button secondary" aria-label="左对齐">
<i class="fa fa-align-left"></i>
</a>
<a class="button secondary" aria-label="居中">
<i class="fa fa-align-center"></i>
</a>
<a class="button secondary" aria-label="右对齐">
<i class="fa fa-align-right"></i>
</a>
<a class="button secondary" aria-label="两端对齐">
<i class="fa fa-align-justify"></i>
</a>
</div>按钮组切换
创建单选或多选切换按钮组:
单选切换
html
<div class="button-group" role="group" aria-label="视图切换">
<button class="button is-active" type="button">列表视图</button>
<button class="button" type="button">网格视图</button>
<button class="button" type="button">详细视图</button>
</div>
<style>
.button-group .button.is-active {
background-color: #1468a0;
}
</style>
<script>
document.querySelectorAll('.button-group .button').forEach(button => {
button.addEventListener('click', function() {
this.parentNode.querySelectorAll('.button').forEach(btn => {
btn.classList.remove('is-active');
});
this.classList.add('is-active');
});
});
</script>多选切换
html
<div class="button-group" role="group" aria-label="功能选择">
<button class="button hollow" type="button" data-toggle-btn>功能 A</button>
<button class="button hollow" type="button" data-toggle-btn>功能 B</button>
<button class="button hollow" type="button" data-toggle-btn>功能 C</button>
</div>
<script>
document.querySelectorAll('[data-toggle-btn]').forEach(button => {
button.addEventListener('click', function() {
this.classList.toggle('hollow');
});
});
</script>多组按钮组
使用网格布局组织多个按钮组:
html
<div class="grid-x grid-padding-x">
<div class="cell small-6 medium-4">
<div class="button-group expanded">
<a class="button">编辑</a>
<a class="button">复制</a>
</div>
</div>
<div class="cell small-6 medium-4">
<div class="button-group expanded">
<a class="button success">保存</a>
<a class="button warning">撤销</a>
</div>
</div>
<div class="cell small-12 medium-4">
<div class="button-group expanded">
<a class="button alert">删除</a>
</div>
</div>
</div>完整示例
html
<!DOCTYPE html>
<html class="no-js" lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Foundation 按钮组示例</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/foundation-sites@6.7.5/dist/css/foundation.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
<style>
.demo-section {
margin-bottom: 30px;
padding: 20px;
background: #f4f4f4;
border-radius: 4px;
}
.demo-section h3 {
margin-bottom: 15px;
border-bottom: 1px solid #ddd;
padding-bottom: 10px;
}
.button-group.is-active-group .button.is-active {
background-color: #1468a0;
}
</style>
</head>
<body>
<div class="grid-container">
<h1>Foundation 按钮组展示</h1>
<div class="demo-section">
<h3>基本按钮组</h3>
<div class="button-group">
<a class="button">第一个</a>
<a class="button">第二个</a>
<a class="button">第三个</a>
</div>
</div>
<div class="demo-section">
<h3>不同颜色</h3>
<div class="button-group primary">
<a class="button">Primary 1</a>
<a class="button">Primary 2</a>
<a class="button">Primary 3</a>
</div>
<br>
<div class="button-group success">
<a class="button">Success 1</a>
<a class="button">Success 2</a>
<a class="button">Success 3</a>
</div>
</div>
<div class="demo-section">
<h3>不同尺寸</h3>
<div class="button-group tiny">
<a class="button">Tiny</a>
<a class="button">Tiny</a>
<a class="button">Tiny</a>
</div>
<br>
<div class="button-group small">
<a class="button">Small</a>
<a class="button">Small</a>
<a class="button">Small</a>
</div>
<br>
<div class="button-group large">
<a class="button">Large</a>
<a class="button">Large</a>
<a class="button">Large</a>
</div>
</div>
<div class="demo-section">
<h3>扩展按钮组</h3>
<div class="button-group expanded">
<a class="button">等宽按钮 1</a>
<a class="button">等宽按钮 2</a>
<a class="button">等宽按钮 3</a>
</div>
</div>
<div class="demo-section">
<h3>空心按钮组</h3>
<div class="button-group hollow primary">
<a class="button">Hollow 1</a>
<a class="button">Hollow 2</a>
<a class="button">Hollow 3</a>
</div>
</div>
<div class="demo-section">
<h3>堆叠按钮组</h3>
<div class="button-group stacked">
<a class="button">第一行</a>
<a class="button">第二行</a>
<a class="button">第三行</a>
</div>
</div>
<div class="demo-section">
<h3>工具栏风格</h3>
<div class="button-group secondary">
<a class="button" aria-label="加粗"><i class="fas fa-bold"></i></a>
<a class="button" aria-label="斜体"><i class="fas fa-italic"></i></a>
<a class="button" aria-label="下划线"><i class="fas fa-underline"></i></a>
</div>
<div class="button-group secondary">
<a class="button" aria-label="左对齐"><i class="fas fa-align-left"></i></a>
<a class="button" aria-label="居中"><i class="fas fa-align-center"></i></a>
<a class="button" aria-label="右对齐"><i class="fas fa-align-right"></i></a>
</div>
</div>
<div class="demo-section">
<h3>切换按钮组</h3>
<div class="button-group is-active-group" id="view-toggle">
<button class="button is-active" type="button">列表</button>
<button class="button" type="button">网格</button>
<button class="button" type="button">详细</button>
</div>
</div>
<div class="demo-section">
<h3>分割按钮</h3>
<div class="button-group">
<a class="button">主要操作</a>
<button class="dropdown button arrow-only" type="button" data-toggle="split-dropdown">
<span class="show-for-sr">更多选项</span>
</button>
</div>
<div class="dropdown-pane" id="split-dropdown" data-dropdown>
<ul class="menu vertical">
<li><a href="#">选项 1</a></li>
<li><a href="#">选项 2</a></li>
<li><a href="#">选项 3</a></li>
</ul>
</div>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/foundation-sites@6.7.5/dist/js/foundation.min.js"></script>
<script>
$(document).foundation();
// 切换按钮组逻辑
document.querySelectorAll('#view-toggle .button').forEach(button => {
button.addEventListener('click', function() {
document.querySelectorAll('#view-toggle .button').forEach(btn => {
btn.classList.remove('is-active');
});
this.classList.add('is-active');
});
});
</script>
</body>
</html>按钮组最佳实践
- 语义化分组:只将相关的操作放在同一个按钮组中
- 数量控制:按钮组内按钮数量建议不超过 5 个
- 可访问性:使用
role="group"和aria-label提供上下文 - 响应式设计:使用响应式堆叠类适应不同屏幕
- 视觉一致性:同一组内的按钮应保持一致的样式
总结
本章我们学习了:
- 基本按钮组的创建
- 按钮组的颜色和尺寸
- 扩展和堆叠按钮组
- 空心和清除样式按钮组
- 分割按钮和工具栏样式
- 切换按钮组的实现
下一章,我们将学习 Foundation 图标。
提示:按钮组非常适合用于分页、工具栏、视图切换等场景。