章节
问答
课签
笔记
评论
占位
占位

按钮(按钮组)

单个按钮在Web页面中的运用有时候并不能满足我们的业务需求,常常会看到将多个按钮组合在一起使用,比如富文本编辑器里的一组小图标按钮等。那么在这一节中,我们主要向大家介绍Bootstrap框架为大家提供的按钮组组件。

源码查询:

按钮组也是一个独立的组件,所以可以找到对应的源码文件:

  ☑  LESS版本:对应的源文件为buttons.less

  ☑  Sass版本:对应的源文件为_buttons.scss

  ☑  CSS版本:对应bootstrap.css文件第3131行~第3291行

使用方法:

按钮组和下拉菜单组件一样,需要依赖于button.js插件才能正常运行。不过我们同样可以直接只调用bootstrap.js文件。因为这个文件已集成了button.js插件功能。

对于结构方面,非常的简单。使用一个名为“btn-group”的容器,把多个按钮放到这个容器中。如下所示:

<div class="btn-group">
  <button type="button" class="btn btn-default">
     <span class="glyphicon glyphicon-step-backward"></span>
  </button>
   …
  <button type="button" class="btn btn-default">
     <span class="glyphicon glyphicon-step-forward"></span>
  </button>
</div>

运行效果如下所示:

除了可以使用<button>元素之外,还可以使用其他标签元素,比如<a>标签。唯一要保证的是:不管使用什么标签,“.btn-group”容器里的标签元素需要带有类名“.btn”。

按钮组实现源码如下:

/*查看bootstrap.css文件第3131行~第3161行*/

.btn-group,
.btn-group-vertical {
  position: relative;
  display: inline-block;
  vertical-align: middle;
}
.btn-group > .btn,
.btn-group-vertical > .btn {
  position: relative;
  float: left;
}
.btn-group > .btn:hover,
.btn-group-vertical > .btn:hover,
.btn-group > .btn:focus,
.btn-group-vertical > .btn:focus,
.btn-group > .btn:active,
.btn-group-vertical > .btn:active,
.btn-group > .btn.active,
.btn-group-vertical > .btn.active {
  z-index: 2;
}
.btn-group > .btn:focus,
.btn-group-vertical > .btn:focus {
  outline: none;
}
.btn-group .btn + .btn,
.btn-group .btn + .btn-group,
.btn-group .btn-group + .btn,
.btn-group .btn-group + .btn-group {
   margin-left: -1px;
}

从效果图上我们可以看出,按钮组四个角都是圆角(支持CSS3的浏览器),但有的小伙伴会问,我们平常制作网页时每个按钮都是带有圆角,而在按钮组中的按钮,除了第一个和最后一个具有边上的圆角之外,其他的按钮没有圆角,它是怎么实现的呢?其实实现方法非常简单:

  1、默认所有按钮都有圆角

  2、除第一个按钮和最后一个按钮(下拉按钮除外),其他的按钮都取消圆角效果

  3、第一个按钮只留左上角和左下角是圆角

  4、最后一个按钮只留右上角和右下角是圆角

对应的源码如下:

/*查看bootstrap.css文件第3174行~第3203行*/

.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
  border-radius: 0;
}
.btn-group > .btn:first-child {
  margin-left: 0;
}
.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.btn-group > .btn:last-child:not(:first-child),
.btn-group > .dropdown-toggle:not(:first-child) {
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group > .btn-group {
  float: left;
}
.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
  border-radius: 0;
}
.btn-group > .btn-group:first-child> .btn:last-child,
.btn-group > .btn-group:first-child> .dropdown-toggle {
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.btn-group > .btn-group:last-child> .btn:first-child {
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
}

任务

我来试试:完成下面任务

结合上一章中的图标,完成一组按钮组效果,效果图如下:

?不会了怎么办

参考代码如下:

 <div class="btn-group">
      <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-search"></span></button>
      <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-zoom-in"></span></button>
      <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-zoom-out"></span></button>
      <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-download"></span></button>
      <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-upload"></span></button>     
  </div>

备注:这一小节没有正确性验证,请查看结果窗口与教案所给的结果图片是否一致,从而判断输入代码是否正确。

||
1
2
<!DOCTYPE HTML>
<html>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1
body{margin:30px
    ;padding
    :30px;}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
提交
重置代码
||

请验证,完成请求

由于请求次数过多,请先验证,完成再次请求

加群二维码

打开微信扫码自动绑定

您还未绑定服务号

绑定后可得到

  • · 粉丝专属优惠福利
  • · 大咖直播交流干货
  • · 课程更新,问题答复提醒
  • · 账号支付安全提醒

收藏课程后,能更快找到我哦~

使用 Ctrl+D 可将课程添加到书签

邀请您关注公众号
关注后,及时获悉本课程动态

举报

0/150
提交
取消
全部 精华 我要发布

最新回答 / 主宰灵魂
.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle)
选择出.btn-group下的所有子.btn,筛选出为其父的首元素的,再筛选除出不是其父的尾元素的,也就是父元素只有一个子就不行,再进一步筛选出类名不为.dropdown-toggle的.

已采纳回答 / 慕码人1194994
jquery啊  bootstrap.js库都是依赖jquery的的 这应该是引用的jquery

已采纳回答 / 于Sir_
这属于清浮动问题  清浮动的方法有很多种  给父级也加浮动给父级DISPLAY:inline-block给浮动元素下加<div style="clear:both;height:0;font-size:0"></div>给浮动元素下加<br clear="all"/>这种就是你说的那种  最好后边加上zoom:1      zoom会触发ie下haslayout(也可算第六种方法)给父级加overflow  最好配合zoom:1使用   这样完美兼容任何浏览器     ...

已采纳回答 / 相约去青楼
你本地预览走的是file://协议,<...图片...>这前面加上http,让它走http协议

最新回答 / 慕粉3609974
bootstrap.js包括了所有需要单独引用的bootstrap的分类js

最新回答 / JoKer49
<link rel="stylesheet" href="css/bootstrap.min.css">  官网上下一个bootstrap包   如果不想下 就用:<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">

最新回答 / 兴琴
glyphicon-zoom-in 这个是正确的

已采纳回答 / Rstudy
引入<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">  就可以了

已采纳回答 / qq_殇之咏叹调_0
js文件用于添加open和取消open样式,,,未压缩版的bootstrap应该有

已采纳回答 / 李晓健
因为他们有空白字符(是因为代码换行产生的)解决方案有很多 <...code...><...code...>上面两种方法都可以,第一种是设他们父级的字体大小为0,第二种是两个button的html代码不要换行

最新回答 / qq_夜之静_0
很多功能用js实现比较简单而且效果也更好看!

已采纳回答 / Perona
:not是css3选择器。表示匹配非指定元素/选择器的每个元素。可以看下这一节:http://www.imooc.com/code/734

已采纳回答 / HeyLuckyGirl
font文件无法被跨域调用,将bootstrap3中的fonts文件(里面有glyphicons-halflings-regular)放到css同级。
全部 我要发布
最热 最新
只看我的

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

账号登录 验证码登录

遇到问题
忘记密码

代码语言