布局示例
一、列表式
列表式布局是一种常见的排版方式,其排列方式为由上而下垂直排列,在每个列表元素当中存放内容,示例如图所示

html
<!-- 导航标题 -->
<view class="title">
<view class="select">正在热映</view>
<view class="default">即将上映</view>
</view>
<!-- 轮播图 -->
<view class="haibao">
<swiper indicator-dots="{{indicatorDots}}" autoplay="{{autoplay}}" interval="{{interval}}">
<block wx:for="{{imgUrls}}">
<swiper-item>
<image src="{{item}}"></image>
</swiper-item>
</block>
</swiper>
</view>
<!-- 列表元素 -->
<block wx:for="{{movies}}">
<view class="list">
<view class="pic">
<image src="{{item.image}}"></image>
</view>
<view class="movie">
<view class="name">{{item.name}}</view>
<view>{{item.type}}</view>
<view>{{item.director}}</view>
<view>{{item.actor}}</view>
<view>{{tiem.showTime}}</view>
</view>
<view class="btn">
<button>观看</button>
</view>
</view>
<view class="hr"></view>
</block>
js
Page({
data: {
indicatorDots: true,
autoplay: true,
interval: 3000,
imgUrls: [
"/images/1.jpg",
"/images/1.jpg"
],
movies: [{
image: "/images/1.jpg",
name: "流浪地球",
type: "类型:科幻/动作片",
director: "导演:郭帆",
actor: "主演:屈楚萧 李光杰",
showTime: "上映:2019年"
}, {
image: "/images/1.jpg",
name: "复仇者联盟4",
type: "类型:悬疑/科幻片",
director: "导演:安东尼罗素",
actor: "主演:小罗特唐尼 克里斯埃文斯",
showTime: "上映:2019年"
}, {
image: "/images/1.jpg",
name: "波西米亚狂想曲",
type: "类型:爱情/喜剧片",
director: "导演:布莱恩辛格",
actor: "主演:拉米马克雷 露西宝通",
showTime: "上映:2019年"
}]
}
})
css
/* 导航样式 */
.title {
display: flex;
flex-direction: row;
}
/* 导航选中 */
.select {
font-size: 30rpx;
width: 50%;
color:green;
text-align: center;
height: 100rpx;
line-height: 100rpx;
border-bottom: 2px solid green;
}
/* 导航未选中 */
.default {
width: 40%;
font-size: 30rpx;
text-align: center;
height: 100rpx;
line-height: 100rpx;
}
/* 轮播图样式 */
swiper {
height: 280rpx;
}
.haibao image {
width: 100%;
height: 280rpx;
}
/* 列表内部样式 */
.list {
display: flex;
flex-direction: row;
}
/* 图片样式 */
.pic image {
width: 180rpx;
height: 200rpx;
padding: 10rpx;
}
/* 电影信息样式 */
.movie {
font-size: 24rpx;
padding-top: 20rpx;
line-height: 40rpx;
color: #000000;
}
/* 电影名称样式 */
.name {
font-size: 26rpx;
padding-top: 20rpx;
line-height: 40rpx;
color: #000000;
}
/* 按钮位置 */
.btn {
position: absolute;
right: 30rpx;
margin-top: 140rpx;
}
/* 按钮样式 */
.btn button {
width: 140rpx;
height: 50rpx;
font-size: 20rpx;
color: green;
border: 1px solid green;
}
/* 分割线样式 */
.hr {
height: 1px;
width: 100%;
background-color: #000000;
opacity: 0.5;
}

页面布局思路:首先设计页面上部的标题,利用<swiper>组件实现图片的切换效果;然后在轮播图下方放置容器,设置为flex布局,主轴在水平方向上从左向右,使得电影图片、影片介绍信息和"观看"按钮可以在水平方向上排列,再分别
设置内部的电影图片、电影信息以及按钮的样式;最后通过列表渲染实现3个电影的显示。
二、转盘式
对于转盘式中的内容,用户可以通过左右滑动预览每个元素,示例如图所示。

