分享

微信小程序入门之常用组件(04)

 海拥 2021-11-30

常见组件

重点讲解微信小程序中常见的布局组件
view,text,rich-text,button,image,navigator,icon,swiper, radio,checkbox


一、view

view 代替 原来的 div 标签

 <view hover-class="h-class">
 点击我试试
 </view>

二、text

text:

  1. 文本标签
  2. 只能嵌套text
  3. 长按文字可以复制(只有该标签有这个功能)
属性名类型默认值说明
selectableBooleanfalse文本是否可选 (已废弃)
decodeBooleanfalse是否解码
user-selectbooleanfalse文本是否可选,该属性会使文本节点显示为 inline-block
spacestring显示连续空格

代码

  <text selectable="{{false}}" decode="{{false}}">&nbsp;</text>

三、image

image:

  1. 图片标签,image组件默认宽度320px、高度240px
  2. 支持懒加载
属性名类型默认值说明
srcString图片资源地址
modeStringscaleToFill图片裁剪、缩放的模式
lazy-loadBooleanfalse图片懒加载

mode 有效值:
mode 有 13 种模式,其中 4 种是缩放模式,9种是裁剪模式。

模式说明
缩放scaleToFill不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素
缩放aspectFit保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来。
缩放aspectFill保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取。
缩放widthFix宽度不变,高度自动变化,保持原图宽高比不变
裁剪top不缩放图片,只显示图片的顶部区域
裁剪bottom不缩放图片,只显示图片的底部区域
裁剪center不缩放图片,只显示图片的中间区域
裁剪left不缩放图片,只显示图片的左边区域
裁剪right不缩放图片,只显示图片的右边区域
裁剪top left不缩放图片,只显示图片的左上边区域
裁剪top right不缩放图片,只显示图片的右上边区域
裁剪bottom left不缩放图片,只显示图片的左下边区域
裁剪bottom right不缩放图片,只显示图片的右下边区域

四、swiper

swiper: 微信内置轮播图组件
在这里插入图片描述
默认宽度 100% 高度 150px

属性名类型默认值说明
indicator-dotsBooleanfalse是否显示面板指示点
indicator-colorColorrgba(0, 0, 0, .3)指示点颜色
indicator-active-colorColor#000000当前选中的指示点颜色
autoplayBooleanfalse是否自动切换
intervalNumber5000自动切换时间间隔
circularBooleanfalses是否循环轮播

1. swiper

滑块视图容器。

2. swiper-item

滑块
默认宽度和高度都是100%

五、navigator

navigator:
导航组件 类似超链接标签

属性名类型默认值说明
targetStringself在哪个目标上发生跳转,默认当前小程序,可选值 self/miniProgram
urlString当前小程序内的跳转链接
open- typeStringnavigate跳转方式

open-type 有效值:

说明
navigate保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。
redirect关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。
switchTab跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
reLaunch关闭所有页面,打开到应用内的某个页面
navigateBack关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages 获取当前的页面栈,决定需要返回几层。
exit退出小程序,target="miniProgram"时生效

六、rich-text

rich-text:
富文本标签
可以将字符串解析成 对应标签,类似 vue中 v–html 功能

在这里插入图片描述
代码:

JAVASCRIPT
WXML
const htmlSnip =
`<div class="div_class">
  <h1>Title</h1>
  <p class="p">
    Life is&nbsp;<i>like</i>&nbsp;a box of
    <b>&nbsp;chocolates</b>.
  </p>
</div>
`

const nodeSnip =
`Page({
  data: {
    nodes: [{
      name: 'div',
      attrs: {
        class: 'div_class',
        style: 'line-height: 60px; color: red;'
      },
      children: [{
        type: 'text',
        text: 'You never know what you're gonna get.'
      }]
    }]
  }
})
`

Page({
  onShareAppMessage() {
    return {
      title: 'rich-text',
      path: 'page/component/pages/rich-text/rich-text'
    }
  },

  data: {
    htmlSnip,
    nodeSnip,
    renderedByHtml: false,
    renderedByNode: false,
    nodes: [{
      name: 'div',
      attrs: {
        class: 'div_class',
        style: 'line-height: 60px; color: #1AAD19;'
      },
      children: [{
        type: 'text',
        text: 'You never know what you\'re gonna get.'
      }]
    }]
  },
  renderHtml() {
    this.setData({
      renderedByHtml: true
    })
  },
  renderNode() {
    this.setData({
      renderedByNode: true
    })
  },
  enterCode(e) {
    console.log(e.detail.value)
    this.setData({
      htmlSnip: e.detail.value
    })
  }
})

nodes属性

nodes 属性⽀持 字符串 和 标签节点数组

属性说明类型必填备注
name标签名string支持部分受信任的 HTML 节点
attrs属性object支持部分受信任的属性,遵循 Pascal 命名法
children子节点列表array结构和 nodes一致

文本节点:type = text

属性说明类型必填备注
text文本string支持entities

Bug & Tip

  • nodes nodes 不推荐使用 String 类型,性能会有所下降。
  • rich–text 组件内屏蔽所有节点的事件。
  • attrs 属性不支持id ,支持class 。
  • name 属性大小写不敏感。
  • 如果使用了不受信任的HTML节点,该节点及其所有子节点将会被移除。
  • img 标签仅支持网络图片。

