微信小程序学习笔记五 常见组件
1. 常见组件
- 重点讲解小程序中常用的布局组件

1.1 view
代替 原来的div标签
<!-- pages/index/index.wxml -->
<view hover-class="h-class">
点击我试试
</view>
/* pages/index/index.wxss */
.h-class{
color: green;
}
1.2 text
- 文本标签
- 只能嵌套text
- 长按文字可以复制 (只有该标签有这个功能)
- 可以对空格 回车 进行编码
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| selectable | Boolean | false | 文本是否可选 |
| decode | Boolean | false | 是否解码 |
<!-- text 标签测试 -->
<text selectable="false" decode="false">
普 通
</text>
1.3 image
- 图片标签, image组件默认宽度320px、高度240px
- 支持懒加载
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| src | String | 图片资源地址 | |
| mode | String | 'scaleToFill' | 图片裁剪、缩放的模式 |
| lazy-load | Boolean | false | 图片懒加载 |
mode有效值:
- model 有13种模式,其中4种是缩放模式, 9种是裁剪模式
| 模式 | 值 | 说明 |
|---|---|---|
| 缩放 | scaleToFill | 不保持纵横比缩放图片, 使图片的宽高完全拉伸至填满image元素 |
| 缩放 | aspectFit | 保持纵横比缩放图片, 使图片的长边能完全显示出来 |
| 缩放 | aspectFill | 保持纵横比缩放图片, 只保证图片的短边能完全显示出来 |
| 缩放 | widthFix | 宽度不变, 高度自动变化, 保持原图宽高比不变 |
| 裁剪 | top | 不缩放图片, 只显示图片的顶部区域 |
| 裁剪 | bottom | 不缩放图片, 只显示图片的底部区域 |
| 裁剪 | center | 不缩放图片, 只显示图片的中间区域 |
| 裁剪 | left | 不缩放图片, 只显示图片的左边区域 |
| 裁剪 | right | 不缩放图片, 只显示图片的右边区域 |
| 裁剪 | top left | 不缩放图片, 只显示图片的左上边区域 |
| 裁剪 | top right | 不缩放图片, 只显示图片的右上边区域 |
| 裁剪 | bottom left | 不缩放图片, 只显示图片的左下边区域 |
| 裁剪 | bottom right | 不缩放图片, 只显示图片的右下边区域 |
1.4 swiper
微信内置轮播图组件
- swiper : 块视图容器。
- swiper-item: 滑块, 默认宽度和⾼度都是100%

- 默认宽度 100% 高度150px
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| indicator-dots | Boolean | false |
是否显示面板指示点 |
| indicator-color | Color | rgb(0,0,0,.3) |
指示点颜色 |
| indicator-active-color | Color | #000000 |
当前选中的指示点颜色 |
| autoplay | Boolean | false |
是否自动切换 |
| interval | Number | 5000 |
自动切换时间间隔 |
| circular | Boolean | false |
是否循环轮播 |
<!--
"pages/SwiperText/SwiperText.wxml",
1. 轮播图的外层容器: swiper
2. 每一个轮播项: swiper-item
3. swiper存在默认样式
- width: 100%
- height: 150px image 存在默认宽度和高度 320 * 240
4. swiper 高度无法实现由内容撑开
5. 先找出来原图的高度和宽度, 等比例给swiper定宽度和高度
- 原图的宽高880 * 388
- swiper宽度 / swiper 高度 = 原图宽度 / 原图高度
- swiper高度 = swiper 宽度 * 原图的高度 / 原图的宽度
height : calc(100vw * 338 / 880)
-->
<swiper indicator-dots="true" autoplay>
<swiper-item>
<image mode="widthFix" src="https://i0.hdslb.com/bfs/feed-admin/5ef9aa23c480cf40998be6f0897bcad4ad8e8e3f.jpg@880w_388h_1c_95q">
</image>
</swiper-item>
<swiper-item>
<image mode="widthFix" src=" https://i0.hdslb.com/bfs/feed-admin/c7c308997d904ec7770062fb0e2062dfeaf54f89.png@880w_388h_1c_95q">
</image>
</swiper-item>
<swiper-item>
<image mode="widthFix" src=" https://i0.hdslb.com/bfs/feed-admin/5f60c09eb96f604bc4fc8ea78ef5b3be6ef67963.png@880w_388h_1c_95q">
</image>
</swiper-item>
</swiper>
/* pages/SwiperText.wxss */
swiper{
width: 100%;
height : calc(100vw * 338 / 880)
}
image{
width: 100%;
}
1.5 navigator
导航组件 类似超链接标签
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| 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"时生效 |
<!--pages/navigatorText/navigatorText.wxml-->
<!--
导航组件: navigator
0 相当于一个块级元素, 默认会换行 可以直接加宽高
1. url: 要跳转的页面路径 绝对路径|相对路径
2. target: 要跳转到当前小程序页面 还是其他的小程序页面
self: 默认值 自己
miniProgram: 其他的小程序页面
3. open-type: 跳转的方式
-->
<view>
<navigator url="/pages/SwiperText/SwiperText">轮播图页面</navigator>
<navigator url="/pages/SwiperText/SwiperText">轮播图页面</navigator>
</view>
1.6 rich-text
富文本标签
可以将字符串解析成 对应标签, 类似Vue 中v-html功能
<!--pages/RichText/RichText.wxml-->
<!-- 1. 加载 节点数组-->
<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')
}
})
1.6.1 nodes 属性
nodes属性支持 字符串和标签节点数组
| 属性 | 说明 | 类型 | 必填 | 备注 |
|---|---|---|---|---|
| name | 标签名 | String | 是 | 支持部分受信任的HTML节点 |
| attrs | 属性 | Object | 否 | 支持部分受信任的属性, 遵循 Pascal命名法 |
| children | 子节点列表 | array | 否 | 结构和 nodes一致 |
文本节点: type = text
| 属性 | 说明 | 类型 | 必填 | 备注 |
|---|---|---|---|---|
| text | 文本 | string | 是 | 支持entities |
nodes不推荐使用String类型, 性能会有所下降rich-text组件内屏蔽所有节点的事件attrs属性不支持id, 支持 classname属性大小写不敏感- 如果使用了不受信任的
html'节点, 该节点及其所有子节点将会被移除 img标签仅支持网络图片
1.7 button

