bootstrap(菜单、按钮、导航)

下拉菜单(基本用法)
在Bootstrap框架中的下拉菜单组件是一个独立的组件,根据不同的版本,它对应的文件:
☑ LESS版本:对应的源码文件为 dropdowns.less

1、使用一个名为“dropdown”的容器包裹了整个下拉菜单元素,示例中为:

<div class="dropdown">div>

2、使用了一个按钮做为父菜单,并且定义类名“dropdown-toggle”和自定义“data-toggle”属性,且值必须和最外容器类名一致,此示例为:

data-toggle="dropdown"

3、下拉菜单项使用一个ul列表,并且定义一个类名为“dropdown-menu”,此示例为:

    class="dropdown-menu">
css:
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">

<div class="dropdown">

  <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown">
    下拉菜单:
    //下拉三角形
    <span class="caret">span>
  button>

  <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
    <li role="presentation"><a role="menuitem" tabindex="-1" href="#">下拉菜单项a>li>
    <li role="presentation"><a role="menuitem" tabindex="-1" href="#">下拉菜单项a>li>
    <li role="presentation"><a role="menuitem" tabindex="-1" href="#">下拉菜单项a>li>
    <li role="presentation"><a role="menuitem" tabindex="-1" href="#">下拉菜单项a>li>
  ul>

div> 

js:
  <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js">script>
  <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js">script> 

Bootstrap框架中的下拉菜单组件,其下拉菜单项默认是隐藏的
因为“dropdown-menu”默认样式设置了“display:none”