html
<view class="bg">
<view class="movie">
<!-- 电影图片 -->
<image src="/images/1.jpg" style="width:300rpx;"></image>
</view>
<view class="outer">
<!-- 电影标题 -->
<view class="name">流浪地图</view>
<view class="item">中国 | 2019</view>
<view class="item">科幻 / 动作片</view>
<view class="item">郭帆</view>
<view class="item">屈楚萧 李光杰</view>
</view>
</view>
<view class="detail">
<!-- 电影详情 -->
《流浪地球》根据刘慈欣同名小说改编,故事设定在2075年,讲述了太阳即将毁灭,已经不适合人类生存,而面对绝境,人类将开启"流浪地球"计划,试图带着地球一起逃离太阳系,寻找人类新家园的故事。
</view>
<!-- 电影海报 -->
<view class="zhinan">电影海报</view>
<scroll-view scroll-x="true">
<view class="haibaoitem">
<image src="/images/1.jpg" style="height:180rpx;width: 250rpx;"></image>
</view>
<view class="haibaoitem">
<image src="/images/1.jpg" style="height:180rpx;width: 250rpx;"></image>
</view>
<view class="haibaoitem">
<image src="/images/1.jpg" style="height:180rpx;width: 250rpx;"></image>
</view>
</scroll-view>
css
/* 背景颜色 */
.bg{
width: 100%;
background-color: #36648b;
display: flex;
}
/* 头部布局 */
.movie {
display: flex;
flex-direction: row;
padding: 20rpx;
}
.pic image {
width: 200rpx;
height: 300rpx;
}
/* 电影信息样式 */
.outer {
margin: 10rpx 20rpx;
}
.name {
color: #ffffff;
margin-top: 60rpx;
}
.item {
font-size: 24rpx;
color: #ffffff;
line-height: 70rpx;
}
/* 电影简介样式 */
.detail {
font-size: 26rpx;
line-height: 50rpx;
margin: 20rpx;
text-indent: 1em;
}
/* 分割线样式 */
.hr {
height: 20rpx;
width: 100%;
background-color: #cccccc;
opacity: 0.2;
}
.zhinan {
font-size: 40rpx;
padding: 16rpx;
}
scroll-view {
height: 350rpx;
width: 100%;
white-space: nowrap;
}
/* 电影海报样式 */
.haibaoitem {
padding: 10rpx;
display: inline-block;
}

本例中的电影海报部分包含多幅图片,<scroll-view>组件设置属性scroll-x="true"实现水平方向的滑动区域;<image>组件通过父组件<view>设置属性display取值inline-block,把默认是块级元素的<view>组件修改成内联块级元素,最终电影海报图片能够实现左右滑动的效果。
三、多面板
在微信小程序的界面中,多面板常用于信息的分类,示例如图所示。

html
<!-- 分割线 -->
<view class="hr"></view>
<!-- 输入框 -->
<input placeholder="请输入商品名称"/>
<view class="hr"></view>
<view class="content">
<view class="left">
<!-- 左侧部分 -->
<scroll-view scroll-y="true">
<block wx:for="{{list}}">
<view>{{item}}</view>
</block>
</scroll-view>
</view>
<view class="right">
<!-- 右侧部分 -->
<view class="order">
<!-- 分类部分 -->
<view>热门推荐</view>
<view>胜国热搜</view>
<view>专场推荐</view>
</view>
</view>
</view>
js
Page({
data: {
list: ["手机数码", "男装推荐", "女装推荐", "优选水果", "家用电器", "户外运动", "电脑办公", "体育用品", "美妆护肤"]
}
})
css
/* 分割线样式 */
.hr {
border: 1px solid #EEE9E9;
width: 100%;
opacity: 0.6;
}
/* 输入框样式 */
input {
margin: 15rpx 30rpx;
border: 1px solid #cccccc;
border-radius: 50rpx;
text-align: center;
font-size: 32rpx;
}
/* 布局样式 */
.content {
display: flex;
flex-direction: row;
}
/* 左边样式 */
.left {
width: 25%;
font-size: 30rpx;
}
scroll-view {
height: 90%;
}
/* 左边元素样式 */
.left view {
text-align: center;
height: 100rpx;
line-height: 100rpx;
}
/* 右边样式 */
.right {
width: 75%;
}
/* 分类样式 */
.order {
display: flex;
flex-direction: row;
text-align: center;
padding: 20rpx;
}
.order view {
width: 33%;
font-size: 32rpx;
}

