微信小程序云开发实战-答题积分赛小程序
界面交互篇:首页页面布局款式与逻辑交互开发
首页效果图
布局思路
5行布局,即5个块级元素,轮播图、通告栏、个人信息、功能区、版权。
实现细节
轮播图区域
实现轮播图成果,能够拆分一下,先实现图片展现成果,再实现轮播成果。须要应用图片组件image、滑块视图容器swiper。图片组件image在index.wxml中,编写布局代码:
<image src="/images/b2.jpg"></image>
保留后,在模拟器实时预览成果:
显然,这样的页面成果并不合乎咱们的预期。咱们想要的页面成果是,图片宽度要占满屏幕的。所以,我给它设置了两项:在index.wxml中,增加属性mode和class,并设置其值,编写布局代码:
<image src="/images/b2.jpg" mode='widthFix' class="banner-img"></image>
在index.wss中,增加设置宽度的款式,编写款式代码:
`.banner-img {
width: 100%;
}`
保留后,在模拟器实时预览成果:
补充阐明:对于image组件的mode=widthFix。
widthFix:缩放模式,宽度不变,高度主动变动,放弃原图宽高比不变。
块视图容器swiper
swiper只可搁置swiper-item组件。在index.wxml中,编写布局代码:
<swiper> <swiper-item> <image src="/images/b2.jpg" mode='widthFix' class="banner-img"></image> </swiper-item></swiper>
保留后,在模拟器实时预览成果:
因为只有一张图片,所以看不出来,然而你能够左右滑动试试看,就明确了。好吧,咱们多增加两个,再欠缺一下,在index.wxml中,编写布局代码:
<swiper class="screen-swiper" indicator-dots="{{true}}"> <swiper-item> <image src="/images/b2.jpg" mode='widthFix' class="banner-img"></image> </swiper-item> <swiper-item> <image src="/images/b3.jpg" mode='widthFix' class="banner-img"></image> </swiper-item> <swiper-item> <image src="/images/b4.jpg" mode='widthFix' class="banner-img"></image> </swiper-item></swiper>
保留后,在模拟器实时预览成果:
看着轮播图成果就曾经根本欠缺了。然而,想让它实现主动轮播,怎么办?再增加几个属性吧,在index.wxml中,编写布局代码:
<!-- 轮播图 start --><swiper class="screen-swiper" indicator-dots="{{true}}" autoplay="{{true}}" interval="5000" duration="500"> <swiper-item> <image src="/images/b2.jpg" mode='widthFix' class="banner-img"></image> </swiper-item> <swiper-item> <image src="/images/b3.jpg" mode='widthFix' class="banner-img"></image> </swiper-item> <swiper-item> <image src="/images/b4.jpg" mode='widthFix' class="banner-img"></image> </swiper-item></swiper><!-- 轮播图 end -->
补充阐明,对于swiper组件本次所利用到的属性:
通告栏
在index.wxml中,编写布局代码:
<!-- 通告栏 start --><view class="bg-orange light padding-sm text-sm"> <text class="icon-notice"></text> <text>欢送来到「护网专题信息安全常识竞答」,S2赛季炽热进行中~</text></view><!-- 通告栏 end -->
个人信息区域
在index.wxml中,编写布局代码:
<!-- 个人信息区域 start --><view class="container"> <view class="power padding-left-sl"> <view class="cu-avatar"> <image class="avatar" src="/images/0.png" mode="widthFix"></image> </view> <view class="power_info"> <view class="power_info_text"> <view class="power_info_text_title">张三</view> <view class="power_info_text_tip">积分:100</view> </view> <image class="power_info_more" src="/images/arrow.svg"></image> </view> </view></view><!-- 个人信息区域 end -->
在index.wss中,编写款式代码:
.container { display: flex; flex-direction: column; align-items: center; box-sizing: border-box;}.power { margin-top: 30rpx; border-radius: 5px; background-color: white; width: 93%; padding-bottom: 1rpx; position: relative; border: 2rpx solid #ddd;}.padding-left-sl { padding-left: 130rpx;}.cu-avatar { position: absolute; top: 40rpx; left: 20rpx; width: 100rpx;}.power_info { display: flex; padding: 30rpx 25rpx; align-items: center; justify-content: space-between;}.power_info_more { width: 30rpx; height: 30rpx; transform: rotate(0deg);}.power_info_less { width: 30rpx; height: 30rpx; transform: rotate(270deg);}.power_info_text { display: flex; flex-direction: column;}.power_info_text_title { font-weight: 400; font-size: 35rpx;}.power_info_text_tip { color: rgba(0, 0, 0, 0.4); font-size: 25rpx; margin-top: 10rpx;}.power_item { padding: 30rpx 25rpx; display: flex; justify-content: space-between;}.power_item_title { font-size: 30rpx;}.power_item_icon { width: 30rpx; height: 30rpx;}
保留后,在模拟器实时预览成果:
主性能按钮区域
在index.wxml中,编写布局代码:
<!-- 主性能按钮区域 start --><view class='grid col-2 padding-left-xs padding-right-xs padding-top-sm'> <view class='padding-sm'> <view class='bg-sky padding radius btn-box'> <view class="text-lg">开始答题</view> <view class='margin-top-sm text-Abc'>从题库中随机抽题</view> <view class="icon-box"> <text class="icon-writefill text-white"></text> </view> </view> </view> <view class='padding-sm'> <view class='bg-yellow padding radius btn-box'> <view class="text-lg">积分排名</view> <view class='margin-top-sm text-Abc'>积分由高到低排行</view> <view class="icon-box"> <text class="icon-upstagefill text-white"></text> </view> </view> </view></view><!-- 主性能按钮区域 end -->
在index.wss中,编写款式代码:
.line { width: 95%; margin: 0 auto; height: 2rpx; background-color: rgba(0, 0, 0, 0.1);}.icon-box { text-align: right; padding-top: 50rpx;}.icon-box text { font-size: 150rpx;}
保留后,在模拟器实时预览成果:
底部版权申明
在index.wxml中,编写布局代码:
<!-- 底部版权申明 start --><view class="environment"> 版权所有 ©木番薯科技</view><!-- 底部版权申明 end -->
在index.wss中,编写款式代码:
.environment { color: #ccc; font-size: 24rpx; margin-top: 15%; text-align: center;}
保留后,在模拟器实时预览成果:
这样,首页的动态界面就实现了。
页面跳转逻辑交互
实现页面跳转逻辑交互,有两种形式:
1、通过导航组件 navigator,增加页面链接的形式实现;
2、通过API路由wx.navigateTo,增加点击事件监听及其处理函数的形式实现;
这里,我抉择后者去进行实现。
跳转至集体核心页
增加点击事件,在index.wxml中,编写布局代码:
实现路由跳转,在index.js中,编写布局代码:
goToMy() { wx.navigateTo({ url: '../my/my' })}
跳转至答题页
增加点击事件,在index.wxml中,编写布局代码:
实现路由跳转,在index.js中,编写布局代码:
goToTest() { wx.navigateTo({ url: '../test/test' })}
跳转至积分排名页
增加点击事件,在index.wxml中,编写布局代码:
实现路由跳转,在index.js中,编写布局代码:
goToRank() { wx.navigateTo({ url: '../rank/rank' })}