Lynx

<overlay> XElement

<overlay> 是一个不参与页面布局的承载容器。它本身不占据任何空间,也不需要设置宽度和高度。

<overlay>被渲染时,其内部的内容完全脱离 Lynx 文档流,被提升到 Lynx 之外的渲染层级进行展示。

<overlay>的唯一子节点默认以屏幕尺寸作为宽高基准,推荐将其视为一个独立的绘制容器,用于承载完整的蒙层内容。

Info

适用场景

  • 在客户端页面中嵌入 Lynx 子模块时,可以使用<overlay>来构建弹窗,达到覆盖整个应用页面的效果。
  • 当完全使用 Lynx 来构建一整个页面时,不建议使用<overlay>,直接使用position: fixed即可构建弹窗能力。

使用指南

必要条件

  • <overlay>只能有一个直接子节点

  • <overlay>自身必须设置 position:fixed

推荐用法

  • 推荐将<overlay>的唯一子节点作为 backdrop 容器:
  • 即使背景是透明的,也建议显示绘制
  • 显示设置尺寸:width: 100%; height: 100%
  • 显示创建独立的 stacking context:z-index:0
<overlay class="overlay">
  <view class="backdrop">
    // Dialog Content
    <Dialog class="dialog-content" />
  </view>
</overlay>
.overlay {
  overflow: visible;
  position: fixed;
}

.backdrop {
  width: 100%;
  height: 100%;
  z-index: 0;
}
  • 如需调整弹窗的视觉尺寸,应在 backdrop 内部点上使用 margin 等方式控制,而不是修改 backdrop 本身的尺寸
.dialog-content {
  margin: 100px;
  position: absolute;
}

属性

ios-enable-swipe-back

iOS
// @默认值: false
'ios-enable-swipe-back'?: boolean;

当覆盖层显示时,'true' 允许向右滑动关闭当前页面,'false' 则不允许。

level

Android
iOS
Clay
Harmony
// @默认值: 1
level?: 4 | 2 | 1 | 3;

引入了层的概念,分为四个级别。层的值越大,越靠近底部。默认情况下为第一级。层按 1 到 4 的顺序排列。指定要显示的层,不受显示顺序的影响。在每个层内,按照“后进先出”的逻辑排列。覆盖层显示时无法动态调整层,只能在隐藏时进行调整。

mode

iOS
// @默认值: 'window'
mode?: string;

指定覆盖层内容在 iOS 上的层级。window:挂载在窗口上,即应用的顶层;top:挂载在 topViewController 上;page:挂载在 UINavigationController 上;others:在客户端中自定义类名。

visible

Android
iOS
Clay
Harmony
// @默认值: false
visible?: boolean;

控制覆盖层是否显示。

事件

前端可以绑定相应的事件回调来监听元素的运行时行为,如下所示。

binddismissoverlay

Android
iOS
Clay
Harmony
binddismissoverlay = (e: BaseEvent) => {};

覆盖层隐藏时的回调。

binderror

Android
2.18
binderror = (e: OverlayErrorEvent) => {};
字段类型是否可选默认值平台起始版本描述
errorCode字符串
Android
错误码:0 - 正常显示;非 0 - 无法显示,你可以尝试使用下面提到的预加载方案来适配容器以解决问题。
errorMsg字符串
Android
错误信息

触摸覆盖层时的回调

bindoverlaytouch

Android
iOS
Clay
bindoverlaytouch = (e: OverlayTouchEvent) => {};
字段类型是否可选默认值平台起始版本描述
stateOverlayTouchState
Android
iOS
Clay
触摸状态
x数字
Android
iOS
Clay
相对于窗口的 x 位置,单位为 px
y数字
Android
iOS
Clay
相对于窗口的 y 位置,单位为 px

触摸覆盖层时的回调

bindrequestclose

Android
Clay
Harmony
bindrequestclose = (e: BaseEvent) => {};

点击返回按钮时的回调。

bindshowoverlay

Android
iOS
Clay
Harmony
bindshowoverlay = (e: BaseEvent) => {};

覆盖层显示时的回调

兼容性

LCD tables only load in the browser

除非另有说明,本项目采用知识共享署名 4.0 国际许可协议进行许可,代码示例采用 Apache License 2.0 许可协议进行许可。