<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 | 否 | 用于''组件, 分别会触发 ''组件的 | |
| open-type | string | 否 | 微信开发能力 |
1.7.1 size 的合法值
| 值 | 说明 |
|---|---|
| default | 默认大小 |
| mini | 小尺寸 |
1.7.2 type 的合法值
| 值 | 说明 |
|---|---|
| primary | 绿色 |
| default | 白色 |
| warn | 红色 |
1.7.3 form-type的合法值
| 值 | 说明 |
|---|---|
| submit | 提交表单 |
| reset | 重置表单 |
1.7.4 open-type 的合法值
| 值 | 说明 |
|---|---|
| contact | 打开客服会话, 如果用户在会话中点击消息卡片后返回小程序, 可以从 bindcontact 回调中获得具体信息 |
| share | 触发用户转发 |
| getPhoneNumber | 获取用户手机号, 可以从bindgetphonenumber回调中获取到用户信息` |
| launchApp | 打开 APP, 可以通过app-parameter属性设定向APP传的参数 |
| openSetting | 打开授权设置页 |
| feedback | 打开"意见反馈"页面, 用户可提交反馈内容并上传日志, 开发者可以登录小程序管理后台后进入左侧菜单 "客服反馈"页面获取到反馈内容 |
1.8 icon
| 属性 | 类型 | 默认值 | 必填 | 说明 |
|---|---|---|---|---|
| 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>
1.9 radio
可以通过 color属性来修改颜色

需要搭配 radio-group ⼀起使⽤
1.10. checkbox
可以通过 color属性来修改颜色

需要搭配 checkbox-group ⼀起使⽤
微信小程序学习笔记五 常见组件的更多相关文章
- 微信小程序学习笔记四 自定义组件
1. 自定义组件 类似Vue或react中的自定义组件 小程序允许我们使用自定义组件的方式来构建页面 1.1 创建自定义组件 类似于页面, 一个自定义组件由json wxml wxss js 4个文件 ...
- 微信小程序学习笔记二 数据绑定 + 事件绑定
微信小程序学习笔记二 1. 小程序特点概述 没有DOM 组件化开发: 具备特定功能效果的代码集合 体积小, 单个压缩包体积不能大于2M, 否则无法上线 小程序的四个重要的文件 *js *.wxml - ...
- 【微信小程序学习笔记】入门与了解
[微信小程序学习笔记(一)] IDE 下载安装 下载地址 官方工具:https://mp.weixin.qq.com/debug/w … tml?t=1476434678461 下载可执行文件后,可按 ...
- 微信小程序学习笔记一 小程序介绍 & 前置知识
微信小程序学习笔记一 1. 什么是小程序? 2017年度百度百科十大热词之一 微信小程序, 简称小程序, 英文名 Mini Program, 是一种不需要下载安装即可使用的应用 ( 张小龙对其的定义是 ...
- 微信小程序学习笔记(阶段一)
一阶段学习过程: (一)看官方文档的简易教程:https://mp.weixin.qq.com/debug/wxadoc/dev/ (二)看小码哥视频:https://chuanke.baidu.co ...
- 微信小程序学习笔记以及VUE比较
之前只是注册了一下微信小程序AppID,随便玩了玩HelloWorld!(项目起手式),但是最近看微信小程序/小游戏,崛起之势不可阻挡.小程序我来了!(果然,一入前端深似海啊啊啊啊啊~) 编辑器: S ...
- 微信小程序学习笔记1--小程序的代码构成
最近打算学习一下微信小程序,看了微信公众平台的文档感觉还比较简单,就从这个方向重新找回学习的状态吧: 1.先了解一下小程序的代码构成: 创建项目后会看到四种后缀的文件: .json 后缀的 JSON ...
- 微信小程序学习笔记(3)--------框架之配置
我们使用app.json文件来对微信小程序进行全局配置,决定页面文件的路径.窗口表现.设置网络超时时间.设置多 tab 等. app.json 配置项列表 属性 类型 必填 描述 pages Stri ...
- 微信小程序学习笔记(1)-微信小程序样式设置逻辑
1.微信小程序的样式设置统一在每一页的.wxss的样式文件中,所有的样式设置代码统一写入这个文件中: 2.样式主要是通过.wxml里面控件的“class”属性来调用,此处调用会有几个细节要注意: 1) ...
随机推荐
- aptitude软件状态标志i、v、p
输出的结果分三栏,分别为状态.包名和描述.而状态则由p.i.v等字母表示.查询后才知道这些标识的含义是这样的: i - 包已经成功安装,并且所有依赖都满足. c - 包已经被移除,但是配置文件被保留. ...
- 微信小程序云开发-云存储-上传单张照片到云存储并显示到页面上
一.wxml文件 页面上写上传图片的按钮,按钮绑定chooseImg. <button bindtap="chooseImg" type="primary" ...
- 搭建MySQL主从实现Django读写分离
一.MySQL主从搭建 主从配置原理: 主库写日志到 BinLog 从库开个 IO 线程读取主库的 BinLog 日志,并写入 RelayLog 再开一个 SQL 线程,读 RelayLog 日志,回 ...
- maven之---资源过滤 在java/main/resourse/*.xml ,*.properties引用maven属性${db.username}
本文主要来源maven实战14.3 为了应对环境的变化,首先使用Maven属性将这个会发生变化的部分提取出来.在上一节的数据库配置中,连接数据库使用的驱动类,URL,用户名和密码都可能发生变化,因此使 ...
- bootstrap table记录一下
$(function() { // 刷新 talbe function refresh() { $("#table").bootstrapTable('refresh'); } $ ...
- 15 道超经典大厂 Java 面试题!重中之重
从超高频的后端面试题出发,指明学习方向 大家好,我是鱼皮. 还记得我的老弟小阿巴么?他目前正值大一暑假,在家自学编程(刷短视频)中. 他整个大一期间基本都在学习前端.后来,我带他写了一次后端,结果就崩 ...
- SQL 查询总是先执行SELECT语句吗?你们都错了!
SELECT语句中子句的顺序.SELECT语句中使用时必须遵循的次序. 经过一段时间的学习,我们知道了SELECT语句超简版的语法如下: SELECT 字段名 FROM 表名 后来,我们又陆续学习了W ...
- 一文读懂Spring动态配置多数据源---源码详细分析
Spring动态多数据源源码分析及解读 一.为什么要研究Spring动态多数据源 期初,最开始的原因是:想将答题服务中发送主观题答题数据给批改中间件这块抽象出来, 但这块主要使用的是mq消息的方式 ...
- selenium WebDriverWait
Selenium WebDriverWait的知识: 一.webdrivewait 示例代码 from selenium import webdriver from selenium.webdri ...
- 来看看是什么原因导致生产服上的系统CPU高的?
我们可能会遇到生产服务器CPU很高的问题,有时候能确定是哪个进程,但是不知道这个进程都在干什么,所以也无从下手,无法解决问题.只能不断的重启,重启等. 最近也看了[一线码农]的一些教程,觉得都很不错, ...