• 小程序开发.微信小程序.组件.视图容器


    小程序开发.微信小程序中的组件.视图容器组件

    note:当前本文编辑中… 20220731

    jcLee95 的个人博客
    邮箱 :291148484@163.com
    CSDN 主页https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343
    本文地址https://blog.csdn.net/qq_28550263/article/details/126083749

    目 录

    1. 概述

    2. view 组件 和 scroll-view 组件

    3. movable-view 组件 和 movable-area 组件

    4. swiper 和 swiper-item 组件

    5. match-media 组件

    6. page-container 组件

    7. root-portal 组件


    1. 概述

    视图容器组件用于排版页面与为其他组件提供载体。在微信小程序中提供了如下视图组件:

    组件描述说明
    view视图容器。基础库 1.0.0 开始支持。
    scroll-view可滚动 视图容器。基础库 1.0.0 开始支持。
    movable-view可移动的视图容器,在页面中可以拖拽滑动。movable-view必须在 movable-area 组件中,并且必须是直接子节点,否则不能移动。基础库 1.2.0 开始支持。
    movable-areamovable-view的可移动区域。基础库 1.2.0 开始支持。
    swiper滑块视图容器。其中只可放置swiper-item组件,否则会导致未定义的行为。基础库 1.0.0 开始支持。
    swiper-item仅可放置在swiper组件中,宽高自动设置为100%。基础库 1.0.0 开始支持。
    page-container页面容器。基础库 2.16.0 开始支持。
    root-portal使整个子树从页面中脱离出来,类似于在 CSS 中使用 fixed position 的效果。基础库 1.0.0 开始支持,主要用于制作弹窗、弹出层等。
    match-mediamedia query 匹配检测节点。可以指定一组 media query 规则,满足时,这个节点才会被展示。通过这个节点可以实现“页面宽高在某个范围时才展示某个区域”这样的效果。基础库 2.11.1 开始支持。
    share-element共享元素。基础库 2.16.0 开始支持。

    2. view 组件 和 scroll-view 组件

    2.1 组件功能

    • view 容器组件在微信小程序中是最基本的容器组件,其就类似于 HTML 中的 div。但是注意,虽然两者各自在不同的体系中发挥着相似的作用,但 view 毕竟不是 div,这体现在 view 和 div 具有不同的属性。比如,在 HTML 中的 div,通过指定属性 contenteditable 的值为 true,就可以让元素可编辑,但是在 微信小程序中的 view,至今没有实现这样的属性。
    • scroll-view 组件 为可滚动的视图容器,允许用户通过手指在容器上滑动来改变显示区域。和HTML中使用CSS的 scroll 一样,在平面上可以有 水平垂直 两大可被允许的滚动方向。
    • view 组件 和 scroll-view 组件的区别在于,view 组件表示普通的视图区域,而 scroll-view 表示可滚动视图区域。

    2.2 组件的属性介绍

    2.2.1 view 组件的属性

    属性类型默认值必须说明最低版本
    hover-classstringnone指定按下去的样式类。当 hover-class=“none” 时,没有点击态效果1.0.0
    hover-stop-propagationbooleanfalse指定是否阻止本节点的祖先节点出现点击态1.5.0
    hover-start-timenumber50按住后多久出现点击态,单位毫秒1.0.0
    hover-stay-timenumber400手指松开后点击态保留时间,单位毫秒1.0.0

    2.2.2 scroll-view 组件的属性

    属性类型默认值必须说明最低版本
    scroll-xbooleanfalse允许横向滚动1.0.0
    scroll-ybooleanfalse允许纵向滚动1.0.0
    upper-thresholdnumber/string50距顶部/左边多远时,触发 scrolltoupper 事件1.0.0
    lower-thresholdnumber/string50距底部/右边多远时,触发 scrolltolower 事件1.0.0
    scroll-topnumber/string-设置竖向滚动条位置1.0.0
    scroll-leftnumber/string-设置横向滚动条位置1.0.0
    scroll-into-viewstring-值应为某子元素id(id不能以数字开头)。设置哪个方向可滚动,则在哪个方向滚动到该元素1.0.0
    scroll-with-animationbooleanfalse在设置滚动条位置时使用动画过渡1.0.0
    enable-back-to-topbooleanfalseiOS点击顶部状态栏、安卓双击标题栏时,滚动条返回顶部,只支持竖向1.0.0
    enable-flexbooleanfalse启用 flexbox 布局。开启后,当前节点声明了 display: flex 就会成为 flex container,并作用于其孩子节点。2.7.3
    scroll-anchoringbooleanfalse开启 scroll anchoring 特性,即控制滚动位置不随内容变化而抖动,仅在 iOS 下生效,安卓下可参考 CSS overflow-anchor 属性。2.8.2
    refresher-enabledbooleanfalse开启自定义下拉刷新2.10.1
    refresher-thresholdnumber45设置自定义下拉刷新阈值2.10.1
    refresher-default-stylestring"black"设置自定义下拉刷新默认样式,支持设置 black | white | none, none 表示不使用默认样式2.10.1
    refresher-backgroundstring"#FFF"设置自定义下拉刷新区域背景颜色2.10.1
    refresher-triggeredbooleanfalse设置当前下拉刷新状态,true 表示下拉刷新已经被触发,false 表示下拉刷新未被触发2.10.1
    enhancedbooleanfalse启用 scroll-view 增强特性,启用后可通过 ScrollViewContext 操作 scroll-view2.12.0
    bouncesbooleantrueiOS 下 scroll-view 边界弹性控制 (同时开启 enhanced 属性后生效)2.12.0
    show-scrollbarbooleantrue滚动条显隐控制 (同时开启 enhanced 属性后生效)2.12.0
    paging-enabledbooleanfalse分页滑动效果 (同时开启 enhanced 属性后生效)2.12.0
    fast-decelerationbooleanfalse滑动减速速率控制 (同时开启 enhanced 属性后生效)2.12.0
    binddragstarteventhandle-滑动开始事件 (同时开启 enhanced 属性后生效) detail { scrollTop, scrollLeft }2.12.0
    binddraggingeventhandle-滑动事件 (同时开启 enhanced 属性后生效) detail { scrollTop, scrollLeft }2.12.0
    binddragendeventhandle-滑动结束事件 (同时开启 enhanced 属性后生效) detail { scrollTop, scrollLeft, velocity }2.12.0
    bindscrolltouppereventhandle-滚动到顶部/左边时触发1.0.0
    bindscrolltolowereventhandle-滚动到底部/右边时触发1.0.0
    bindscrolleventhandle-滚动时触发,event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}1.0.0
    bindrefresherpullingeventhandle-自定义下拉刷新控件被下拉2.10.1
    bindrefresherrefresheventhandle-自定义下拉刷新被触发2.10.1
    bindrefresherrestoreeventhandle-自定义下拉刷新被复位2.10.1
    bindrefresheraborteventhandle-自定义下拉刷新被中止2.10.1

    2.3 示例

    3. movable-view 组件 和 movable-area 组件

    3.1 组件功能

    • movable-view 组件为可移动的视图容器组件,在页面中可以拖拽滑动;
    • movable-area 组件为movable-view的可移动区域;
    • movable-view 必须在 movable-area 组件中,并且必须是直接子节点,否则不能移动。

    3.2 属性描述

    3.2.1 movable-view 组件属性

    属性类型默认值必须说明最低版本
    directionstringnonemovable-view的移动方向,属性值有all、vertical、horizontal、none1.2.0
    inertiabooleanfalsemovable-view是否带有惯性1.2.0
    out-of-boundsbooleanfalse超过可移动区域后,movable-view是否还可以移动1.2.0
    xnumber/string-定义 x 轴方向的偏移,如果 x 的值不在可移动范围内,会自动移动到可移动范围;改变 x 的值会触发动画;单位支持px(默认)、rpx;1.2.0
    ynumber/string-定义 y 轴方向的偏移,如果 y 的值不在可移动范围内,会自动移动到可移动范围;改变 y 的值会触发动画;单位支持px(默认)、rpx;1.2.0
    dampingnumber20阻尼系数,用于控制 x 或y改变时的动画和过界回弹的动画,值越大移动越快1.2.0
    frictionnumber2摩擦系数,用于控制惯性滑动的动画,值越大摩擦力越大,滑动越快停止;必须大于0,否则会被设置成默认值1.2.0
    disabledbooleanfalse是否禁用1.9.90
    scalebooleanfalse是否支持双指缩放,默认缩放手势生效区域是在 movable-view 内1.9.90
    scale-minnumber0.5定义缩放倍数最小值1.9.90
    scale-maxnumber10定义缩放倍数最大值1.9.90
    scale-valuenumber1定义缩放倍数,取值范围为 0.5 - 101.9.90
    animationbooleantrue是否使用动画2.1.0
    bindscaleeventhandle-缩放过程中触发的事件,event.detail = {x, y, scale},x和 y 字段在2.1.0之后支持1.9.90
    htouchmoveeventhandle-初次手指触摸后移动为横向的移动时触发,如果 catch 此事件,则意味着 touchmove 事件也被catch1.9.90
    vtouchmoveeventhandle-初次手指触摸后移动为纵向的移动时触发,如果 catch 此事件,则意味着 touchmove 事件也被catch1.9.90
    bindchangeeventhandle-拖动过程中触发的事件,event.detail = {x, y, source}1.9.90

    其中,bindchange 返回的 source 表示产生移动的原因:

    描述
    touch拖动
    touch-out-of-bounds超出移动范围
    out-of-bounds超出移动范围后的回弹
    friction惯性
    空字符串setData

    3.2.2 movable-area组件属性

    属性类型默认值必须说明最低版本
    scale-areabooleanfalse当里面的 movable-view 设置为支持双指缩放时,设置此值可将缩放手势生效区域修改为整个 movable-area1.9.90

    4. swiper 和 swiper-item 组件

    4.1 组件功能

    • swiper 组件是以一个滑块视图容器,通常用于图片之间的切换播放,也就是 Web 中的 轮播图。在 swiper 组件中只可放置 swiper-item 组件,否则会导致未定义的行为。一个swiper 组件看起来就像这样:

    在这里插入图片描述

    4.2 属性描述

    4.2.1 swiper 组件属性

    属性类型默认值必须说明最低版本
    indicator-dotsbooleanfalse是否显示面板指示点1.0.0
    indicator-colorcolorrgba(0, 0, 0, .3)指示点颜色1.1.0
    indicator-active-colorcolor#000000当前选中的指示点颜色1.1.0
    autoplaybooleanfalse是否自动切换1.0.0
    currentnumber0当前所在滑块的 index1.0.0
    intervalnumber5000自动切换时间间隔1.0.0
    durationnumber500滑动动画时长1.0.0
    circularbooleanfalse是否采用衔接滑动1.0.0
    verticalbooleanfalse滑动方向是否为纵向1.0.0
    previous-marginstring"0px"前边距,可用于露出前一项的一小部分,接受 px 和 rpx 值1.9.0
    next-marginstring"0px"后边距,可用于露出后一项的一小部分,接受 px 和 rpx 值1.9.0
    snap-to-edgebooleanfalse当 swiper-item 的个数大于等于 2,关闭 circular 并且开启 previous-margin 或 next-margin 的时候,可以指定这个边距是否应用到第一个、最后一个元素2.12.1
    display-multiple-itemsnumber1同时显示的滑块数量1.9.0
    bindchangeeventhandle-current 改变时会触发 change 事件,event.detail = {current, source}1.0.0
    bindtransitioneventhandle-swiper-item 的位置发生改变时会触发 transition 事件,event.detail = {dx: dx, dy: dy}2.4.3
    bindanimationfinisheventhandle-动画结束时会触发 animationfinish 事件,event.detail 同上1.9.0
    easing-functionstring"default"指定 swiper 切换缓动动画类型2.6.5

    4.2.2 swiper-item 组件属性

    属性类型默认值必须说明最低版本
    item-idstring-该 swiper-item 的标识符1.9.0
    skip-hidden-item-layoutbooleanfalse是否跳过未显示的滑块布局,设为 true 可优化复杂情况下的滑动性能,但会丢失隐藏状态滑块的布局信息1.9.0

    5. match-media 组件

    5.1 组件功能

    • media query 匹配检测节点。可以指定一组 media query 规则,满足时,这个节点才会被展示。
    • 通过这个节点可以实现“页面宽高在某个范围时才展示某个区域”这样的效果。

    5.2 属性描述

    属性类型默认值必须说明最低版本
    min-widthnumber-页面最小宽度( px 为单位)2.11.1
    max-widthnumber-页面最大宽度( px 为单位)2.11.1
    widthnumber-页面宽度( px 为单位) 2.11.1
    min-heightnumber-页面最小高度( px 为单位)2.11.1
    max-heightnumber-页面最大高度( px 为单位)2.11.1
    heightnumber-页面高度( px 为单位)2.11.1
    orientationstring-屏幕方向( landscape 或 portrait )2.11.1
    <match-media min-width="300" max-width="600">
      <view>当页面宽度在 300 ~ 500 px 之间时展示这里view>
    match-media>
    
    <match-media min-height="400" orientation="landscape">
      <view>当页面高度不小于 400 px 且屏幕方向为纵向时展示这里view>
    match-media>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    6. page-container 组件

    6.1 组件功能

    • 页面容器组件。
    • 小程序如果在页面内进行复杂的界面设计(如在页面内弹出半屏的弹窗、在页面内加载一个全屏的子页面等),用户进行返回操作会直接离开当前页面,不符合用户预期,预期应为关闭当前弹出的组件。 为此提供“假页”容器组件,效果类似于 popup 弹出层,页面内存在该容器时,当用户进行返回操作,关闭该容器不关闭页面。返回操作包括三种情形,右滑手势、安卓物理返回键和调用 navigateBack 接口。
    • 当前页面最多只有 1 个容器,若已存在容器的情况下,无法增加新的容器
    • wx.navigateBack 无法在页面栈顶调用,此时没有上一级页面

    6.2 属性描述

    属性类型默认值必须说明最低版本
    showbooleanfalse是否显示容器组件2.16.0
    durationnumber300动画时长,单位毫秒2.16.0
    z-indexnumber100z-index 层级2.16.0
    overlaybooleantrue是否显示遮罩层2.16.0
    positionstringbottom弹出位置,可选值为 top bottom right center2.16.0
    roundbooleanfalse是否显示圆角2.16.0
    close-on-slideDownbooleanfalse是否在下滑一段距离后关闭2.16.0
    overlay-stylestring-自定义遮罩层样式2.16.0
    custom-stylestring-自定义弹出层样式2.16.0
    bind:beforeentereventhandle-进入前触发2.16.0
    bind:entereventhandle-进入中触发2.16.0
    bind:afterentereventhandle-进入后触发2.16.0
    bind:beforeleaveeventhandle-离开前触发2.16.0
    bind:leaveeventhandle-离开中触发2.16.0
    bind:afterleaveeventhandle-离开后触发2.16.0
    bind:clickoverlayeventhandle-点击遮罩层时触发2.16.0

    7. root-portal 组件

    使整个子树从页面中脱离出来,类似于在 CSS 中使用 fixed position 的效果。主要用于制作弹窗、弹出层等。

    例如:

    <view class="intro">
      <button bindtap="toggle">显示 root-portalbutton>
      
      <root-portal wx:if="{{ show }}">
        <view class="portal-content">
          root-portal 内容
        view>
      root-portal>
      
    view>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    Go和Java实现抽象工厂模式
    真正的Mac电脑必备装机应用CleanMyMac X
    ES6+新特性
    案例分享 生产环境逐步迁移至k8s集群 - pod注册到consul
    ubuntu18.04升级Cmake
    webpack 项目升级成vite项目
    数学建模比赛中常用的建模提示词(数模prompt)
    CSShas伪类选择器案例附注释
    《Java 核心技术卷1 基础知识》第三章 Java 的基本程序设计结构 笔记
    shared_ptr共享的智能指针
  • 原文地址:https://blog.csdn.net/qq_28550263/article/details/126083749