学习Bootstrap3组件之下拉菜单及组合

bootstrap 的组件和基本样式相比,大都是细节修饰性的,使用背景、边框、圆角、分隔线、组合、图标、颜色、大小、阴影进行更精细的修饰,以符合各种情形,丰富了表现能力,让页面从简单的布局过渡到有设计感,让用户能更友好的观感去使用界面。
运用这些组件进行组合,使用页面具有一定级别的艺术性,标准性,而且不用过多的使用自定义样式,就可以获得一个脱离简陋、枯燥的页面,所以说在使用过程中,要善于使用组件,不要拘泥与基本样式的排版,而要选择合适的组件去表现页面内容,使用页面生动、严谨,脱离word文档的感觉。

一、下拉菜单

下拉菜单的基本结构为 .dropdown>([data-toggle="dropdown"]+.dropdown-menu)
也是一个容器,嵌套一个触发器和一个列表。

  • 容器 .dropdown 仅仅是定义一个相对定位,保证菜单弹出位置的正确性,其命名起到一个可读性,可以用其它有相对定位的元素代替。

  • 触发器 ([data-toggle="dropdown"] 由一个属性指定,一般会加上 .dropdown-toggle 类来左浮动,元素大都使用 .btn
    使用 button.btn.btn-default 得到一个有边框的按钮式触发器,使用 span.btn 或者 a.btn 或者 .btn.btn-link 得到一个简单文本的触发器。

  • 菜单使用 .dropdown-menu 类来添加绝对定位、阴影、最小宽度的修饰,一般使用 <ul> 元素来保持内边距。

  • 右侧小箭头在基本样式中定义过,使用一个 <span class="caret"></span> 标签。

    下拉菜单

  • 可以使用图标组件对菜单项进行修饰,因为左边距过大,可以自定义一个样式进行左移。

    .dropdown-menu .glyphicon{
      left: -5px;
    }

二、菜单项修饰

标准的菜单项是由 li>a 构成,bootstrap 提供了标题、分隔线、禁用这几个更细致的修饰。

  • 定义标题项, 在菜单项 <li> 上添加 .dropdown-header 类,标签不再需要 <a>标签,直接是文本内容,呈现为着色#777,大小为12px的不换行文本。
  • 定义分隔条, <li> 上添加 .divider 类, 定义一个高度为1px的浅色分隔条,上下有9px的间隔。
  • 禁用菜单项,只要在 <li> 上添加 .disable 类, 呈现为#777灰色文本,但js操作必须自行判断。
  • .dropdown 容器修改为 .dropup, 或者其它相对定位容器添加 .dropup, 菜单会向上弹出,而且 span.caret 箭头符号会自动向上。
    image.png
  • 对菜单 .dropdown-menu 添加 .dropdown-menu-right 可以右对齐触发器。
备注
.dropdown 类不是必须的,可以被 .dropupbtn-group 等类似的容器类代替,只要实现相对定位即可,.dropdown 仅仅是可读性的加强。

三、按钮组

所谓按钮组,就是把多个按钮水平或者垂直排列,整个组合形成一个整体,可以有整体的圆角,类似分割的胶囊形外观。
按钮组由 .btn-group>.btn*n 构成
多个按钮组可以组合成一个工具栏 .btn-toolbar, 形成多个胶囊组排列的样式。
大多数时候,按钮组是和下拉菜单配合形成一个功能强大的工具栏或者按钮组。

按钮组
    <div class="btn-toolbar">
        <div class="btn-group">
          <button class="btn btn-default">上一曲</button>
          <button class="btn btn-default">播放</button>
          <button class="btn btn-default">下一曲</button>
        </div>
        <div class="btn-group">
            <button class="btn btn-success">倍速</button>
            <button class="btn btn-primary">录制</button>
          </div>        
    </div>
  • 按钮组.btn-group是相对定位的内联块,并控制中间按钮的取消圆角。
  • 工具栏 .btn-toolbar 抵消按钮组有可能的5px内补,其它只起到一个结构化整体的作用。
  • 按钮的大小.btn-group-lg,.btn-group-sm,.btn-group-xs可以直接一次性添加到按钮组上,调节整个按钮组的大小。
  • 垂直按钮组 .btn-group-vertical 内联块,取代.btn-group,它会定义内部按钮左浮动,块级化,形成了垂直排列样式。
    分列式按钮下拉菜单(右侧带单独下拉小按钮的)不支持这种方式
    垂直按钮组

四、按钮组与下拉菜单组合

  • 把下拉菜单添加到按钮上很简单,只要把原来的按钮位置添加一个按钮组,做为下拉菜单的容器,然后原来的按钮移动到下拉菜单的触发器就可以了,结构为 .btn-group>(.btn+.dropdown-menu)
image.png
  <div class="btn-group">
      <button class="btn btn-success">倍速</button>
      <button class="btn btn-primary">录制</button>
      <div class="btn-group">
          <button class="btn btn-primary dropdown-toggle" data-toggle="dropdown">清晰度
              <span class="caret"></span>
          </button>
          <ul class="dropdown-menu">
            <li><a href="#">高清</a></li>
            <li><a href="#">流畅</a></li>
            <li><a href="#">2G网络</a></li>
          </ul>
      </div>
    </div> 
  • 注意按钮要添加 .dropdown-toggle 类,否则圆角会有问题。

  • 同样支持垂直方式排列


    image.png
  • 两端对齐的按钮组, 指的是整个按钮组水平方向填满父元素宽度,然后按钮宽度一致的布局,对 .btn-group 元素再添加一个 .btn-group-justified类就可以了。
    需要注意的是,如果使用 <a>标签做为按钮的承载,可以直接实现功能,如果是<button>标签,必须在外部再包一层 .btn-group元素,整个外观是使用 table-cell 实现的。

image.png
  • 分裂式按钮下拉菜单, 也就是按钮右侧添加一个小按钮,两个按钮组成一组,只有小按钮是菜单的触发器。实现很简单,就是在触发器上再添加一个按钮,把原来按钮的文本移到前面按钮就可以。
    注意分裂式按钮组不支持两端对齐与垂直排列!
     <div class="btn-group">
          <button class="btn btn-primary">清晰度</button>
          <button class="btn btn-primary dropdown-toggle" data-toggle="dropdown">
              <span class="caret"></span>
          </button>
          <ul class="dropdown-menu dropdown-menu-right">
            <li><a href="#">高清</a></li>
            <li><a href="#">流畅</a></li>
            <li><a href="#">2G网络</a></li>
          </ul>
      </div>
image.png

五、输入框组

在输入框前后添加 span.input-group-addon, 构成类似按钮组的胶囊外观,前后可以添加文本、图标。

  • 容器使用 div.input-group,插入内容使用span.input-group-addon
  • 可以添加按钮,此时插入块要修改为 span.input-group-btn,而且按钮好象会比输入框矮1px, 自行手动修复。可以添加多个按钮在div.input-group-btn块中。
    .input-group-btn .btn{
      padding-bottom: 7px;
    }
  • 也可以添加下拉菜单或者分裂式按钮下拉菜单,和添加按钮一样处理即可。


    image.png
  • 可以在组上添加尺寸类 .input-group-lg, .input-group-sm
  • 插入元素可以为单选或者复选框。
注意事项
1、不支持 <select><textarea>标签。
2、一侧只能添加一个 .input-group-addon或者 .input-group-btn
3、不支持多个input
4、不能和其它结构平级混用,必须嵌套。
5、如果有tooltip或者popover时,必须设置 container: 'body' 参数,为的是避免意外的副作用(例如,工具提示或弹出框被激活后,可能会让当前元素变得更宽或/和变得失去其圆角)。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 第5章 菜单、按钮及导航 一、下拉菜单 小伙伴们注意,在Bootstrap框架中的下拉菜单组件是一个独立的组件,根...
    凛0_0阅读 4,928评论 0 66
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明先生x阅读 15,967评论 3 119
  • 【本周作业3】 [主题]:如何确定行动计划(如何写好A2)[片段来源]:拆解片段来自《小强升职记》P.89-89 ...
    大博的读书生活阅读 166评论 0 0
  • 曾经的爱恨。 纠缠成厚茧。 太多的情绪。 淤积在心头。 细针轻轻一戳。 便让这闹剧呱呱诞生。 如洪流般冲塌血缘情。...
    谁的青春不迷茫崇明阅读 279评论 0 0
  • 上一章回顾 (2) 次日,天还没亮透,但已经听到赵灵儿在门口嚷嚷叫。 开门后,那家伙精神饱满地杵在一旁,脱口而出三...
    郭栩鹏阅读 260评论 0 4