小程序定义了各种各样的组件,它们在WXML中起着各不同的作用。与HTML元素一样,一个组件是指从组件开始标签到结束标签的所有代码,由于组件可能会被转译为不同端对应的代码,所以在页面创建过程中,不能使用小程序组件标签以外的标签。
1)组件是视图层的基本组成单元
2)组件自带一些功能与微信风格的样式
3)一个组件通常包括开始标签和结束标签,属性用来修饰这个组件,内容在两个标签之内
按类型可以将组件划分为七大类:视图容器、基础内容、表单、导航、多媒体、地图、画布
一个完整的组件结构如下:
contents
组件可以通过属性进行配置,属性只能用在开始标签或单个自闭合标签上,不能用于结束标签。一个组件可以对应多个属性,属性具有名称和值两部分,组件的属性名称都是小写,以连字符“-”连接。组件属性分为所有组件都有的共同属性和组件自定义的特殊属性。
1.组件的共同属性
除上述属性以外几乎所有组件都有自定义属性,可以对该组件的功能或样式进行修饰,具体参考各个组件的定义。
2.组件的属性类型
每个属性都有其对应的类型,使用时应给属性值传入对应的类型值,属性按类型可分为:
有过前端经验的同学都了解,在前端项目中我们常使用DIV+CSS进行页面布局,其中
没有任何语义和功能,仅作为容器元素存在,在小程序中,有一套类似的容器组件,那就是View组件
1)水平3栏布局
示例代码如下:
执行结果如下:
2)左右混合布局
示例代码如下:
1
2
3
执行结果如下:
3)上下混合布局
示例代码如下:
1
2
3
执行结果为:
通过上面案例可以发现,任何复杂的布局都是通过不断嵌套
Scroll-view组件
在布局过程中,我们需要一些容器具备可滑动的能力,尽管我们可以通过给
目前,有些组件不能在
下面我们创建一个可滚动视图区,示例代码如下:
1
2
3
4
5
6
.scroll-container{
border:solid 1px;
height: 2400rpx;
}
.scroll-container.scroll-item{
height: 300rpx;
width:120%;
}
.bg-blue{background-color: #87CEFA;height: 400rpx;}
.bg-red{background-color: #FF6347;height: 400rpx;}
.act{padding: 10px;}
Page({
data: {
toView:'item3'//第一次渲染时,默认滚动到id值为"item-3""区域
},
scrollToUpper:function(){
console.log('触发到滚动顶部事件');
},
scrollToLower:function(){
console.log("触发滚动到底部事件");
},
//点击按钮时,滚动到顶部
scroll:function(){
console.log('触发了滚动事件');
},
scrollToTop:function(){
this.setData({
scrollTop:'0'
});
}
});
执行结果如下:
滑块视图组件
滑块视图容器在前端开发中是一个常见组件,利用它我们可以实现轮播图、滑动页面、图片预览效果等。一个完整的滑块视图组件由
1)基本轮播图
示例代码如下:
{{item.name}}
.banner{height: 400px;background-color: #ddd;}
.bg-blue{background-color: #87CEFA;}
.bg-red{background-color: #FF6347;}
.bg-green{background-color: #43CD80;}
Page({
data:{
autoplay:true,
sliderList:[
{ className: 'bg-red', name: 'slider1' },
{ className: 'bg-blue', name: 'slider2' },
{ className: 'bg-green', name: 'slider3' }
]
},
play:function(){
this.setData({
autoplay:!this.data.autoplay
});
},
change:function(){
console.log('执行了滚动');
}
});
执行结果如下:
2)自定义轮播图
示例代码如下:
Page({
data:{
image:[
'images/un1.jpg',
'images/un2.jpg',
'images/un3.jpg'
],
indicatorDots: true, //是否显示面板指示点
autoplay: true, //是否自动切换
interval: 3000, //自动切换时间间隔
duration: 1000, //滑动动画时长
}
});
执行结果如下:
具体WXSS这里就不显示了,希望大家能够自己尝试一下,其中图片路径不要搞错!