css源码:
.dropdown-menu {
  position: absolute;/*设置绝对定位,相对于父元素div.dropdown*/
  top: 100%;/*让下拉菜单项在父菜单项底部,如果父元素不设置相对定位,该元素相对于body元素*/
  left: 0;
  z-index: 1000;/*让下拉菜单项不被其他元素遮盖住*/
  display: none;/*默认隐藏下拉菜单项*/
  float: left;
  min-width: 160px;
  padding: 5px 0;
  margin: 2px 0 0;
  font-size: 14px;
  list-style: none;
  background-color: #fff;
  background-clip: padding-box;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, .15);
  border-radius: 4px;
  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
  box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
}
组与组之间可以通过添加一个空的
  • ,并且给这个
  • 添加类名“divider”来实现添加下拉分隔线的功能。 css源码: .dropdown-menu .divider { height: 1px; margin: 9px 0; overflow: hidden; background-color: #e5e5e5; } 实现原理js: 给父容器“div.dropdown”添加或移除类名“open”来控制下拉菜单显示或隐藏。也就是说,默认情况,“div.dropdown”没有类名“open”,当用户第一次点击时,“div.dropdown”会添加类名“open”;当用户再次点击时,“div.dropdown”容器中的类名“open”又会被移除。 .open > .dropdown-menu { display: block; } 分隔线
  • "presentation" class="divider">
  • 添加分组的标题:

      <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
        <li role="presentation" class="dropdown-header">第一部分菜单头部li>
        <li role="presentation"><a role="menuitem" tabindex="-1" href="#">下拉菜单项a>li>
        <li role="presentation"><a role="menuitem" tabindex="-1" href="#">下拉菜单项a>li>
      ul>
    
    css源码:
    .dropdown-header {
      display: block;
      padding: 3px 20px;
      font-size: 12px;
      line-height: 1.42857143;
      color: #999;
    }

    下拉菜单(对齐方式)
    想让下拉菜单相对于父容器右对齐时,可以在“dropdown-menu”上添加一个“pull-right”或者“dropdown-menu-right”类名,

    下拉菜单(菜单项状态)
    下拉菜单项的默认的状态(不用设置)有悬浮状态(:hover)和焦点状态(:focus)、当前状态(.active)和禁用状态(.disabled)。

    <div class="dropdown">
      <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown">
        下拉菜单
        <span class="caret">span>
      button>
      <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
    
      //设置下拉列表默认为选中状态
        <li role="presentation" class="active">
            <a role="menuitem" tabindex="-1" href="#">下拉菜单项a>
       li>
    
        <li role="presentation"><a role="menuitem" tabindex="-1" href="#">下拉菜单项a>li>
        <li role="presentation"><a role="menuitem" tabindex="-1" href="#">下拉菜单项a>li>
        <li role="presentation" class="divider">li>
    
        //设置下拉列表默认为禁止状态
        <li role="presentation" class="disabled"><a role="menuitem" tabindex="-1" href="#">下拉菜单项a>li>
      ul>
    div> 

    使用一个名为“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-fast-backward">span>button>
        <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-backward">span>button>
    div>
    
    唯一要保证的是:不管使用什么标签,“.btn-group”容器里的标签元素需要带有类名“.btn”。

    将按钮组分组排列在一起,比如说复制、剪切和粘贴一组;左对齐、中间对齐、右对齐和两端对齐一组
    你只需要将按钮组“btn-group”按组放在一个大的容器“btn-toolbar”中

    <div class="btn-toolbar">
      <div class="btn-group">
        <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-align-left">span>button>
        <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-align-center">span>button>
        <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-align-right">span>button>
        <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-align-justify">span>button>
      div>
    
      <div class="btn-group">
        <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-indent-left">span>button>
        <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-indent-right">span>button>
      div>
    div>

    实现原理主要是让容器的多个分组“btn-group”元素进行浮动,并且组与组之前保持5px的左外距。

    按钮组大小设置
    ☑ .btn-group-lg:大按钮组
    ☑ .btn-group-sm:小按钮组
    ☑ .btn-group-xs:超小按钮组
    只需要在“.btn-group”类名上追加对应的类名,就可以得到不同大小的按钮组。

    框架结构:
    <div class="btn-toolbar">
      <div class="btn-group btn-group-lg">
        …
      div>
    
      <div class="btn-group">
        …
      div>
    
      <div class="btn-group btn-group-sm">
        …
      div>
    
      <div class="btn-group btn-group-xs">
       …
      div>
    
    div>
     <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js">script>
     <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js">script> 
    

    按钮(嵌套分组)
    把下拉菜单和普通的按钮组排列在一起,实现类似于导航菜单的效果
    只需要把当初制作下拉菜单的“dropdown”的容器换成“btn-group”,并且和普通的按钮放在同一级。

    <div class="btn-group">
      <button class="btn btn-default" type="button">首页button>
      <button class="btn btn-default" type="button">产品展示button>
      <button class="btn btn-default" type="button">案例分析button>  
      <button class="btn btn-default" type="button">联系我们button>  
    
      <div class="btn-group">
          <button class="btn btn-default dropdown-toggle" data-toggle="dropdown" type="button">关于我们<span class="caret">span>button>
        <ul class="dropdown-menu">
            <li><a href="##">公司简介a>li>
            <li><a href="##">企业文化a>li>
            <li><a href="##">组织结构a>li>
            <li><a href="##">客服服务a>li>
        ul>
      div>
    div>
    
      <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js">script>
      <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js">script> 

    按钮(垂直分组)
    把水平分组的“btn-group”类名换成“btn-group-vertical”即可

    <div class="btn-group-vertical">
      <button class="btn btn-default" type="button">首页button>
      <button class="btn btn-default" type="button">产品展示button>
      <button class="btn btn-default" type="button">案例分析button>
      <button class="btn btn-default" type="button">联系我们button>
      <div class="btn-group">
          <button class="btn btn-default dropdown-toggle" data-toggle="dropdown" type="button">关于我们<span class="caret">span>button>
        <ul class="dropdown-menu">
            <li><a href="##">公司简介a>li>
            <li><a href="##">企业文化a>li>
            <li><a href="##">组织结构a>li>
            <li><a href="##">客服服务a>li>
        ul>
      div>
    div>
      <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js">script>
      <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js">script> 

    按钮(等分按钮)
    等分按钮的效果在移动端上特别的实用。整个按钮组宽度是容器的100%,而按钮组里面的每个按钮平分整个容器宽度。例如,如果你按钮组里面有五个按钮,那么每个按钮是20%的宽度,如果有四个按钮,那么每个按钮是25%宽度,以此类推。

    等分按钮也常被称为是自适应分组按钮,其实现方法也非常的简单,只需要在按钮组“btn-group”上追加一个“btn-group-justified”类名

    <div class="btn-wrap">
        <div class="btn-group btn-group-justified">
        <a class="btn btn-default" href="#">首页a>
        <a class="btn btn-default" href="#">产品展示a>
        <a class="btn btn-default" href="#">案例分析a>
        <a class="btn btn-default" href="#">联系我们a>
      div>
    div>
      <script src="http://img.mukewang.com/down/53c6484f00013d9300000000.js">script>
      <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js">script>
    
    实现原理非常简单,把“btn-group-justified”模拟成表格(display:table),而且把里面的按钮模拟成表格单元格(display:table-cell)。
    
    css源码:
    .btn-group-justified {
      display: table;
      width: 100%;
      table-layout: fixed;
      border-collapse: separate;
    }
    .btn-group-justified > .btn,
    .btn-group-justified > .btn-group {
      display: table-cell;
      float: none;
      width: 1%;
    }
    .btn-group-justified > .btn-group .btn {
      width: 100%;
    }
    

    导航(基础样式)
    在Bootstrap框架将导航独立出来成为一个导航组件,根据不同的版本,可以找到对应的源码:
    ☑ LESS版本:对应的源文件是navs.less

    <ul class="nav nav-tabs">
        <li><a href="##">Homea>li>
        <li><a href="##">CSS3a>li>
        <li><a href="##">Sassa>li>
        <li><a href="##">jQuerya>li>
        <li><a href="##">Responsivea>li>
    ul>
    <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js">script>
    <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js">script> 
    
    css源码:
    .nav {
      padding-left: 0;
      margin-bottom: 0;
      list-style: none;
    }
    .nav> li {
      position: relative;
      display: block;
    }
    .nav> li > a {
      position: relative;
      display: block;
      padding: 10px 15px;
    }
    .nav> li >a:hover,
    .nav> li >a:focus {
      text-decoration: none;
      background-color: #eee;
    }
    .nav>li.disabled> a {
      color: #999;
    }
    .nav>li.disabled>a:hover,
    .nav>li.disabled>a:focus {
      color: #999;
      text-decoration: none;
      cursor: not-allowed;
      background-color: transparent;
    }
    .nav .open > a,
    .nav .open >a:hover,
    .nav .open >a:focus {
      background-color: #eee;
      border-color: #428bca;
    }
    .nav .nav-divider {
      height: 1px;
      margin: 9px 0;
      overflow: hidden;
      background-color: #e5e5e5;
    }
    .nav> li > a >img {
      max-width: none;
    }

    导航(标签形tab导航)
    标签形导航,也称为选项卡导航。特别是在很多内容分块显示的时,使用这种选项卡来分组十分适合。

    实现原理非常的简单,将菜单项(li)按块显示,并且让他们在同一水平上排列,然后定义非高亮菜单的样式和鼠标悬浮效果

    css源码:
    .nav-tabs {
    border-bottom: 1px solid #ddd;
    }
    .nav-tabs > li {
    float: left;
    margin-bottom: -1px;
    }
    .nav-tabs > li > a {
    margin-right: 2px;
    line-height: 1.42857143;
    border: 1px solid transparent;
    border-radius: 4px 4px 0 0;
    }
    .nav-tabs > li >a:hover {
    border-color: #eee #eee #ddd;
    }

    选项卡教会有一个当前选中项,只需要在其标签上添加类名“class=”active””

     <ul class="nav nav-tabs">
    
        //当前选中状态
        <li class="active"><a href="##">Homea>li>
        <li><a href="##">CSS3a>li>
        <li><a href="##">Sassa>li>
        <li><a href="##">jQuerya>li>
    
        //禁用状态:
        <li class="disabled"><a href="##">Responsivea>li>
     ul>
      <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js">script>
      <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js">script> 
    
    css源码:
    激活
    .nav-tabs >li.active> a,
    .nav-tabs >li.active>a:hover,
    .nav-tabs >li.active>a:focus {
      color: #555;
      cursor: default;
      background-color: #fff;
      border: 1px solid #ddd;
      border-bottom-color: transparent;
    }
    
    
    禁用:
    .nav>li.disabled> a {
      color: #999;
    }
    .nav>li.disabled>a:hover,
    .nav>li.disabled>a:focus {
      color: #999;
      text-decoration: none;
      cursor: not-allowed;
      background-color: transparent;
    }

    导航(胶囊形(pills)导航)

    <ul class="nav nav-pills">
        <li class="active"><a href="##">Homea>li>
        <li><a href="##">CSS3a>li>
        <li><a href="##">Sassa>li>
        <li><a href="##">jQuerya>li>
        <li class="disabled"><a href="##">Responsivea>li>
    ul>
    <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js">script>
    <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js">script> 

    导航(垂直堆叠的导航)
    制作垂直堆叠导航只需要在“nav-pills”的基础上添加一个“nav-stacked”类名即可

    <ul class="nav nav-pills nav-stacked">
        <li class="active"><a href="##">Homea>li>
        <li><a href="##">CSS3a>li>
        <li><a href="##">Sassa>li>
        <li><a href="##">jQuerya>li>
        <li class="nav-divider">li>
        <li class="disabled"><a href="##">Responsivea>li>
    ul>
      <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js">script>
      <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js">script> 
    
    垂直堆叠导航与胶囊形导航相比,主要是让导航项不浮动,让其垂直排列,然后给相邻导航项留有一定的间距
    css源码:
    .nav-stacked > li {
      float: none;
    }
    .nav-stacked > li + li {
      margin-top: 2px;
      margin-left: 0;
    }
    

    下拉菜单组与组之间有一个分隔线。其实在垂直堆叠导航也具有这样的效果,只需要添加在导航项之间添加“

    ”即可:

    css源码:
    .nav .nav-divider {
    height: 1px;
    margin: 9px 0;
    overflow: hidden;
    background-color: #e5e5e5;
    }
    
    在”nav-tabs”上添加“nav-stacked”是不是也能实现垂直的标签选项导航呢?答案是:在bootstrap V2.x版本可以,但在Bootstrap V3.x版本将这个效果取消了

    自适应导航(使用)

    <ul class="nav nav-tabs nav-justified">
      <li class="active"><a href="##">Homea>li>
      <li><a href="##">CSS3a>li>
      <li><a href="##">Sassa>li>
      <li><a href="##">jQuerya>li>
      <li><a href="##">Responsivea>li>
    ul>
    <br />
    
    <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js">script>
    <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js">script> 

    自适应导航(实现原理)
    列表(

    • )上设置宽度为“100%”,然后每个菜单项(
    • )设置了“display:table-cell”,让列表项以模拟表格单元格的形式显示:

    媒体查询条件:“@media (min-width:768px){…}”表示自适应导航仅在浏览器视窗宽度大于768px才能按上图风格显示。当你的浏览器视窗宽度小于768px的时候,

    css源码:
    .nav-justified {
      width: 100%;
    }
    .nav-justified > li {
      float: none;
    }
    .nav-justified > li > a {
      margin-bottom: 5px;
      text-align: center;
    }
    .nav-justified > .dropdown .dropdown-menu {
      top: auto;
      left: auto;
    }
    @media (min-width: 768px) {
      .nav-justified > li {
      display: table-cell;
      width: 1%;
      }
      .nav-justified > li > a {
      margin-bottom: 0;
      }
    }

    导航加下拉菜单(二级导航
    那么在Bootstrap框架中制作二级导航就更容易了。只需要将li当作父容器,使用类名“dropdown”,同时在li中嵌套另一个列表ul

    <ul class="nav nav-pills">
    //当前激活状态
      <li class="active"><a href="##">首页a>li>
    
      <li class="dropdown">
          <a href="##" class="dropdown-toggle" data-toggle="dropdown">教程<span class="caret">span>a>
          //二级菜单
          <ul class="dropdown-menu">
              <li><a href="##">CSS3a>li>
            <li><a href="##">Sassa>li>
            <li><a href="##">jQuerya>li>
            <li><a href="##">Responsivea>li>
          ul>
      li>
     <li><a href="##">关于我们a>li>
    ul>
    <br />
    
    <script src="http://img.mukewang.com/down/53c6484f00013d9300000000.js">script>
    <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js">script> 

    面包屑式导航
    面包屑(Breadcrumb)一般用于导航,主要是起的作用是告诉用户现在所处页面的位置(当前位置)。在Bootstrap框架中面包屑也是一个独立模块组件:
    LESS版本:对应源文件breadcrumbs.less

    <ol class="breadcrumb">
      <li><a href="#">首页a>li>
      <li><a href="#">我的书a>li>
      <li class="active">《图解CSS3》li>
    ol> 
    
    <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js">script>
    <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js">script> 

    作者是使用li+li:before实现li与li之间的分隔符

    css源码:
    .breadcrumb {
    padding: 8px 15px;
    margin-bottom: 20px;
    list-style: none;
    background-color: #f5f5f5;
    border-radius: 4px;
    }
    
    .breadcrumb> li {
    display: inline-block;
    }
    
    .breadcrumb> li + li:before {
    padding: 0 5px;
    color: #ccc;
    content: "/\00a0";
    }
    
    .breadcrumb> .active {
    color: #999;
    }

    你可能感兴趣的:(bootstrap)