scaffold

Scaffold组件

按照先后顺序
1 backgroundcolor
全页面( top: 0;right: 0;bottom: 0;left:0;)的背景色,默认用的是colors.bg_page及#F7F7F7,可指定并支持linear-gradient

2 navbar插槽
immersive属性: 导航栏不占高度(即用fixed定位,使得导航栏下方元素与导航栏重叠)

navbar: navbar组件属性(title,theme,subTitle,bottomLineShow,leftBtnShow等)
statusbar: 是否含有APP状态栏
leftBtn插槽
title插槽
rightBtn插槽
3 flexible可折叠背景(导航栏下方,随着向上滑动收折,同样是fixed定位,不占高度)
flexible属性:backgroundColor,height,title,shrinkHeight(可被折叠的高度,不设则可全部收起),scaleRatio(折叠速度)
bindEl():控制上滑折叠效果。以anchor作为事件触发者,eventType作为事件类型。绑定element(flexible,decoration,navbar.headtitle和navbar.navbg),通过自定义expression表达式,改变该element的property(opacity和transform.translateY)。使用到了weex的weex-bindingx(https://alibaba.github.io/bindingx/guide/cn_introduce)
4 decoration和flexible差不多不做介绍
5 top插槽
6 body插槽
scroller-type属性:根据scroller-type,采用不同组件装填默认插槽(list, scroller, div)
7 fixed插槽

scaffold和flexible中有些地方用了 position: isApp ? 'absolute' : 'fixed'这样的判断。原因是navbar有可能是fixed定位,如果都用fixed定位就会把navbar给覆盖掉。

页面高度
APP上有statusBarHeight(状态栏高度),原生标题栏高度(类似lightview上的标题栏),主体区域,以及IOS底部安全区域/Andriod底部虚拟按键区域。我们页面默认的navbartype未0,及通顶效果(无状态栏和标题栏),所以在一些页面上,顶部组件的高度需要额外加上状态栏的高度height = height + statusBarHeight

http://document.lightyy.com/zh-cn/docs/develop/olight-route.html#options-navBarType

shrinkheight,translate和flexible可见区域

不设shrinkheight时
折叠屏往上滚动后
flexible区域(头部背景)的translateY变化把整个flexible区域顶上去了

把shrinkheight设为0时,折叠屏网上滚动后flexible所在区域不变。

但是比如在交易详情中,flexible下面的列表是白色背景的。
所以在滚动时,底下的白色背景覆盖了上面的flexible区域,所以同样达到了flexible随滚动缩小的视觉效果。