Dynamic Navbar is supported only in iOS Theme
iOS7的好评特性之一是动态导航栏。当页面过渡时,导航栏元素会滑动渐变。
它只对穿透类型的布局有效
它应该在视图初始化时通过传递dynamicNavbar: true参数来启用
动态导航栏和一般的导航栏是一样的,区别只在于,你可以对导航栏的组成部分(左、中、右)加入额外的类,来说明使用哪个过渡特效。
默认情况下(如果没有额外的类),每个导航栏部分都具有"渐变"过渡特效
如果你向任何一个导航栏部分添加"sliding"类,它会具有"滑动"特效
为了美观起见,在不同的页面之间,你应当保持同一个过渡类型
- <!-- Navbar on index page -->
- <div class="navbar">
- <div class="navbar-inner">
- <div class="left">
- <a href="#" class="link">Home Left</a>
- </div>
- <div class="center">Home</div>
- <div class="right">
- <a href="#" class="link">Home Right</a>
- </div>
- </div>
- </div>
- <!-- Navbar on about page -->
- <div class="navbar">
- <div class="navbar-inner">
- <div class="left">
- <a href="#" class="link">About Left</a>
- </div>
- <div class="center">About</div>
- <div class="right">
- <a href="#" class="link">About Right</a>
- </div>
- </div>
- </div>
滑动过渡应该明智使用,因为它们反映了应用的导航链。
- <!-- Navbar on index page -->
- <div class="navbar">
- <div class="navbar-inner">
- <!-- Left part doesn't related to other pages, let's fade it out -->
- <div class="left">
- <a href="#" class="link">Home Left</a>
- </div>
- <!-- Center and Right parts reflect page title and page links, let's slide them -->
- <div class="center sliding">Home</div>
- <div class="right sliding">
- <a href="about.html" class="link">About</a>
- </div>
- </div>
- </div>
- <!-- Navbar on about page -->
- <div class="navbar">
- <div class="navbar-inner">
- <!-- Now, Left and Center parts reflect page title and page links, let's slide them -->
- <div class="left sliding">
- <a href="#" class="link back">Home</a>
- </div>
- <div class="center sliding">About</div>
- <!-- Right part doesn't related to other pages -->
- <div class="right">
- <a href="#" class="link icon-only">
- <i class="icon icon-bars"></i>
- </a>
- </div>
- </div>
- </div>
如果你使用了默认的返回链接(图标+“返回”),你可以使用额外的动画,以使这些链接看起来更像iOS 7外观。为了做到这一点,你需要在App初始化时添加animateNavBackIcon: true
参数,然后把含有“back”类和图标的链接放到导航栏的左部。布局方面没有变化,例子如下:
Dynamic navbar has the following events:
Event | Target | Description |
---|---|---|
navbarBeforeInit | Navbar Inner element <div class="navbar-inner"> | Event will be triggered when Framework7 just inserts new navbar inner to DOM |
navbarInit | Navbar Inner element <div class="navbar-inner"> | Event will be triggered after Framework7 initialize navbar |
navbarReinit | Navbar Inner element <div class="navbar-inner"> | This event will be triggered when cached navbar inner becomes visible. It is only applicaple for Inline Pages (DOM cached pages) |
navbarBeforeRemove | Navbar Inner element <div class="navbar-inner"> | Event will be triggered right before navbar inner will be removed from DOM. This event could be very useful if you need to detach some events / destroy some plugins to free memory |
Each event data containes useful information with navbar
elements and Page Data of related page. For example
- $$(document).on('navbarInit', function (e) {
- var navbar = e.detail.navbar;
- var page = e.detail.page
- });
Now, in the example above we have initialized Navbar elements in navbar
variable and related Page Data in page
variable. Lets look on properties of navbar
object:
Navbar Properties | |
---|---|
navbar.navbarContainer | Link to parent Navbar HTMLElement |
navbar.navbarInnerContainer | Link to target Navbar Inner HTMLElement |