Bootstrap源码解读导航(6)
源码解读Bootstrap导航
基础样式
制作导航条主要通过“.nav”样式。默认的“.nav”样式不提供默认的导航样式,必须附加另外一个样式才会有效,比如“nav-tabs”、“nav-pills”之类。例如:
<ulclass="nav"> <li><ahref="##">1</a></li> <li><ahref="##">2</a></li> <li><ahref="##">3</a></li> </ul>
实现源码:
.nav{ padding-left:0; margin-bottom:0; list-style:none; } .nav>li{ position:relative; display:block; } .nav>li>a{ position:relative; display:block; padding:10px15px; } .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:9px0; overflow:hidden; background-color:#e5e5e5; } .nav>li>a>img{ max-width:none; }
标签形tab导航
原导航“nav”上追加“nav-tabs”类名即可,例如:<ulclass="navnav-tabs">...</ul>。
实现原理是将菜单项(li)按块显示,并且让他们在同一水平上排列,然后定义非高亮菜单的样式和鼠标悬浮效果。实现源码如下:
.nav-tabs{ border-bottom:1pxsolid#ddd; } .nav-tabs>li{ float:left; margin-bottom:-1px; } .nav-tabs>li>a{ margin-right:2px; line-height:1.42857143; border:1pxsolidtransparent; border-radius:4px4px00; } .nav-tabs>li>a:hover{ border-color:#eee#eee#ddd; }
要让哪个项是选中项,只需要在其标签上添加类名“class=”active”即可。
实现源码如下:
.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:1pxsolid#ddd; border-bottom-color:transparent; }
要让哪个项禁用,只需要在标签项上添加“class=”disabled”即可。实现源码如下:
.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导航
原导航“nav”上追加“nav-pills”类名即可,例如:<ulclass="navnav-pills">...</ul>。
实现源码如下:
.nav-pills>li{ float:left; } .nav-pills>li>a{ border-radius:4px; } .nav-pills>li+li{ margin-left:2px; } .nav-pills>li.active>a, .nav-pills>li.active>a:hover, .nav-pills>li.active>a:focus{ color:#fff; background-color:#428bca; }
垂直导航
制作垂直堆叠导航只需要在“nav-pills”的基础上添加一个“nav-stacked”类名即可。例如:
<ulclass="navnav-pillsnav-stacked">...</ul>
垂直导航与胶囊形导航相比,主要是让导航项不浮动,让其垂直排列,然后给相邻导航项留有一定的间距。
实现源码如下:
.nav-stacked>li{ float:none; } .nav-stacked>li+li{ margin-top:2px; margin-left:0; }
要在导航项之间加分隔线,在导航项之间加<liclass=”nav-divider”></li>即可。
实现源码如下:
.nav.nav-divider{ height:1px; margin:9px0; overflow:hidden; background-color:#e5e5e5; }
自适应导航
在“nav”上追加一个“nav-justified”类名即可。例如:<ulclass="navnav-justified">
实现原理是,列表<ul>上设置宽度为“100%”,然后每个菜单项<li>设置了“display:table-cell”,让列表项以模拟表格单元格的形式显示。实现源码如下:
.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; } }
“nav-tabs”和“nav-justified”配合在一起使用就是自适应选项卡导航,实现源码如下:
.nav-tabs.nav-justified{ width:100%; border-bottom:0; } .nav-tabs.nav-justified>li{ float:none; } .nav-tabs.nav-justified>li>a{ margin-bottom:5px; text-align:center; } .nav-tabs.nav-justified>.dropdown.dropdown-menu{ top:auto; left:auto; } @media(min-width:768px){ .nav-tabs.nav-justified>li{ display:table-cell; width:1%; } .nav-tabs.nav-justified>li>a{ margin-bottom:0; } } .nav-tabs.nav-justified>li>a{ margin-right:0; border-radius:4px; } .nav-tabs.nav-justified>.active>a, .nav-tabs.nav-justified>.active>a:hover, .nav-tabs.nav-justified>.active>a:focus{ border:1pxsolid#ddd; } @media(min-width:768px){ .nav-tabs.nav-justified>li>a{ border-bottom:1pxsolid#ddd; border-radius:4px4px00; } .nav-tabs.nav-justified>.active>a, .nav-tabs.nav-justified>.active>a:hover, .nav-tabs.nav-justified>.active>a:focus{ border-bottom-color:#fff; } }
“nav-pills”和“nav-justified”配合在一起使用就是自适应胶囊型导航,原理同上。
导航加下拉菜单
导航加下拉菜单也就是二级导航,只需要将li当作父容器,使用类名“dropdown”,同时在li中嵌套另一个列表ul下拉菜单即可。例如:
<ulclass="navnav-pills"> <li><ahref="##">首页</a></li> <liclass="dropdown"> <ahref="##"class="dropdown-toggle"data-toggle="dropdown">数字<spanclass="caret"></span></a> <ulclass="dropdown-menu"> <li><ahref="##">1</a></li> <li><ahref="##">2</a></li> </ul> </li> <li><ahref="##">关于我们</a></li> </ul>
面包屑式Breadcrumb导航
面包屑不需要使用“nav”,一般作用是告诉用户现在所处页面的位置。为ol加入“breadcrumb”类名即可。例如:
<olclass="breadcrumb"> <li><ahref="#">111</a></li> <li><ahref="#">222</a></li> <liclass="active">333</li> </ol>
实现源码如下:
.breadcrumb{ padding:8px15px; margin-bottom:20px; list-style:none; background-color:#f5f5f5; border-radius:4px; } .breadcrumb>li{ display:inline-block; } .breadcrumb>li+li:before{ padding:05px; color:#ccc; content:"/\00a0"; } .breadcrumb>.active{ color:#777; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。