4.1 组件的定义及属性
组件是页面视图层(WXML) 的基本组成单元, 组件组合可以构建功能强大的页面结构。 小程序框架为开发者提供了容器视图、基础内容、表单、导航、多媒体、地图、画布、开放能力等8类(30多个) 基础组件。
每一个组件都由一对标签组成, 有开始标签和结束标签, 内容放置在开始标签和结束标签之间, 内容也可以是组件。 组件的语法格式如下:
<标签名 属性名=“属性值”>内容 ...</标签名>
组件通过属性来进一步细化。不同的组件可以有不同的属性,但它们也有一些共用属性,如id、class、style、hidden、data-*、bind*/catch*等。
id 组件的唯一表示, 保持整个页面唯一, 不常用。
class 组件的样式类, 对应WXSS中定义的样式。
style 组件的内联样式, 可以动态设置内联样式。
hidden 组件是否显示, 所有组件默认显示。
data - ∗ 自定义属性, 组件触发事件时, 会发送给事件处理函数。事件处理函数可以通过传入参数对象的currentTarget. dataset 方式来获取自定义属性的值。
bind*/catch* 组件的事件, 绑定逻辑层相关事件处理函数。
4.2 内容视图组件
容器视图组件是能容纳其他组件的组件, 是构建小程序页面布局的基础组件, 主要包括view、scroll-view和swiper组件。
4.2.1 view
view组件是块级组件, 没有特殊功能, 主要用于布局展示, 相当于html 中的div, 是布局中最基本的用户界面(User Interface,UI) 组件, 通过设置view的CSS属性可以实现各种复杂的布局。 view组件的特有属性如表4-1 所示。
通过<view> 组件实现页面布局示例代码如下:
<view style="text-align: center;">默认flex布局</view>
<view style="display: flex;">
<view style="border:1px solid #f00;flex-grow: 1;">1</view>
<view style="border:1px solid #f00;flex-grow: 1;">2</view>
<view style="border:1px solid #f00;flex-grow: 1;">3</view>
</view>
<view style="text-align: center;">上下混合布局</view>
<view style="display: flex;flex-direction: column;">
<view style="border: 1px solid #f00;">1</view>
<view style="display: flex;">
<view style="border: 1px solid #f00;flex-grow: 1;">2</view>
<view style="border: 1px solid #f00;flex-grow: 2;">3</view>
</view>
</view>
<view style="text-align: center;">左右混合布局</view>
<view style="display: flex;">
<view style="border: 1px solid #f00;flex-grow: 1;">1</view>
<view style="display: flex;flex-direction: column;flex-grow: 1;">
<view style="border: 1px solid #f00;flex-grow: 1;">2</view>
<view style="border: 1px solid #f00;flex-grow: 2;">3</view>
</view>
</view>
运行结果如下:
图4-1 view组件示例
4.2.2 scroll-view
通过设置scroll-view 组件的相关属性可以实现滚动视图的功能,其属性如表4-2所示。
(1) 在使用竖向滚动时, 如果需要给 scroll-view组件设置一个固定高度, 可以通过WXSS设置height 来完成。
(2) 请勿在 scroll-view 组件中使用 textarge、map、canvas、video 组件。
(3) scroll-into-view属性的优先级高于 scroll-top。
(4) 由于在使用 scroll-view 组件时会阻止页面回弹, 所以在 scroll-view 组件滚动时无法触发onPullDownRefresh。
(5) 如果要实现页面下拉刷新, 请使用页面的滚动, 而不是设置 scroll-view 组件。 这样做, 能通过单击顶部状态栏回到页面顶部。
通过 scroll-view 组件可以实现下拉刷新和上拉加载更多, 代码如下:
wxml文件代码:
<view class="container"style="padding:0px">
<!-- 垂直滚动,这里必须设置高度 -->
<scroll-view scroll-top="{{scrollTop}}" scroll-y="true" style="height: {{scrollHeight}} px;" class=" list " bind-scrollyolower="bindDownLoad"
bindscrolltoupper="topLoad" bindscroll="scroll">
<view class="item"wx:for="{{list}}">
<image class="img"src="{{z1}}"></image>
<view class="text">
<text class="title">{{item.name}}</text>
<text class="description">{{item.short_de-scription}}</text>
</view>
</view>
</scroll-view>
<view class="body-view">
<loading hidden="{{hidden}}"bindchange="loadingChange">
加载中...
</loading>
</view>
</view>
js文件代码:
var url ="http:/www.imooc.com/course/ajaxlist";
var page = 0;
var page_size = 5;
var sort = "last";
var is_easy = 0;
var lange_id = 0;
var pos_id = 0;
var unlearn = 0;
var loadMore = function(that){
that.setDate({
hidden:false
});
wx.request({
url: 'url',
data:{
page:page,
page_size:page_size,
sort:sort,
is_easy:is_easy,
lange_id:lange_id,
pos_id:pos_id,
unlearn:unlearn
},
success:function(res){
//console.info(that.data.list);
var list = that.data.list;
for(var i = 0;i < res.data.list.length;i ++){
list.push(res.data.list[i]);
}
that.setData({
list:list
});
page ++;
that.setData({
hidden:true
});
}
});
}
Page({
data:{
hidden:true,
list:[],
scrollTop:0,
scrollHeight: 0
},
onl oad: function(){
//这里要注意,微信的 scroll-view 必须设置高度才能监听滚动事件,所以需要在页面的 onl oad事件中为 scroll-view 的高度赋值
var that = this;
wx.getSystemInfo({
success: function(res){
that.setDate({
scrollHeight:res.windowHeight
});
}
}) ;
loadMore(that);
},
//页面滑动到底部
bindDownLoad:function(){
var that = this;
loadMore(that);
console.log("lower");
},
scroll:function(event){
//该方法绑定了页面滚动时的事件,这里记录了当前的position.y的值,为了在请求数据后把页面定位到这里
this.setData({
scrollTop:event.detail.scrollTop
});
},
topLoad:function(event){
//该方法绑定了页面滑动到顶部的事件,然后做页面上拉刷新
page = 0;
this.setData({
list:[],
scrollTop:0
});
loadMore(this);
console.log("lower");
}
})
wxss文件代码:
.userinfo{
display: flex;
flex-direction: column;
align-items: center;
}
.userinfo-avatar{
width: 128rpx;
height: 128rpx;
margin: 20rpx;
border-radius: 50%;
}
.userinfo-nickname{
color: #aaa;
}
.usermotto{
max-width: 200px;
}
/**/
scroll-view{
width: 100%;
}
.item{
width: 90%;
height: 300rpx;
margin: 20rpx auto;
background: brown;
overflow: hidden;
}
.item,img{
width: 430rpx;
margin-right: 20rpx;
float: left;
}
.title{
font-size: 30rpx;
display: block;
margin: 30rpx auto;
}
.description{
font-size: 26rpx;
line-height: 15rpx;
}
4.2.3 swiper
swiper组件可以实现轮播图、图片预览、滑动页面等效果。 一个完整的swiper组件由< swiper/ > 和< swiper-item > 两个标签组成, 它们不能单独使用。 <swiper/ > 中只能放置一个或多<swiper-item / > , 若放置其他组件则会被删除; < swiper-item / > 内部可以放置任何组件, 默认宽高自动设置为100%。swiper组件的属性如表4-3 所示。
<swiper-item / >组件为滑块项组件,仅可以被放置在<swiper/>组件中,宽高尺寸默认按100%显示。
设置swiper组件,可以实现轮播图效果,代码如下:
<swiper indicator-dots='true' autoplay='true' interval='5000'du-ration='1000'>
<swiper-item>
<image src="/pages/image/z1.jpg" style="width: 100%"></image>
</swiper-item>
<swiper-item>
<image src="/pages/image/z1.jpg" style="width: 100%"></image>
</swiper-item>
<swiper-item>
<image src="/pages/image/z1.jpg" style="width: 100%"></image>
</swiper-item>
</swiper>
运行结果如下:
4.3 基础内容组件
基础内容组件包括icon、text和progress, 主要用于在视图页面中展示图标、文本和进度条等信息。
4.3.1 icon
icon组件即图标组件,通常用于表示一种状态,如success、info、warn、waiting、cancel等。其属性如表4 - 4 所示。
示例代码如下:
wxml文件代码:
<view>icon类型:
<block wx:for="{{iconType}}">
<icon type="{{item}}"/>{{item}}
</block>
</view>
<view>icon大小:
<block wx:for="{{iconSize}}">
<icon type="success" size="{{item}}"/>{{item}}
</block>
</view>
<view>icon颜色:
<block wx:for="{{iconColor}}">
<icon type="success" size="30" color="{{item}}"/>{{item}}
</block>
</view>
js文件代码:
Page({
data:{
iconType:["success","success_no_circle","info","warn","wait-ing","cancel","download","search","clear"],
iconSize:[10,20,30,40],
iconColor:['#f00','#0f0','#00f']
}
})
运行结果如下:
4.3.2 text
text 组件用于展示内容, 类似 HTML 中的< span > , text 组件中的内容支持长按选中, 支持转义字符“ \”, 属于行内元素。 text 组件的属性如表 4- 5 所示。
示例代码如下:
<block wx:for="{{x}}" wx:for-item="x">
<view class="aa">
<block wx:for="{{19-x}}" wx:for-item="y">
<text decode="{{true}}" space="true"> </text>
</block>
<block wx:for="{{y}}" wx:for-item="y">
<block wx:if="{{y<=2*x-1}}">
<text>*</text>
</block>
</block>
</view>
</block>
<block wx:for="{{x}}" wx:for-item="x">
<view class="aa">
<block wx:for="{{27+x}}" wx:for-item="x">
<text decode="{{true}}" space="{{true}}"> </text>
</block>
<block wx:for="{{y}}" wx:for-item="y">
<block wx:if="{{y<=11-2*x}}">
<text>*</text>
</block>
</block>
</view>
</block>
运行结果如下:
4.3.3 progress
progress组件用于显示进度状态,如资源加载、用户资料完成度、媒体资源播放进度等。progress组件属于块级元素,其属性表 4- 6 所示。
示例代码如下:
<view>显示百分比</view>
<progress percent='80' show-info='80'></progress>
<view>显示宽度</view>
<progress percent='50' stroke-width='2'></progress>
<view>自动显示进度条</view>
<progress percent='80' active></progress>
运行结果如下:
4.4 表单组件
表单组件的主要功能是收集用户信息, 并将这些信息传递给后台服务器, 实现小程序与用户之间的沟通。 表单组件不仅可以放置在< from/ > 标签中使用, 还可以作为单独组件和其他组件混合使用。
4.4.1 button
button 组件用来实现用户和应用之间的交互, 同时按钮的颜色起引导作用。 一般来说,在一个程序中一个按钮至少有3 种状态: 默认点击(default)、建议点击(primary)、谨慎点击(warn)。在构建项目时, 应在合适的场景使用合适的按钮, 当< button > 被< from/ > 包裹时, 可以通过设置from - type 属性来触发表单对应的事件。 button 组件的属性如表4-7所示。
示例代码如下:
<button type="default">type:default</button>
<button type="primary">type:primary</button>
<button type="warn">type:warn</button>
<button type="default" bindtap='buttonSize' size="{{size}}">改变size</button>
<button type="default" bindtap='buttonPlain' plain="{{plain}}">改变plain</button>
<button type="default" bindtap='buttonLoading' loading="{{loading}}">改变loading</button>
Page({
data:{
size:'default',
plain:'false',
loading:'false'
},
//改变按钮的大小
buttonSize:function(){
if(this.data.size =="default")
this.setData({size:'mini'})
else
this.setData({size:'default'})
},
//是否显示镂空
buttonPlain:function(){
this.setData({plain: ! this.data.plain})
},
//是否显示loading图案
buttonLoading:function(){
this.setData({ loading:! this.data.loading})
}
})
运行结果如下:
4.4.2 radio
单选框用来从一组选项中选取一个选项。在小程序中, 单选框由< radio-group/ > (单项选择器) 和< radio/ > ( 单选项目) 两个组件组合而成, 一个包含多个< radio/ > 的< radio-group/ / > 表示一组单选项, 在同一组单选项中< radio/ > 是互斥的, 当一个按钮被选中后, 之前选中的按钮就变为非选。 它们的属性如表4 -8 所示。
标签:item,组件,页面,data,scroll,第四章,view From: https://blog.csdn.net/weixin_74842051/article/details/136801317