原生组件说明

概念:原生组件是由客户端创建的原生组件。

包括canvasmapanimation-viewtextareacover-viewcover-imagecameravideolive-playerinput

其中,video 组件(v3.70.0 起)、input 组件(v3.105.0 起)、textarea(v3.140.1 起支持)和 live-player(v3.140.1 起)已支持同层渲染。

为了解决原生组件层级最高的限制。小程序专门提供了 cover-viewcover-image 组件,可以覆盖在部分原生组件上面。这两个组件也是原生组件,但是使用限制与其他原生组件有所不同。

使用限制

由于原生组件脱离在 web-view 渲染流程外,因此在使用时有以下限制:

  • 原生组件的层级是最高的,所以页面中的其他组件无论设置 z-index 为多少,都无法盖在原生组件上。后插入的原生组件可以覆盖之前的原生组件。
  • 原生组件无法在 scroll-viewswiperpicker-viewmovable-view 中使用,下面示例为错误写法。

代码示例

在开发者工具中打开

在开发者工具中打开

在 WEB IDE 中打开

  • SWAN
  1. <view class="wrap">
  2. <view class="title">横向滚动</view>
  3. <scroll-view
  4. scroll-x
  5. class="scroll-view"
  6. bind:scrolltoupper="toLeft"
  7. bind:scrolltolower="toRight"
  8. scroll-left="{= scrollLeft =}"
  9. upper-threshold="1"
  10. lower-threshold="1"
  11. bind:scroll="scroll"
  12. >
  13. <cover-view class="flex-item demo-text-1"></cover-view>
  14. </scroll-view>
  15. </view>
  • 部分 CSS 样式无法应用于原生组件,例如:
    无法对原生组件设置 CSS 动画;
    不能在父级节点使用overflow: hidden来裁剪原生组件的显示区域。
  • 在 iOS 下,video 组件暂时不支持触摸相关事件。
  • 原生组件会遮挡 sConsole 弹出的调试面板。

在工具上,原生组件是用 web 组件模拟的,因此很多情况并不能很好的还原真机的表现,建议开发者在使用到原生组件时尽量在真机上进行调试。

同层渲染

同层渲染是为了解决原生组件的层级问题,在支持同层渲染后,原生组件与其它组件可以随意叠加,有关层级的限制将不再存在。当前 videoinputtextarealive-player 组件已支持同层渲染

在同层渲染模式下:

  • 无需使用 cover-viewcover-image 组件来覆盖同层渲染组件。

  • 可在滚动组件,如 scroll-viewswipermovable-view 等组件中使用同层渲染组件。

  • 可直接通过 z-index 属性对同层渲染组件进行层级控制。

  • 同层渲染组件不会遮挡 sConsole 弹出的调试面板。