# 按钮
## [](https://v3.bootcss.com/css/#buttons-tags)可作为按钮使用的标签或元素
为`<a>`、`<button>`或`<input>`元素添加按钮类(button class)即可使用 Bootstrap 提供的样式。
![](https://img.kancloud.cn/e8/49/e849646a7f59fc8b38f051301dee66a5_847x103.png)
~~~html
<a class="btn btn-default" href="#" role="button">Link</a>
<button class="btn btn-default" type="submit">Button</button>
<input class="btn btn-default" type="button" value="Input">
<input class="btn btn-default" type="submit" value="Submit">
~~~
#### 针对组件的注意事项
虽然按钮类可以应用到 `<a>` 和 `<button>` 元素上,但是,导航和导航条组件只支持 `<button>` 元素。
#### 链接被作为按钮使用时的注意事项
如果 `<a>` 元素被作为按钮使用 -- 并用于在当前页面触发某些功能 -- 而不是用于链接其他页面或链接当前页面中的其他部分,那么,务必为其设置 `role="button"` 属性。
#### 跨浏览器展现
我们总结的最佳实践是:**强烈建议尽可能使用 `<button>` 元素**来获得在各个浏览器上获得相匹配的绘制效果。
另外,我们还发现了 [Firefox <30 版本的浏览器上出现的一个 bug](https://bugzilla.mozilla.org/show_bug.cgi?id=697451),其表现是:阻止我们为基于 `<input>` 元素所创建的按钮设置 `line-height` 属性,这就导致在 Firefox 浏览器上不能完全和其他按钮保持一致的高度。
## 预定义样式
使用下面列出的类可以快速创建一个带有预定义样式的按钮。
![](https://img.kancloud.cn/46/3a/463a4ed8346e636d57b79499bf065eff_1060x183.png)
~~~html
<!-- Standard button -->
<button type="button" class="btn btn-default">(默认样式)Default</button>
<!-- Provides extra visual weight and identifies the primary action in a set of buttons -->
<button type="button" class="btn btn-primary">(首选项)Primary</button>
<!-- Indicates a successful or positive action -->
<button type="button" class="btn btn-success">(成功)Success</button>
<!-- Contextual button for informational alert messages -->
<button type="button" class="btn btn-info">(一般信息)Info</button>
<!-- Indicates caution should be taken with this action -->
<button type="button" class="btn btn-warning">(警告)Warning</button>
<!-- Indicates a dangerous or potentially negative action -->
<button type="button" class="btn btn-danger">(危险)Danger</button>
<!-- Deemphasize a button by making it look like a link while maintaining button behavior -->
<button type="button" class="btn btn-link">(链接)Link</button>
~~~
## 尺寸
需要让按钮具有不同尺寸吗?使用 `.btn-lg`、`.btn-sm` 或 `.btn-xs` 就可以获得不同尺寸的按钮。
~~~html
<p>
<button type="button" class="btn btn-primary btn-lg">(大按钮)Large button</button>
<button type="button" class="btn btn-default btn-lg">(大按钮)Large button</button>
</p>
<p>
<button type="button" class="btn btn-primary">(默认尺寸)Default button</button>
<button type="button" class="btn btn-default">(默认尺寸)Default button</button>
</p>
<p>
<button type="button" class="btn btn-primary btn-sm">(小按钮)Small button</button>
<button type="button" class="btn btn-default btn-sm">(小按钮)Small button</button>
</p>
<p>
<button type="button" class="btn btn-primary btn-xs">(超小尺寸)Extra small button</button>
<button type="button" class="btn btn-default btn-xs">(超小尺寸)Extra small button</button>
</p>
~~~
通过给按钮添加 `.btn-block` 类可以将其拉伸至父元素100%的宽度,而且按钮也变为了块级(block)元素。
![](https://img.kancloud.cn/5d/c3/5dc35a2ae3093b9518279bbc1adbb36c_1062x245.png)
~~~html
<button type="button" class="btn btn-primary btn-lg btn-block">(块级元素)Block level button</button>
<button type="button" class="btn btn-default btn-lg btn-block">(块级元素)Block level button</button>
~~~
## 激活状态
当按钮处于激活状态时,其表现为被按压下去(底色更深、边框夜色更深、向内投射阴影)。对于 `<button>` 元素,是通过 `:active` 状态实现的。对于 `<a>` 元素,是通过 `.active` 类实现的。然而,你还可以将 `.active` 应用到 `<button>` 上(包含 `aria-pressed="true"` 属性)),并通过编程的方式使其处于激活状态。
### [](https://v3.bootcss.com/css/#button-元素)button 元素
由于 `:active` 是伪状态,因此无需额外添加,但是在需要让其表现出同样外观的时候可以添加 `.active` 类。
![](https://img.kancloud.cn/b1/5b/b15bdccfcaf2790bb1c6bca9fb96656d_1057x148.png)
~~~html
<button type="button" class="btn btn-primary btn-lg active">Primary button</button>
<button type="button" class="btn btn-default btn-lg active">Button</button>
~~~
### 链接(`<a>`)元素
可以为基于 `<a>` 元素创建的按钮添加 `.active` 类。
![](https://img.kancloud.cn/8a/2d/8a2d58028d328391d1241ddf34ee9c23_1057x149.png)
~~~html
<a href="#" class="btn btn-primary btn-lg active" role="button">Primary link</a>
<a href="#" class="btn btn-default btn-lg active" role="button">Link</a>
~~~
## 禁用状态
通过为按钮的背景设置 `opacity` 属性就可以呈现出无法点击的效果。
### [](https://v3.bootcss.com/css/#button-元素-1)button 元素
为 `<button>` 元素添加 `disabled` 属性,使其表现出禁用状态。
![](https://img.kancloud.cn/12/e8/12e8cfbbc2ccb8c6cbbd821bf39e35bd_1054x143.png)
~~~html
<button type="button" class="btn btn-lg btn-primary" disabled="disabled">Primary button</button>
<button type="button" class="btn btn-default btn-lg" disabled="disabled">Button</button>
~~~
#### 跨浏览器兼容性
如果为 `<button>` 元素添加 `disabled` 属性,Internet Explorer 9 及更低版本的浏览器将会把按钮中的文本绘制为灰色,并带有恶心的阴影,目前我们还没有解决办法。
### [](https://v3.bootcss.com/css/#链接()元素-1)链接(`<a>`)元素
为基于 `<a>` 元素创建的按钮添加 `.disabled` 类。
![](https://img.kancloud.cn/f9/31/f931dbd6c4758cb4b9a43782882f04f2_1060x147.png)
~~~html
<a href="#" class="btn btn-primary btn-lg disabled" role="button">Primary link</a>
<a href="#" class="btn btn-default btn-lg disabled" role="button">Link</a>
~~~
我们把 `.disabled` 作为工具类使用,就像 `.active` 类一样,因此不需要增加前缀。
#### 链接的原始功能不受影响
上面提到的类只是通过设置 `pointer-events: none` 来禁止 `<a>` 元素作为链接的原始功能,但是,这一 CSS 属性并没有被标准化,并且 Opera 18 及更低版本的浏览器并没有完全支持这一属性,同样,Internet Explorer 11 也不支持。In addition, even in browsers that do support `pointer-events: none`, keyboard navigation remains unaffected, meaning that sighted keyboard users and users of assistive technologies will still be able to activate these links. 因此,为了安全起见,建议通过 JavaScript 代码来禁止链接的原始功能。
- 概览
- 移动设备优先
- 排版与链接
- 布局容器
- 栅格系统
- 简介
- 媒体查询
- 栅格参数
- 实例:从堆叠到水平排列
- 实例:流式布局容器
- 实例:移动设备和桌面屏幕
- 实例:手机、平板、桌面
- 实例:多余的列(column)将另起一行排列
- 响应式列重置
- 列偏移
- 嵌套列
- 列排序
- Less mixin 和变量
- 排版
- 标题
- 页面主体
- 内联文本元素
- 对齐
- 改变大小写
- 缩略语
- 地址
- 引用
- 列表
- 代码
- 表格
- 基本表格
- 状态类
- 响应式表格
- 表单
- 基本表单
- 内联表单
- 水平排列的表单
- 被支持的控件
- 多选和单选框
- 下拉列表
- 静态控件
- 焦点、禁用、只读、校验状态
- 添加额外的图标
- 控件尺寸
- 按钮
- 图片
- 响应式图片
- 图片形状
- 辅助类
- 关闭按钮和三角符号
- 快速浮动
- 让内容块居中
- 清除浮动
- 显示或隐藏内容
- 屏幕阅读器和键盘导航
- 图片替换