https://uniapp.dcloud.net.cn/component/

扩展文档

组件概述

  • 所有uni-app的组件,都有如下属性
    • | hidden | Boolean | 组件是否隐藏 | 所有组件默认是显示的 |
    • | data-* | Any | 自定义属性 | 组件上触发的事件时,会发送给事件处理函数 |
  • 基础组件列表
    • | scroll-view | 可滚动视图容器 |
    • | swiper | 滑块视图容器,比如用于轮播banner |
    • | match-media | 屏幕动态适配组件,比如窄屏上不显示某些内容 |
      • 注释:可以指定一组 media query 媒体查询规则,满足查询条件时,这个组件才会被展示。
    • | movable-area | 可拖动区域 |
      • 注释:手指/鼠标按住movable-view拖动或双指缩放,但拖不出movable-area规定的范围
    • | movable-view | 可移动的视图容器,在页面中可以拖拽滑动或双指缩放。movable-view必须在movable-area组件中 |
    • | cover-view | 可覆盖在原生组件的上的文本组件 |
    • | cover-image | 可覆盖在原生组件的上的图片组件 |
    • | icon | 图标 |
    • | text | 文字 |
    • | rich-text | 富文本显示组件 |
    • | progress | 进度条 |
    • | checkbox | 多项选择器 |
    • | editor | 富文本输入框 |
    • | form | 表单 |
    • | input | 输入框 |
    • | label | 标签 |
    • | picker | 弹出式列表选择器 |
      • 注释:从底部弹起的滚动选择器。支持五种选择器,通过mode来区分,分别是普通选择器,多列选择器,时间选择器,日期选择器,省市区选择器,默认是普通选择器
    • | picker-view | 窗体内嵌式列表选择器 |
      • 注释:当需要对自定义选择的弹出方式和UI表现时
    • | radio | 单项选择器 |
    • | slider | 滑动选择器 |
    • | switch | 开关选择器 |
    • | textarea | 多行文本输入框 |
    • | navigator | 页面链接。类似于HTML中的a标签 |
    • | audio | 音频 |
    • | camera | 相机 |
      • 注释:页面内嵌的区域相机组件。注意这不是点击后全屏打开的相机
    • | image | 图片 |
    • | video | 视频 |
    • | live-player | 直播播放 |
    • | live-pusher | 实时音视频录制,也称直播推流 |
    • | map | 地图 |
    • | canvas | 画布 |
    • | web-view | web浏览器组件 |
    • | ad | 广告组件 |
      • 注释:嵌入到文章列表中的广告位
    • | ad-draw | 沉浸视频流广告组件 |
    • | custom-tab-bar | 底部tabbar自定义组件 |
      • 注释:h5页面专用,H5端尤其是PC宽屏,对tabBar的位置和样式有更灵活的需求。仍然读取 pages.json 里配置的tabBar信息
    • | navigation-bar | 页面顶部导航 |
      • 注释:页面导航条配置节点,用于指定导航栏的一些属性。
    • | page-meta | 页面属性配置节点 |
      • 注释:页面属性配置节点,用于指定页面的一些属性、监听页面事件。可部分替代pages.json的功能。
    • | unicloud-db组件 | uniCloud数据库访问和操作组件 |
  • 五角星点击评分的组件https://ext.dcloud.net.cn/plugin?id=33
  • easycom组件规范
    • 只要组件安装在项目的components目录下或uni_modules目录下
    • 符合components/组件名称/组件名称.(vue|uvue)目录结构
      • 当同时存在vue和uvue时,uni-app 项目优先使用 vue 文件,而uni-app x 项目优先使用 uvue 文件
    • 可以不用引用、注册,直接在页面中使用
    • 如果你的组件名称或路径不符合easycom的默认规范,可以在pages.json的easycom节点进行个性化设置,自定义匹配组件的策略
  • uni_module其实不止服务于组件,它可以服务于组件、js库、页面、项目等所有DCloud插件市场所支持的种类。
    • 注释:组件支持 easycom 组件
    • 注释:页面需要合并pages.json
  • uniCloud组件
    • 在uni-ui扩展库里还有uniCloud的文件选择和上传组件,参考:uni-file-picker
  • uni-app的基础组件里,有一批原生组件,如video、map
  • uni-app的App端支持原生插件,这类插件使用iOS或Android原生语言编写,封装成插件,供其他开发者使用js来调用
    • 原生插件分为原生组件component和原生模块module。
    • 原生组件component只能在App-nvue环境中使用
      • 注释:这里是指app的原生组件,uni-app基础组件中的原生组件是兼容多环境的原生组件。
  • datacom组件是一种数据驱动的、可云端一体的组件
    • 注释:搭配 uniCloud 的schema2code页面生成系统,数据库定义好schema,前端页面就不用写了,自动生成
    • 注释:符合一种数据规范的组件,大家都使用同一种数据规范,在切换组件、配合uniCloud使用、使用schema2code页面生成系统时都会更为方便

