小程序是一种新的开放能力,开发者可以快速地开发一个小程序。小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验。这是关于小程序的动态加载一个列表页小栗子。
这里的列表布局方式,采用flex弹性布局实现,具体内容可以参考flex 阮一峰
Num1
简单说一下布局,头部是一个title,下面是一个list,list是由一个一个的card组成,而对于card布局,主要是外部一个box,里面分左右img和内容。
list.wxml
1 | <!--pages/list/list.wxml--> |
list.wxss1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54/* pages/list/list.wxss */
/*整个容器*/
.box{
display: flex;
flex-direction: column;/*竖直排列*/
}
/*title文字*/
.list_header{
font-size: 32rpx;
font-weight: bold;
color: #444;
padding:20rpx;
border-bottom: 2rpx solid
}
/*列表项容器*/
.list{
display:flex;
flex-direction: row;/*横向排列*/
align-content: center;
border-bottom:1rpx solid
}
/*图片容器*/
.list_img{
display: flex;
align-content: center;
padding:20rpx 10rpx;
}
/*图片*/
.avatar{
width:130rpx;
height:130rpx;
border-radius: 4rpx;
border: 1rpx solid #F2F2F2;
}
/*文字容器,包含标题和内容*/
.list_main{
display: flex;
flex-direction: column;/*文字竖直排列*/
align-content: center;
padding:40rpx 20rpx;
overflow: hidden;
}
.list_title{
font-size: 28rpx;
color: #717171;
font-weight: bold;
padding-bottom: 10rpx;
}
.list_content{
font-size: 24rpx;
color: #999;
}
list.js里的数据先写成假数据。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24// pages/list/list.js
Page({
/**
* 页面的初始数据
*/
data: {
list:[{
img: 'http://localhost:9999/image/a1.jpg',
title: '美丽的大海啊!',
content: '大海啊全是水,美丽的海景让人赏心悦目!海景壁纸请欣赏!'
},
{
img: 'http://localhost:9999/image/a2.jpg',
title: '回不去的那叫从前',
content: '回不去的那叫从前,到不了的才是远方;不保留的那叫青春,不完美的才是人生。'
},
{
img: 'http://localhost:9999/image/a3.jpg',
title: '森林生存恐怖游戏',
content: '《森林》是一款PC平台开放世界生存恐怖游戏,游戏中玩家必须建造设施,探索世界,生存下去。《森林》将打造一个活生生的,气候多变,植被动态生长凋零,地下洞穴错综复杂的森林,等待玩家探索。'
},
]
},
(也可以使用本地node服务)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28var express = require('express');
var fs = require('fs');
var app = express();
//处理静态资源
app.use(express.static('./'));
app.get('/list', function (req, res) {
res.send({
code: 200,
data: [{
img: 'http://localhost:9999/image/a1.jpg',
title: '美丽的大海啊!',
content: '大海啊全是水,美丽的海景让人赏心悦目!海景壁纸请欣赏!'
},
{
img: 'http://localhost:9999/image/a2.jpg',
title: '回不去的那叫从前',
content: '回不去的那叫从前,到不了的才是远方;不保留的那叫青春,不完美的才是人生。'
},
{
img: 'http://localhost:9999/image/a3.jpg',
title: '森林生存恐怖游戏',
content: '《森林》是一款PC平台开放世界生存恐怖游戏,游戏中玩家必须建造设施,探索世界,生存下去。《森林》将打造一个活生生的,气候多变,植被动态生长凋零,地下洞穴错综复杂的森林,等待玩家探索。'
},
]
});
});
app.listen(9999); //监听端口
Num2
接下来是img在头部,下方是文字内容。
list.wxml
1 | <!--pages/listview/listview.wxml--> |
list.wxss1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59/* pages/listview/listview.wxss */
/*整个容器*/
.box{
display: flex;
background:
flex-direction: column;/*竖直排列*/
align-content: center;
}
/*列表项容器*/
.list{
background: #FFF;
display:flex;
flex-direction: column;/*竖直排列*/
align-content: center;
width:90%;
margin:20rpx auto;/*居中对齐*/
}
/*图片容器*/
.list_img{
display: flex;
align-content: center;
width:100%;
padding:20rpx 0rpx;
}
/*图片*/
.avatar{
width:100%;
height:400rpx;
border-radius: 4rpx;
border: 1rpx solid #F2F2F2;
}
/*文字容器,包含标题和内容*/
.list_main{
display: flex;
flex-direction: column;/*文字竖直排列*/
align-content: center;
padding:20rpx;
overflow: hidden;
}
.list_title{
font-size: 28rpx;
color: #717171;
font-weight: bold;
padding-bottom: 10rpx;
}
.list_address{
font-size: 24rpx;
color: #717171;
font-weight: bold;
padding-bottom: 10rpx;
}
.list_content{
font-size: 24rpx;
color: #999;
}
list.js里的数据先写成假数据。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24// pages/list/list.js
Page({
/**
* 页面的初始数据
*/
data: {
list:[{
img: 'http://localhost:9999/image/a1.jpg',
title: '美丽的大海啊!',
content: '大海啊全是水,美丽的海景让人赏心悦目!海景壁纸请欣赏!'
},
{
img: 'http://localhost:9999/image/a2.jpg',
title: '回不去的那叫从前',
content: '回不去的那叫从前,到不了的才是远方;不保留的那叫青春,不完美的才是人生。'
},
{
img: 'http://localhost:9999/image/a3.jpg',
title: '森林生存恐怖游戏',
content: '《森林》是一款PC平台开放世界生存恐怖游戏,游戏中玩家必须建造设施,探索世界,生存下去。《森林》将打造一个活生生的,气候多变,植被动态生长凋零,地下洞穴错综复杂的森林,等待玩家探索。'
},
]
},
(也可以使用本地node服务)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31var express = require('express');
var fs = require('fs');
var app = express();
//处理静态资源
app.use(express.static('./'));
app.get('/list', function (req, res) {
res.send({
code: 200,
data: [{
img: 'http://localhost:9999/image/a1.jpg',
title: '美丽的大海啊!',
address: '1美丽的大海啊!',
content: '大海啊全是水,美丽的海景让人赏心悦目!海景壁纸请欣赏!'
},
{
img: 'http://localhost:9999/image/a2.jpg',
title: '回不去的那叫从前',
address: '1回不去的那叫从前',
content: '回不去的那叫从前,到不了的才是远方;不保留的那叫青春,不完美的才是人生。'
},
{
img: 'http://localhost:9999/image/a3.jpg',
title: '森林生存恐怖游戏',
address: '1森林生存恐怖游戏',
content: '《森林》是一款PC平台开放世界生存恐怖游戏,游戏中玩家必须建造设施,探索世界,生存下去。《森林》将打造一个活生生的,气候多变,植被动态生长凋零,地下洞穴错综复杂的森林,等待玩家探索。'
},
]
});
});
app.listen(9999); //监听端口
Num3
上面的样式都是很常见的列表页,我们最终的用户交互效果这样是很不友好的,那就在里面加入下拉刷新,底部加载更多,这样才符合用户的操作习惯。
主要点:1
2
3
4
5
6
7
8
9
list.json配置:
"enablePullDownRefresh": true
需要捕获这两个事件:
onReachBottom(滚动到底部事件)
onPullDownRefresh(下拉刷新事件)
本地服务:
1 | var express = require('express'); |
1 | <!--pages/listview/listview.wxml--> |
1 | <!-- listview.json --> |
1 | // pages/listview/listview.js |