七、 button

button:
在这里插入图片描述
代码:

<button
  type="default"
  size="{{defaultSize}}"
  loading="{{loading}}"
  plain="{{plain}}"
>
 default
</button>
属性类型默认值必填说明
sizestringdefault按钮的大小
typestringdefault按钮的样式类型
plainbooleanfalse按钮是否镂空,背景色透明
disabledbooleanfalse是否禁用
loadingbooleanfalse名称前是否带 loading 图标
form- typestring用于 form 组件,点击分别会触发 form 组件的 submit/reset 事件
open- typestring微信开放能力

size 的合法值

说明
default默认大小
mini小尺寸

type 的合法值

说明
primary绿色
default默认
warn红色

form-type 的合法值

说明
submit提交表单
reset重置表单

open-type 的合法值

说明
contact打开客服会话,如果用户在会话中点击消息卡片后返回小程序,可以从 bindcontact 回调中获得具体信息,具体说明
share触发用户转发,使⽤前建议先阅读使用指引
getPhoneNumber获取用户手机号,可以从bindgetphonenumber回调中获取到用户信息, 具体说明
getUserInfo获取⽤⼾信息,可以从bindgetuserinfo回调中获取到用户信息
launchApp打开APP,可以通过app-parameter属性设定向APP传的参数具体说明
openSetting打开授权设置页
feedback打开“意见反馈”页面,用户可提交反馈内容并上传日志,开发者可以登录小程序管理后台后进入左侧菜单“客服反馈”页面获取到反馈内容

open-type 的 contact的实现流程

  1. 将微信小程序 的 appid 由测试号改为 ⾃⼰的 appid
  2. 登录微信小程序官网,添加 客服客服 – 微信微信
  3. 为了方便演示,可以准备两个账号
    (1). 普通用户 A
    (2). 客服-微信 B

八、 icon

icon:
图标。组件属性的长度单位默认为px,2.4.0起支持传入单位(rpx/px)。

属性类型默认值必填说明
typestringicon的类型,有效值:success, success_no_circle, info, warn, waiting, cancel, download, search, clear
sizenumber/string23icon的大小
colorstringicon的颜⾊,同css的color

在这里插入图片描述
代码:
js

Page({
  data: {
    iconSize: [20, 30, 40, 50, 60, 70],
    iconType: [
      'success', 'success_no_circle', 'info', 'warn', 'waiting', 'cancel',
'download', 'search', 'clear'
   ],
    iconColor: [
      'red', 'orange', 'yellow', 'green', 'rgb(0,255,255)', 'blue', 'purple'
   ],
 }
})

wxml

<view class="group">
  <block wx:for="{{iconSize}}">
    <icon type="success" size="{{item}}"/>
  </block>
</view> <view class="group">
  <block wx:for="{{iconType}}">
    <icon type="{{item}}" size="40"/>
  </block>
</view> <view class="group">
  <block wx:for="{{iconColor}}">
    <icon type="success" size="40" color="{{item}}"/>
  </block>
</view>

九、radio

radio:
可以通过 color属性来修改颜色
需要搭配 radio-group 一起使用
在这里插入图片描述
代码:
js

Page({
  onShareAppMessage() {
    return {
      title: 'radio',
      path: 'page/component/pages/radio/radio'
    }
  },

  data: {
    items: [
      {value: 'USA', name: '美国'},
      {value: 'CHN', name: '中国', checked: 'true'},
      {value: 'BRA', name: '巴西'},
      {value: 'JPN', name: '日本'},
      {value: 'ENG', name: '英国'},
      {value: 'FRA', name: '法国'},
    ]
  },

  radioChange(e) {
    console.log('radio发生change事件,携带value值为:', e.detail.value)

    const items = this.data.items
    for (let i = 0, len = items.length; i < len; ++i) {
      items[i].checked = items[i].value === e.detail.value
    }

    this.setData({
      items
    })
  }
})

wxml:

<view class="page-body">
  <view class="page-section">
    <view class="page-section-title">默认样式</view>
    <label class="radio">
      <radio value="r1" checked="true"/>选中
    </label>
    <label class="radio">
      <radio value="r2" />未选中
    </label>
  </view>


  <view class="page-section">
    <view class="page-section-title">推荐展示样式</view>
    <view class="weui-cells weui-cells_after-title">
      <radio-group bindchange="radioChange">
        <label class="weui-cell weui-check__label" wx:for="{{items}}" wx:key="{{item.value}}">

          <view class="weui-cell__hd">
            <radio value="{{item.value}}" checked="true"/>
          </view>
          <view class="weui-cell__bd">{{item.name}}</view>
        </label>
      </radio-group>
    </view>
  </view>
</view>

十、checkbox

checkbox:
可以通过 color属性来修改颜色
需要搭配 checkbox-group 一起使用
在这里插入图片描述


总结

以上就是本节要讲的内容,本文仅仅简单介绍了微信小程序中常用组件的使用,后续还会继续补充


相关内容:

  • 微信小程序从入门到入土教程(01)
  • 微信小程序入门之模板语法(02)
  • 微信小程序从入门到入土教程(03)
  • 微信小程序入门之常用组件(04)
  • 微信小程序入门之自定义组件(05)

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多