view

  • 如果使用nvue,则需注意,包裹文字应该使用<text>组件
  • 属性说明
    • | hover-class | String | none | 指定按下去的样式类。当 hover-class="none" 时,没有点击态效果 |
    • | hover-stop-propagation | Boolean | false | 指定是否阻止本节点的祖先节点出现点击态,App、H5、支付宝小程序、百度小程序不支持(支付宝小程序、百度小程序文档中都有此属性,实测未支持) |
    • | hover-start-time | Number | 50 | 按住后多久出现点击态,单位毫秒 |
    • | hover-stay-time | Number | 400 | 手指松开后点击态保留时间,单位毫秒 |
    • 注释:这些属性要在华为HarmonyOS Next实现兼容,需要对应使用 HBuilderX 4.23 及以上的编译器版本。
  • App平台 Vue2 项目在节点非常多时可以尝试使用 <div> 替换 <view> 以提升渲染性能。

scroll-view

  • 在webview渲染的页面中,区域滚动的性能不及页面滚动
  • 属性说明
    • | scroll-x | Boolean | false | 允许横向滚动 |
      • 使用横向滚动时,需要给<scroll-view>添加white-space: nowrap;样式
      • 注释:normal:合并连续的空白符,忽略开头和结尾的空白符。文本会在一行内显示,除非溢出容器。
    • | scroll-y | Boolean | false | 允许纵向滚动 |
      • 使用竖向滚动时,需要给 <scroll-view> 一个固定高度,通过 css 设置 height
    • | upper-threshold | Number/String | 50 | 距顶部/左边多远时(单位px),触发 scrolltoupper 事件 |
    • | lower-threshold | Number/String | 50 | 距底部/右边多远时(单位px),触发 scrolltolower 事件 |
    • | scroll-top | Number/String | | 设置竖向滚动条位置 |
      • scroll-into-view 的优先级高于 scroll-top。
    • | scroll-left | Number/String | | 设置横向滚动条位置 |
    • | scroll-into-view | String | | 值应为某子元素id(id不能以数字开头)。设置哪个方向可滚动,则在哪个方向滚动到该元素 |
    • | scroll-with-animation | Boolean | false | 在设置滚动条位置时使用动画过渡 |
    • | enable-back-to-top | Boolean | false | iOS点击顶部状态栏、安卓双击标题栏时,滚动条返回顶部,只支持竖向 | app-nvue,微信小程序 |
    • | show-scrollbar | Boolean | false | 控制是否出现滚动条 | App-nvue 2.1.5+ |
    • | refresher-enabled | Boolean | false | 开启自定义下拉刷新 | H5、app-vue 2.5.12+,微信小程序基础库2.10.1+ |
    • | refresher-threshold | Number | 45 | 设置自定义下拉刷新阈值 | H5、app-vue 2.5.12+,微信小程序基础库2.10.1+ |
    • | refresher-default-style | String | "black" | 设置自定义下拉刷新默认样式,支持设置 black,white,none,none 表示不使用默认样式 | H5、app-vue 2.5.12+,微信小程序基础库2.10.1+ |
    • | refresher-background | String | "#FFF" | 设置自定义下拉刷新区域背景颜色 | H5、app-vue 2.5.12+,微信小程序基础库2.10.1+ |
    • | refresher-triggered | Boolean | false | 设置当前下拉刷新状态,true 表示下拉刷新已经被触发,false 表示下拉刷新未被触发 | H5、app-vue 2.5.12+,微信小程序基础库2.10.1+ |
    • | enable-flex | Boolean | false | 启用 flexbox 布局。开启后,当前节点声明了 display: flex 就会成为 flex container,并作用于其孩子节点。 | 微信小程序 2.7.3 |
    • | scroll-anchoring | Boolean | false | 开启 scroll anchoring 特性,即控制滚动位置不随内容变化而抖动,仅在 iOS 下生效,安卓下可参考 CSS overflow-anchor 属性。 | 微信小程序 2.8.2 |
      • 注释:overflow-anchor CSS 属性提供一种退出浏览器滚动锚定行为的方法,该行为会调整滚动位置以最大程度地减少内容偏移。
    • | @scrolltoupper | EventHandle | | 滚动到顶部/左边,会触发 scrolltoupper 事件 |
    • | @scrolltolower | EventHandle | | 滚动到底部/右边,会触发 scrolltolower 事件 |
    • | @scroll | EventHandle | | 滚动时触发,event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY} |
    • | @refresherpulling | EventHandle | | 自定义下拉刷新控件被下拉 | H5、app-vue 2.5.12+,微信小程序基础库2.10.1+ |
    • | @refresherrefresh | EventHandle | | 自定义下拉刷新被触发 | H5、app-vue 2.5.12+,微信小程序基础库2.10.1+ |
    • | @refresherrestore | EventHandle | | 自定义下拉刷新被复位 | H5、app-vue 2.5.12+,微信小程序基础库2.10.1+ |
    • | @refresherabort | EventHandle | | 自定义下拉刷新被中止 | H5、app-vue 2.5.12+,微信小程序基础库2.10.1+ |
  • webview中使用scroll-view的注意
    • 原生组件嵌套问题
      • APP-vue,scroll-view 中避免使用 map、video 等原生组件。
      • 微信基础库2.4.4起支持了原生组件在 scroll-view、swiper、movable-view 中的使用。但并非所有小程序都支持,需具体查询各家小程序webview是否实现了同层渲染。
        • 注释:在微信小程序中,“原生组件”通常指的是那些由微信团队直接提供的、基于原生技术实现的UI组件。这些组件相比于普通的H5元素,具有更高的性能和更丰富的功能。原生组件可以直接利用设备的硬件能力,从而提供更好的用户体验。
    • 长列表性能问题
      • scroll-view 不适合放长列表,有性能问题。webview渲染时,建议改用webview的页面滚动;app-nvue需使用list组件;app-uvue需使用list-view组件。
      • 如果您一定要在webview中实现区域长列表,建议使用三方如better-scroll组件,或者插件市场搜索 虚拟列表,这些专业组件实现了dom复用,即便列表很长也不会创建很多dom。
    • 下拉刷新问题
      • webview渲染时,建议使用页面级的原生下拉刷新,性能更好。如一定要在webview中自定义下拉刷新,建议插件市场搜索虚拟列表,这些专业组件使用wxs、renderjs等技术避免通信阻塞。
    • scroll-view是区域滚动,不会触发页面滚动,无法触发pages.json配置的下拉刷新、页面触底onReachBottomDistance、titleNView的transparent透明渐变。但在app-uvue下,scroll-view如果是页面顶级节点,则等同于页面滚动。
    • webview渲染时,scroll-view的滚动条设置,可通过css的-webkit-scrollbar自定义,包括隐藏滚动条。
  • 在app-uvue中,其实没有页面级滚动,scroll-view也不存在原生组件层级、下拉刷新性能问题
    • 但app-uvue里使用长列表,请务必使用list-view组件,这个组件内置了recycle-view机制,不管列表多长,都可以通过回收不显示的列表来保证高性能
    • 注释:nvue 组件中的 list 组件

