导航栏是一个固定区域 (在固定和穿透布局类型中) 。它位于屏幕顶部,包含页面标题和导航元素。
导航栏包含3个部分:左、中、右。每个部分都可以包含任意的HTML内容,但推荐按照如下方式使用:
左部 用来放置返回链接、图标以及单独的文字链接。
中部 用来显示页面标题和标签链接(即按钮控制)。
右部 和左部一样。
导航栏布局相当简单,根据字面意思即可理解:
<div class="navbar"> <div class="navbar-inner"> <div class="left">Left</div> <div class="center">Center</div> <div class="right">Right</div> </div> </div>
注意,导航栏的中心元素具有最低的宽度优先级,当屏幕不能放下全部3个元素时,中部会被截断。
所以,如果你在中部使用普通文本,在截断的时候会在末尾加上省略号(...)。但如果你使用定制的元素,那就要格外注意了。
要想在左/右部添加链接,只需要添加<a>
标签,以及额外的 link
类:
<div class="navbar"> <div class="navbar-inner"> <div class="left"> <a href="#" class="link">Left Link</a> </div> <div class="center">Center</div> <div class="right"> <a href="#" class="link">Right Link</a> </div> </div> </div>
额外的 link
类并不是必须的,但是推荐使用,因为它添加了需要的链接尺寸,以及透明度特效。
没什么特别的,只要在需要的部分添加 <a class="link"
:
<div class="navbar"> <div class="navbar-inner"> <div class="left"> <a href="#" class="link">Left 1</a> <a href="#" class="link">Left 2</a> </div> <div class="center">Center</div> <div class="right"> <a href="#" class="link">Right 1</a> </div> </div> </div>
这里有一些变化,我们需要把链接的文本用<span>
元素包起来。它用来保持图标和文本之间的正确间距,并且在动画中也有用处:
<div class="navbar"> <div class="navbar-inner"> <div class="left"> <a href="#" class="link"> <i class="icon icon-back"></i> <span>Back</span> </a> </div> <div class="center">Center</div> <div class="right"> <a href="#" class="link"> <i class="icon icon-bars"></i> <span>Menu</span> </a> </div> </div> </div>
如果需要含有图标而不含有文本的链接,我们需要对链接添加额外的"icon-only" 类。含有这个类的链接会拥有44x44px的固定大小,以便于我们的手指触到它:
<div class="navbar"> <div class="navbar-inner"> <div class="left"> <a href="#" class="link icon-only"> <i class="icon icon-back"></i> </a> </div> <div class="center">Center</div> <div class="right"> <a href="#" class="link icon-only"> <i class="icon icon-bars"></i> </a> </div> </div> </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) |
调用这个方法会重新计算指定的View的导航栏的位置,比如:myApp.sizeNavbars('.view-main') 如果你动态地改变了导航栏元素,你可能需要调用这个方法 Used only by iOS theme |
下面是示例:
var myApp = new Framework7(); var $ = Framework7.$; var mainView = myApp.addView('.view-main'); $('.hide-navbar').on('click', function () { mainView.hideNavbar(); }); $('.show-navbar').on('click', function () { mainView.showNavbar(); });
在通过Ajax载入的页面上,当你不需要导航栏时,Framework7允许你自动隐藏导航栏。它只在你使用穿透类型的布局时才有用。
为了实现这一点,你要做的是添加<div class="page no-navbar">
),然后在那里放置一个空的导航栏:
<!-- Empty Navbar --> <div class="navbar"> <div class="navbar-inner"> </div> </div> <!-- Page has additional "no-navbar" class --> <div data-page="about" class="page no-navbar"> <div class="page-content"> <div class="content-block"> <p><a href="#" class="back button">Go Back</a></p> ... </div> </div> </div>
If you use Dynamic Navbar in your app then it will also have useful special events.