重点讲解?程序中常?的布局组件
view,text,rich–text,button,image,navigator,icon,swiper,radio,checkbox。 等
代替 原来的 div 标签
<view hover-class="h-class">
点击我试试
</view>
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
selectable | Boolean | false | ?本是否可选 |
decode | Boolean | false | 是否解码 |
<text selectable="{{false}}" decode="{{false}}">
普 通
</text>
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
src | String | 图?资源地址 | |
mode | String | ‘scaleToFill’ | 图片剪裁,缩放的模式 |
lazy-load | Boolean | false | 图片懒加载 |
mode 有效值:
mode 有 13 种模式,其中 4 种是缩放模式,9种是裁剪模式。
模式 | 值 | 说明 |
---|---|---|
缩放 | scaleToFill | 不保持纵横?缩放图?,使图?的宽?完全拉伸?填满image 元素 |
缩放 | aspectFit | 保持纵横?缩放图?,使图?的?边能完全显?出来。 |
缩放 | aspectFill | 保持纵横?缩放图?,只保证图?的短边能完全显?出来。 |
缩放 | widthFix | 宽度不变,?度?动变化,保持原图宽??不变 |
裁剪 | top | 不缩放图?,只显?图?的顶部区域 |
裁剪 | bottom | 不缩放图?,只显?图?的底部区域 |
裁剪 | center | 不缩放图?,只显?图?的中间区域 |
裁剪 | left | 不缩放图?,只显?图?的左边区域 |
裁剪 | right | 不缩放图?,只显?图?的右边区域 |
裁剪 | top left | 不缩放图?,只显?图?的左上边区域 |
裁剪 | top right | 不缩放图?,只显?图?的右上边区域 |
裁剪 | bottom left | 不缩放图?,只显?图?的左下边区域 |
裁剪 | bottom right | 不缩放图?,只显?图?的右下边区域 |
微信内置轮播图组件
默认宽度 100% ?度 150px
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
indicator-dots | Boolean | false | 是否显??板指?点 |
indicator-color | Color | rgba(0, 0, 0, .3) | 指?点颜? |
indicator-active-color | Color | #000000 | 当前选中的指?点颜? |
autoplay | Boolean | false | 是否?动切换 |
interval | Number | 5000 | ?动切换时间间隔 |
circular | Boolean | false | 是否循环轮播 |
导航组件 类似超链接标签
属性名 | 类型 | 默认 | 说明 |
---|---|---|---|
target | String | self | 在哪个?标上发?跳转,默认当前?程序,可选值self/miniProgram |
url | String | 当前?程序内的跳转链接 | |
open-type | String | navigate | 跳转?式 |
open-type 有效值:
值 | 说明 |
---|---|
navigate | 保留当前??,跳转到应?内的某个??,但是不能跳到 tabbar ?? |
redirect | 关闭当前??,跳转到应?内的某个??,但是不允许跳转到 tabbar ??。 |
switchTab | 跳转到 tabBar ??,并关闭其他所有? tabBar ?? |
reLaunch | 关闭所有??,打开到应?内的某个?? |
navigateBack | 关闭当前??,返回上???或多级??。可通过 getCurrentPages() 获取当前的??栈,决定需要返回?层 |
exit | 退出?程序,target="miniProgram"时生效 |
富文本标签
可以将字符串解析成 对应标签,类似 vue中 v–html 功能
代码
// 1 index.wxml 加载 节点数组
<rich-text nodes="{{nodes}}" bindtap="tap"></rich-text>
// 2 加载 字符串
<rich-text nodes='<img
src="https://developers.weixin.qq.com/miniprogram/assets/images/head_global_z_@all.p
ng" alt="">'></rich-text>
// index.js
Page({
data: {
nodes: [{
name: 'div',
attrs: {
class: 'div_class',
style: 'line-height: 60px; color: red;'
},
children: [{
type: 'text',
text: 'Hello World!'
}]
}]
},
tap() {
console.log('tap')
}
})
nodes 属性?持 字符串 和 标签节点数组
属性 | 说明 | 类型 | 必填 | 备注 |
---|---|---|---|---|
name | 标签名 | string | 是 | ?持部分受信任的 HTML 节点 |
attrs | 属性 | object | 否 | ?持部分受信任的属性,遵循 Pascal 命名法 |
children | ?节点列表 | array | 否 | 结构和 nodes ?致 |
?本节点:type = text
属性 | 说明 | 类型 | 必填 | 备注 |
---|---|---|---|---|
text | ?本 | string | 是 | ?持entities |
<button
type="default"
size="{{defaultSize}}"
loading="{{loading}}"
plain="{{plain}}"
>
default
</button>
属性 | 说明 | 类型 | 必填 | 备注 |
---|---|---|---|---|
size | string | default | 否 | 按钮的?? |
type | string | default | 否 | 按钮的样式类型 |
plain | boolean | false | 否 | 按钮是否镂空,背景?透明 |
disabled | boolean | false | 否 | 是否禁? |
loading | boolean | false | 否 | 名称前是否带 loading 图标 |
form-type | string | 否 | ?于 组件,点击分别会触发 组件的submit/reset 事件 | |
open-type | string | 否 | 微信开放能? |
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 | 打开“意?反馈”??,??可提交反馈内容并上传?志,开发者可以登录?程序管理后台后进?左侧菜单“客服反馈”??获取到反馈内容 |
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
type | string | 是 | icon的类型,有效值:success, success_no_circle,info, warn, waiting, cancel, download, search,clear | |
size | number/string | 23 | 否 | icon的?? |
color | string | 否 | icon的颜?,同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>
功能描述
表单。将组件内的用户输入的switch input checkbox slider radio picker 提交。
当点击 form 表单中 form-type 为 submit 的 button 组件时,会将表单组件中的 value 值进行提交,需要在表单组件中加上 name 来作为 key
属性说明
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
report-submit | boolean | false | 否 | 是否返回 formId 用于发送模板消息 |
report-submit-timeout | number | 0 | 否 | 等待一段时间(毫秒数)以确认 formId 是否生效。如果未指定这个参数,formId 有很小的概率是无效的(如遇到网络失败的情况)。指定这个参数将可以检测 formId 是否有效,以这个参数的时间作为这项检测的超时时间。如果失败,将返回 requestFormId:fail 开头的 formId |
bindsubmit | eventhandle | 否 | 携带 form 中的数据触发 submit 事件,event.detail = {value : {‘name’: ‘value’} , formId: ‘’} | |
bindreset | eventhandle | 否 | 表单重置时会触发 reset 事件 | |
代码 |
<view class="container">
<view class="page-body">
<form catchsubmit="formSubmit" catchreset="formReset">
<view class="page-section page-section-gap">
<view class="page-section-title">switch</view>
<switch name="switch"/>
</view>
<view class="page-section page-section-gap">
<view class="page-section-title">radio</view>
<radio-group name="radio">
<label><radio value="radio1"/>选项一</label>
<label><radio value="radio2"/>选项二</label>
</radio-group>
</view>
<view class="page-section page-section-gap">
<view class="page-section-title">checkbox</view>
<checkbox-group name="checkbox">
<label><checkbox value="checkbox1"/>选项一</label>
<label><checkbox value="checkbox2"/>选项二</label>
</checkbox-group>
</view>
<view class="page-section page-section-gap">
<view class="page-section-title">slider</view>
<slider value="50" name="slider" show-value ></slider>
</view>
<view class="page-section">
<view class="page-section-title">input</view>
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell weui-cell_input">
<view class="weui-cell__bd" style="margin: 30rpx 0" >
<input class="weui-input" name="input" placeholder="这是一个输入框" />
</view>
</view>
</view>
</view>
<view class="btn-area">
<button style="margin: 30rpx 0" type="primary" formType="submit">Submit</button>
<button style="margin: 30rpx 0" formType="reset">Reset</button>
</view>
</form>
</view>
</view>
Page({
onShareAppMessage() {
return {
title: 'form',
path: 'page/component/pages/form/form'
}
},
data: {
pickerHidden: true,
chosen: ''
},
pickerConfirm(e) {
this.setData({
pickerHidden: true
})
this.setData({
chosen: e.detail.value
})
},
pickerCancel() {
this.setData({
pickerHidden: true
})
},
pickerShow() {
this.setData({
pickerHidden: false
})
},
formSubmit(e) {
console.log('form发生了submit事件,携带数据为:', e.detail.value)
},
formReset(e) {
console.log('form发生了reset事件,携带数据为:', e.detail.value)
this.setData({
chosen: ''
})
}
})
效果
可以通过 color属性来修改颜色
需要搭配 radio-group ?起使?
可以通过 color属性来修改颜色
需要搭配 checkbox-group ?起使?