swiper 滑块视图容器

  • 滑动切换和滚动的区别,滑动切换是一屏一屏的切换
  • 属性说明
    • | indicator-dots | Boolean | false | 是否显示面板指示点 |
    • | indicator-color | Color | rgba(0, 0, 0, .3) | 指示点颜色 |
    • | indicator-active-color | Color | #000000 | 当前选中的指示点颜色 |
    • | active-class | String | | swiper-item 可见时的 class | 支付宝小程序 |
    • | changing-class | String | | acceleration 设置为 true 时且处于滑动过程中,中间若干屏处于可见时的class | 支付宝小程序 |
    • | autoplay | Boolean | false | 是否自动切换 |
    • | current | Number | 0 | 当前所在滑块的 index |
    • | current-item-id | String | | 当前所在滑块的 item-id ,不能与 current 被同时指定 | 支付宝小程序不支持 |
    • | interval | Number | 5000 | 自动切换时间间隔 |
    • | duration | Number | 500 | 滑动动画时长 | app-nvue不支持 |
    • | circular | Boolean | false | 是否采用衔接滑动,即播放到末尾后重新回到开头 |
    • | vertical | Boolean | false | 滑动方向是否为纵向 |
    • | previous-margin | String | 0px | 前边距,可用于露出前一项的一小部分,接受 px 和 rpx 值 | app-nvue、抖音小程序、飞书小程序不支持 |
    • | next-margin | String | 0px | 后边距,可用于露出后一项的一小部分,接受 px 和 rpx 值 | app-nvue、抖音小程序、飞书小程序不支持 |
    • | acceleration | Boolean | false | 当开启时,会根据滑动速度,连续滑动多屏 | 支付宝小程序 |
    • | disable-programmatic-animation | Boolean | false | 是否禁用代码变动触发 swiper 切换时使用动画。 | 支付宝小程序 |
    • | display-multiple-items | Number | 1 | 同时显示的滑块数量 | app-nvue、支付宝小程序不支持 |
posted on 2024-08-26 16:05  噬蛇之牙  阅读(14)  评论(0编辑  收藏  举报