页面布局思路:页面上部放置<iput>组件,为其设置相关属性完成搜索框的设计;下方分别为左右两个部分,放置<view>容器,设置为flex布局,主轴在水平方向上从左向右,左边部分宽度设置为25%,利用<scroll-view>组件及列表渲染完成左边的布局,右边部分宽度设置为75%,内部放置3个<viw>容器,宽度均设置为33%;最后完成样式的设置。
四、标签式
在微信小程序的界面中,通常在搜索框下方会有相关的标签,标签示例如图所示。

html
<!-- 搜索框 -->
<view class="search">
<view class="searchBg">
<!-- 搜索图标 -->
<image src="/images/1.png" style="width:50rpx;height:50rpx"></image>
<input placeholder="搜索宝贝"/>
</view>
<!-- 取消按钮 -->
<view class="btn">取消</view>
</view>
<!-- 分割线 -->
<view class="hr"></view>
<view class="title">
<view class="left">热门搜索</view>
<view class="right">换一批</view>
</view>
<!-- 标签内容 -->
<view class="tag">
<block wx:for="{{label1}}">
<view>{{item}}</view>
</block>
</view>
<!-- 标题内容 -->
<view>
<view class="title">
<view class="left">历史搜索</view>
</view>
</view>
<!-- 标签内容 -->
<view class="tag">
<block wx:for="{{label2}}">
<view>{{item}}</view>
</block>
</view>
js
Page({
data: {
label1: ["手机", "女鞋", "果冻", "手套", "连衣裙", "手表", "高清电脑屏幕", "篮球服"],
label2: ["衣柜", "电饭煲", "洗衣机", "家具", "连衣裙", "小米", "华为荣耀", "咖啡"]
}
})
css
/* 搜索框样式 */
.search {
display: flex;
flex-direction: row;
padding: 10rpx;
}
/* 搜索框背景样式 */
.searchBg {
background-color: #e8e8ed;
width: 80%;
display: flex;
flex-direction: row;
height: 60rpx;
}
/* 搜索图标样式 */
.searchBg image {
margin: 10rpx;
}
/* 输入框样式 */
.searchBg input {
height: 60rpx;
font-size: 30rpx;
}
/* 取消按钮样式 */
.btn {
font-size: 26rpx;
font-weight: bold;
line-height: 60rpx;
margin-left: 24rpx;
border: 1px solid #cccccc;
width: 100rpx;
text-align: center;
background-color: #e8e8ed;
border-radius: 6rpx;
}
/* 分割线样式 */
.hr {
border: 1px solid #eee9e9;
opacity: 0.6;
}
/* 标题样式 */
.title {
display: flex;
flex-direction: row;
padding: 20rpx;
}
/* 热门搜索样式 */
.left {
width: 80%;
font-size: 30rpx;
}
/* 换一批样式 */
.right {
width: 20%;
font-size: 25rpx;
color: #ec3131;
text-align: right;
}
/* 标签布局样式 */
.tag {
padding-left: 20rpx;
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
/* 标签样式 */
.tag view {
background-color: #e8e8ed;
padding-left: 24rpx;
padding-right: 24rpx;
height: 50rpx;
line-height: 50rpx;
border-radius: 10rpx;
text-align: center;
font-size: 26rpx;
margin-right: 20rpx;
margin-bottom: 20rpx;
}

页面布局思路:页面的上部放置<view>容器,设置为lex布局主轴在水平方向上从左向右,左边放置<viw>容器,用于增加背景色以及设置布局样式,将搜索图标、<iput>组件以及"取消"按钮放置其中;搜索框下方的"热门搜索"和"换一批"也采用flex布局方式,标题下方的标签每个元素水平向右排列并且换行,因此在外面的<view>设置为1x布局,主轴在水平方向上从左向右,并且设置允许换行显示,再利用列表渲染完成数据的显示,最终根据不同元素之间的位置关系,编写标签内部的样式代码。