saber

saber-viewport

移动端页面视口管理,提供页面转场功能

Usage

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var viewport = require('saber-viewport');
var page;
// 引入转场效果
require('saber-viewport/transition/fadeInOut');
// 初始化视口
viewport.init('viewport');
// 加载页面
page = viewport.load(url);
// 渲染页面
...
// 使用淡入淡出效果转场页面
page.enter('fadeInOut');

About Bar

移动页面顶部或者底部一般都有navigation bar、toolbar之类的,这些部件在页面转场时通常不变化或者特殊变化,通过添加data-viewport-bardata-name自定义dom属性来支持。

比如现在有三个页面A、B、C,顶部都有navigation bar,前两页面bar样式相同,最后一个页面为详情页面,bar上添加了“返回”按钮,大体就如下这般:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!-- page A -->
<body>
<div class="nav" data-viewport-bar="navigation" data-name="main">
...
</div>
</body>
<!-- page B -->
<body>
<div class="nav" data-viewport-bar="navigation" data-name="main">
...
</div>
</body>
<!-- page C -->
<body>
<div class="nav" data-viewport-bar="navigation" data-name="detail">
...
<a>返回</a>
</div>
</body>

通过data-viewport-bar分类页面中不同类型的bar,bar的转场切换只会在同类tab之间进行。data-name表示bar的名称,名称相同的bar转场时不会有变化,而类型相同名称不同的bar之前会有转场效果。

示例中从A切换到B时顶部导航条不会有变化(data-name相同),而从B切换到C时顶部导航条会进行转场效果(data-name不同)。

saber-viewport并不控制bar在页面中的位置、样式,这些还是由页面控制。

About Fixed

转场操作时position:fixed的元素会影响转场效果(特别是在使用transform进行转场时,参考webkit-css-transform3d-position-fixed-issue, The Transform Rendering Model),saber-viewport支持使用data-viewport-fixed标注fixed元素,在转场时进行自动处理,比如:

1
<div class="search" data-viewport-fixed><input type="text"><a class="search-btn">Search</a></div>

已经被data-viewport-bar标记的fixed元素不再需要重复标记data-viewport-fixed

API

.init(ele, options)

初始化视口

.load(url, options)

创建新页面的容器,返回Page对象。页面的具体渲染需要通过Page.main属性获取容器元素后自行完成

Page

页面对象,由load()方法创建、返回

.main

页面的容器元素

.enter(type, options)

启动页面转场

.on(eventName, callback)

注册页面事件,可选择的eventName如下:

前景页:当前显示、待转出的页面

后景页:待转入的页面

===

Saber