导航栏


导航栏是一个固定区域 (在固定和穿透布局类型中) 。它位于屏幕顶部,包含页面标题和导航元素。

导航栏包含3个部分:左、中、右。每个部分都可以包含任意的HTML内容,但推荐按照如下方式使用:

  • 左部 用来放置返回链接、图标以及单独的文字链接。

  • 中部 用来显示页面标题和标签链接(即按钮控制)。

  • 右部 和左部一样。

导航栏布局

导航栏布局相当简单,根据字面意思即可理解:

  1. <div class="navbar">
  2.     <div class="navbar-inner">
  3.         <div class="left">Left</div>
  4.         <div class="center">Center</div>
  5.         <div class="right">Right</div>
  6.     </div>
  7. </div>

 实例预览

注意,导航栏的中心元素具有最低的宽度优先级,当屏幕不能放下全部3个元素时,中部会被截断。

所以,如果你在中部使用普通文本,在截断的时候会在末尾加上省略号(...)。但如果你使用定制的元素,那就要格外注意了。

含有链接的导航栏

要想在左/右部添加链接,只需要添加<a> 标签,以及额外的 link 类:

  1. <div class="navbar">
  2.     <div class="navbar-inner">
  3.         <div class="left">
  4.             <a href="#" class="link">Left Link</a>
  5.         </div>
  6.         <div class="center">Center</div>
  7.         <div class="right">
  8.             <a href="#" class="link">Right Link</a>
  9.         </div>
  10.     </div>
  11. </div>

 实例预览

额外的 link 类并不是必须的,但是推荐使用,因为它添加了需要的链接尺寸,以及透明度特效。

多个链接

没什么特别的,只要在需要的部分添加 <a class="link"

  1. <div class="navbar">
  2.     <div class="navbar-inner">
  3.         <div class="left">
  4.             <a href="#" class="link">Left 1</a>
  5.             <a href="#" class="link">Left 2</a>
  6.         </div>
  7.         <div class="center">Center</div>
  8.         <div class="right">
  9.             <a href="#" class="link">Right 1</a>
  10.         </div>
  11.     </div>
  12. </div>

 实例预览

含有图标和文本的链接

这里有一些变化,我们需要把链接的文本用<span>元素包起来。它用来保持图标和文本之间的正确间距,并且在动画中也有用处:

  1. <div class="navbar">
  2.     <div class="navbar-inner">
  3.         <div class="left">
  4.             <a href="#" class="link">
  5.                 <i class="icon icon-back"></i>
  6.                 <span>Back</span>
  7.             </a>
  8.         </div>
  9.         <div class="center">Center</div>
  10.         <div class="right">
  11.             <a href="#" class="link">
  12.                 <i class="icon icon-bars"></i>
  13.                 <span>Menu</span>
  14.             </a>
  15.         </div>
  16.     </div>
  17. </div>

 实例预览

只有图标的链接

如果需要含有图标而不含有文本的链接,我们需要对链接添加额外的"icon-only" 类。含有这个类的链接会拥有44x44px的固定大小,以便于我们的手指触到它:

  1. <div class="navbar">
  2.     <div class="navbar-inner">
  3.         <div class="left">
  4.             <a href="#" class="link icon-only">
  5.                 <i class="icon icon-back"></i>
  6.             </a>
  7.         </div>
  8.         <div class="center">Center</div>
  9.         <div class="right">
  10.             <a href="#" class="link icon-only">
  11.                 <i class="icon icon-bars"></i>
  12.             </a>
  13.         </div>
  14.     </div>
  15. </div>

  实例预览

相关的视图方法

如果我们已经初始化视图,我们可以使用导航栏的如下方法:

myApp.hideNavbar(navbar)Hide specified toolbar.
navbar - HTMLElement or string (with CSS Selector) of required navbar. Required.
myApp.showNavbar(navbar)Show specified toolbar.
navbar - HTMLElement or string (with CSS Selector) of required navbar. Required.
view.hideNavbar()隐藏该视图中的导航栏
view.showNavbar()显示该视图中的导航栏
myApp.sizeNavbars(viewContainer)

viewContainer - CSS Selector string or HTMLEelement. URL of page to load

调用这个方法会重新计算指定的View的导航栏的位置,比如:myApp.sizeNavbars('.view-main')

如果你动态地改变了导航栏元素,你可能需要调用这个方法

Used only by iOS theme

下面是示例:

  1. var myApp = new Framework7();
  2.  
  3. var $ = Framework7.$;
  4.  
  5. var mainView = myApp.addView('.view-main');
  6.  
  7. $('.hide-navbar').on('click', function () {
  8.     mainView.hideNavbar();
  9. });
  10.  
  11. $('.show-navbar').on('click', function () {
  12.     mainView.showNavbar();
  13. });

实例预览

自动隐藏导航栏

在通过Ajax载入的页面上,当你不需要导航栏时,Framework7允许你自动隐藏导航栏。它只在你使用穿透类型的布局时才有用。

为了实现这一点,你要做的是添加"no-navbar"类到载入的页面中(<div class="page no-navbar">),然后在那里放置一个空的导航栏:

  1. <!-- Empty Navbar -->
  2. <div class="navbar">
  3.   <div class="navbar-inner">
  4.   </div>
  5. </div>          
  6.  
  7. <!-- Page has additional "no-navbar" class -->
  8. <div data-page="about" class="page no-navbar">
  9.   <div class="page-content">
  10.     <div class="content-block">
  11.       <p><a href="#" class="back button">Go Back</a></p>
  12.       ...
  13.     </div>
  14.   </div>
  15. </div>

实例预览

Dynamic Navbar Events

If you use Dynamic Navbar in your app then it will also have useful special events.