标签,是一个页面中最外层的容器,能够接受其他组件的嵌入,例如,多个view容器的嵌套。view容器可以通过flex布局定义内部项目的排列方式(详见第4章flex布局)。其属性如表3.2所示。
表3.2
组件属性
属性名类型默认值说明
hoverbooleanfalse是否启动点击态
hoverclassstringnone按住容器后的样式。当属性设置为hoverclass="none"时,没有点击效果
hoverstoppropagationbooleanfalse指定是否阻止本容器的祖先节点出现点击态
hoverstarttimenumber50按住容器后多久出现点击态,单位为ms
hoverstaytimenumber400手指离开后点击态的保留时长,单位为ms
视频讲解
31本例设计了两组父子view容器的点击态,第一组父子view容器中子view容器不阻止点击态向父容器传递,第二组父子view容器中子view容器阻止点击态向父容器传递,程序运行效果如图3.1所示。
pages/view/view.wxml文件代码如下:
1.view小案例
(1)不阻止父容器的view-hover
我是父类容器
我是子类容器
(2)阻止父容器的view-hover
我是父类容器
我是子类容器
图3.1组件view小案例
pages/view/view.wxss文件代码如下:
.view-parent {
width: 100%;
height: 350rpx;
background-color: pink;
text-align: center;
}
.view-son {
width: 50%;
height: 200rpx;
background-color: skyblue;
margin: 20rpx auto;
text-align: center;
}
.view-hover {
background-color: red;
}
app.wxss文件代码如下:
.demo-box {
padding: 20rpx; margin: 20rpx 60rpx; border: 1rpx solid gray;
}
.title {
display: flex;
flex-direction: row;
margin: 20rpx;
justify-content: center;
}
app.wxss文件中代码为公共样式,用于设置页面的布局以及标题样式,在本章所有案例中均相同,在后面的案例中省略。
【代码讲解】本例在view.wxml文件中放置两组容器,在app.wxss文件中设置父容器背景色为浅红色,子容器背景色为浅蓝色,通过hoverclass="viewhover"为标签增加属性,点击态均设置为点击后背景色更新为红色,第一组不阻止点击态传递给父容器,在第二组子类容器中通过hoverstoppropagation来阻止点击态传递给父容器,并设置属性hoverstarttime="3000",hoverstaytime="4000",当点击子容器时,3s后出现点击状态,当手指松开4s后,子容器背景色变为初始颜色。
图3.1(a)为页面初始效果; 图3.1(b)为点击第1组的子容器后,父子容器背景色均变为红色; 图3.1(c)为点击第2组的子容器后,仅有子容器背景色变为红色。
3.2.2scrollview
scrollview容器为可滚动的视图容器,允许用户通过手指在容器上滑动来改变显示区域,常见的滑动方向有水平滑动和垂直滑动。其属性如表3.3所示。
表3.3组件属性
属性名类型默认值说明
scrollxbooleanfalse允许横向滑动
scrollybooleannone允许纵向滑动
upperthresholdnumber50距顶部/左边多远时(单位: px),触发scrolltoupper事件
lowerthresholdnumber50距顶部/右边多远时(单位: px),触发scrolltolower事件
scrolltopnumber设置纵向滚动条位置
scrollleftnumber设置横向滚动条位置
scrollintoviewstring值应为某子元素id。设置哪个方向可滚动,则在哪个方向滚动到该元素
scrollwithanimationbooleanfalse在设置滚动条位置时使用动画过渡
enablebacktotopbooleanfalseiOS下单击顶部状态、Android双击标题栏滚动条返回顶部,仅支持纵向
bindscrolltouppereventhandle滚动到顶部/左边,会触发scrolltoupper事件
bindscrolltolowereventhandle滚动到底部/右边,会触发scrolltolower事件
bingscrolleventhandle滚动时触发,event.detail={scrollLeft,scrollTop,scrollHeight,scrollWidth,deltaX,deltaY}
注意: 在使用纵向滚动时,需要为设置一个固定宽度。
32本例设计一个纵向scrollview组件,运行效果如图32所示。
视频讲解
图3.2组件scrollview小案例
pages/scrollview/scrollview.wxml文件代码如下:
2.scroll-view小案例
实现纵向滚动
元素一
元素二
元素三
元素四
元素五
元素六
pages/scrollview/scrollview.wxss文件代码如下:
scroll-view {
height: 600rpx; width: 250rpx; margin: 0 auto;
}
.scroll-item-y {
height: 200rpx; line-height: 200rpx;
text-align: center; background-color: skyblue; border: 1px solid gray;
}
【代码讲解】本例在scrollview.wxml文件中放置组件,通过设置属性scrolly,允许组件上下滑动,在scrollview.wxss文件中设置其高度为600rpx,使得scrollview组件能够纵向滚动,在中嵌套6组用于显示滚动效果,内部元素宽度均为250rpx。
图3.2(a)为页面初始效果; 图3.2(b)为组件滑动到底部后的效果。
在图3.3中,虚线框是组件在京东小程序分类页中的应用。
图3.3scrollview组件应用实例
3.2.3swiper
组件为滑块视图容器,通常用于图片之间的切换播放,被形象地称为轮播图。其属性如表3.4所示。
表3.4组件属性
属性名类型默认值说明
indicatordotsbooleanfalse是否显示面板指示点
indicatorcolorcolorrgba(0,0,0,0.3)指示点颜色
indicatoractivecolorcolor#000000当前选择的指示点颜色
续表
属性名类型默认值说明
autoplaybooleanfalse是否自动切换
currentnumber0当前所在滑块的index
currentitemidstring" "当前所在滑块的itemid,不能与current被同时指定
intervalnumber5000自动切换时间间隔,单位: ms
durationnumber500滑动动画时长,单位: ms
circularbooleanfalse是否采用衔接滑动
verticalbooleanfalse滑动方向是否为纵向
previousmarginstring"0px"前边距,可用于露出前一项的一小部分,接受px和rpx值
nextmarginstring"0px"后边距,可用于露出后一项的一小部分,接受px和rpx值
displaymultipleitemsnumber1同时显示的滑块数量
skiphiddenitemlayoutbooleanfalse是否跳过未显示的滑块布局,设为true可优化复杂情况下的滑动性能,但会丢失隐藏状态滑块的布局信息
bindchangeeventhandlecurrent改变时会触发change事件,event.detail = {current: current, source: source}
bindtransitioneventhandleswiperitem的位置发生改变时会触发transition事件,event.detail = {dx: dx, dy: dy}
bindanimationfinisheventhandle动画结束时会触发animationfinish事件,event.detail同上
视频讲解
33swiper组件小案例,运行效果如图3.4所示。
pages/swiper/swiper.wxml文件代码如下:
3.swiper小案例
图片进行翻页切换
图3.4swiper组件小案例
图3.5swiper组件应用实例
pages/swiper/swiper.wxss文件代码如下:
swiper {
height: 350rpx;
}
【代码讲解】本例在swiper.wxml文件中放置组件,设置属性autoplay允许自动切换图片,设置属性interval="3000",图片每隔3s发生一次切换,属性indicatordots用于显示面板指示点,组件中嵌套3组,swiper容器的高度设置为300rpx。
图3.4(a)为页面初始效果,此时默认显示第一张图片; 图3.4(b)和图3.4(c)分别显示第二张照片和第三张照片,照片数据来自本地,保存在images文件夹下。
在图3.5中,虚线框是组件在携程小程序中的应用。
3.3基础内容组件
3.3.1icon
为图标组件,常用于页面装饰,开发者可以自定义其类型、大小和颜色。其属性如表3.5所示。
表3.5组件属性
属性名类型默认值说明
typestringfalseicon的类型,有效值: success,success_no_circle, info,warn,waiting,cancel,download, search, clear
sizenumber/string23pxicon的大小,单位: px(基础库2.4.0起支持rpx)
colorcolor#000000icon的颜色,同CSS的color
例如,自定义一个绿色、40px大小的success图标。
WXML中的代码如下:
如果有多个图标需要批量生成,利用wx:for循环精简代码,在JS文件的data中存放数据,然后在WXML文件中使用标签进行列表渲染。
批量生成不同大小的success图标的示例代码如下。
WXML中的代码如下:
JS文件代码如下:
Page({
data: {
iconSize: ["20", "25", "30"]
}
})
上述代码生成的图标大小分别为20rpx、25rpx和30rpx。
34icon组件小案例,运行效果如图3.6所示。
视频讲解
pages/icon/icon.wxml文件代码如下:
4.icon小案例
(1)实现大小变化
(2)实现内容变化
(3)实现颜色变化
图3.6icon组件小案例
pages/icon/icon.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", "red", "blue", "purple"
],
}
})
【代码讲解】本例在icon.js文件中的data中设置3个数组,分别为iconSize、iconType和iconColor,用于设置图标的大小、图标的类型和图标的颜色。在icon.wxml文件中使用标签配合wx:for批量生成多个标签组件。
3.3.2text
为文本组件,用于文字的显示,小程序的文本组件支持转义字符。其属性如表3.6所示。
表3.6组件属性
属性名类型默认值说明最 低 版 本
selectablebooleanfalse文本是否可选1.1.0
spacestring显示连续空格1.4.0
decodebooleanfalse是否解码1.4.0
35组件text小案例,运行效果如图3.7所示。
视频讲解
pages/text/text.wxml文件代码如下:
5.text小案例
用于文本的显示
{{text}}
图3.7text组件小案例
pages/text/text. js文件代码如下:
var initData = "2019年,中国要推进这70个工程项目: 制定实施新时期"互联网+"行动,实施数字经济、"互联网+"重大工程,建设人工智能创新应用先导区,持续推进大数据综合试验区建设; 加快5G商用步伐和IPv6规模部署,加强人工智能、工业互联网、物联网等新型基础设施建设和融合应用。"
var extraLine = []; //创建一个空数组
Page({
data: {
text: initData
},
add: function(e) {
extraLine.push("增加一行") //增加一行
this.setData({
text: initData + '\n' + extraLine.join('\n') //更新数组值
})
},
reduce: function(e) {
if(extraLine.length > 0) {
extraLine.pop() //删除一行
this.setData({
text: initData + '\n' + extraLine.join('\n') //更新数组值
})
}
}
})
【代码讲解】本例在text.wxml文件中通过组件存放文字,以及增加两个