开发 组件 原生组件 native-components
# 原生组件
更新时间:2024-09-12 15:53:07
小程序中的部分组件是由客户端创建的原生组件,这些组件有:
- camera
- input(仅在 focus 时表现为原生组件)
- textarea
- video
- canvas
- cover-image
- cover-view
# 原生组件同层渲染
同层渲染是为了解决原生组件的层级问题,在支持同层渲染后,原生组件与其它组件可以任意叠加,有关层级的限制将不再存在。但需要注意的是,组件内部仍由原生渲染,样式一般还是对原生组件内部无效。当前只有 video 原生组件支持同层渲染。
# 原生组件的使用限制
(除事件相关,同层渲染下已无以下限制)
由于原生组件脱离在 WebView 渲染流程外,因此在使用时有以下限制:
- 原生组件的层级是最高的,所以页面中的其他组件无论设置 z-index 为多少,都无法盖在原生组件上。
- 后插入的原生组件可以覆盖之前的原生组件。
- 部分 CSS 样式无法应用于原生组件,例如:
- 无法对原生组件设置 CSS 动画
- 无法定义原生组件为 position: fixed
- 不能在父级节点使用 overflow: hidden 来裁剪原生组件的显示区域
- 原生组件的事件监听不能使用 bind:eventname 的写法,只支持 bindeventname。原生组件也不支持 catch 和 capture 的事件绑定方式。
- 原生组件会遮挡 vConsole 弹出的调试面板。 在工具上,原生组件是用 web 组件模拟的,因此很多情况并不能很好的还原真机的表现,建议开发者在使用到原生组件时尽量在真机上进行调试。
- 原生组件在自定义的滚动元素中展示有可能不符预期。原生组件尽量跟随页面滚动,不要放在其他滚动元素中。
# cover-view 与 cover-image
为了解决原生组件层级最高的限制。小程序专门提供了 cover-view 和 cover-image 组件,可以覆盖在部分原生组件上面。这两个组件也是原生组件,但是使用限制与其他原生组件有所不同。
# 原生组件相对层级
(同层渲染下已无以下问题)
为了可以调整原生组件之间的相对层级位置,小程序支持在样式中声明 z-index 来指定原生组件的层级。该 z-index 仅调整原生组件之间的层级顺序,其层级仍高于其他非原生组件。
上一篇:《playlet》
下一篇:《map》
仍有疑问? 前往社区提问