我写小程序像菜虚鲲——3、附: 实战部分内容(中)

简介: 实战部分内容

④ Banner轮播图


小程序提供了一个滑块视图容器swiper组件,利用它可以实现简单的轮播图。详细官方文档:


developers.weixin.qq.com/miniprogram…


页面结构如下


<!-- Banner -->
  <view class="banner-wrapper">
    <!-- 轮播图部分 -->
    <swiper class="banner-swiper">
      <block wx:for="{{yx.banner_urls}}">
        <swiper-item>
          <image class="banner_image" src="{{item}}" mode="widthFix"></image>
        </swiper-item>
      </block>
    </swiper>
    <!-- 当前页数 -->
    <view class="pagination">1/5</view>
  </view>


样式调整顺序如下:


  • 最外层view宽度100%;


  • 轮播图swiper元素高度280rpx;


  • 接口返回的轮播图是750px*448px的, 不做处理直接显示会显示不全,可通过裁剪或设置偏移来解决这个问题,每日优鲜采用的 向上负偏移来解决,即向上偏移:280rpx-448rpx=-168rpx


  • 页数使用绝对定位,距离底部15rpx,右侧20rpx,背景rgba(0, 0, 0, 0.3),圆角24rpx,字体白色#FFFFFF,大小24rpx,内边距8rpx 15rpx。


对应样式文件如下


.banner-wrapper {
  width: 100%;
  position: relative;
}
.banner-swiper {
  height: 280rpx;
}
.banner-item {
  overflow: hidden;
  display: block
}
.banner_image {
  width: 100%;
  margin-top: -168rpx;
}
.pagination {
  position: absolute;
  bottom: 15rpx;
  right: 20rpx;
  background: rgba(0, 0, 0, 0.3);
  line-height: 1;
  padding: 8rpx 15rpx;
  border-radius: 24rpx;
  color: #fff;
  font-size: 24rpx;
}


运行结果如下



不过现在只能手动滑切换图片,接着添加定时自动滑动和页数变化,swiper提供下面三个属性:


  • autoplay:是否自动切换。


  • interval:自动切换的时间间隔。


  • duration:滑动动画时长。


添加上述属性到代码中:


<swiper class="banner-swiper" autoplay="true" interval="5000" duration="5000">


编译后可以看到图片已经能自动滚动了,接着绑定下页面切换的事件,当页面改变时切换右下角那个页数的显示,添加下述代码:


<!-- index.js -->
current: 1,
onPageChange: function(e) {
    this.setData({
      current: e.detail.current + 1
    })
},
<!-- index.wxml -->
<swiper ..bindchange="onPageChange">
<view class="pagination">{{current}}/5</view>


运行结果如下



⑤ 新人福利


页面结构如下


<!-- 新人福利 -->
<view class="welfare">
    <view class="welfare-container">
      <!-- 顶部图片 -->
      <image class="welfare-top-image" src="{{yx.welfare_top_url}}"></image>
      <!-- 商品部分 -->
      <view class="welfare-goods-container">
        <block wx:for="{{yx.welfare_goods}}">
          <view class="goods-wrapper">
            <image class="goods-image" src="{{item.icon}}"></image>
            <image class="goods-price" src="{{item.price}}"></image>
          </view>
        </block>
      </view>
      <!-- 底部图片 -->
      <image class="welfare-bottom-image" src="{{yx.welfare_bottom_url}}"></image>
    </view>
</view>


先把商品部分的标签注释掉,样式调整顺序如下


  • 最外层设置flex布局,主轴从上往下,item居中,背景白色,上下内间距24rpx;


  • 外层设置flex布局,主轴从上往下,item居中,宽690rpx,高434rpx,圆角12rpx,背景颜色#d4545a;


  • 顶部图片100%,高度110rpx,左上和右上圆角12rpx;


  • 商品部分最外层设置flex布局,主轴从上往下,item居中;


  • 商品部分外层宽度660rpx,高度212rpx,圆角12rpx,上下内间距12rpx,左右内间距20rpx;


  • 底部图片宽660rpx,高96rpx,圆角12rpx;


对应样式文件如下


.welfare {
  display: flex;
  flex-direction: column;
  align-items: center;
  background: #fff;
  padding: 24rpx 0;
}
.welfare-container {
  display: flex;
  flex-direction:column;
  align-items:center;
  width: 690rpx;
  height: 434rpx;
  border-radius: 12rpx;
  background: #d4545a;
}
.welfare-top-image {
  width: 100%;
  height: 110rpx;
  border-radius: 12rpx 12rpx 0 0;
}
.welfare-goods {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.welfare-goods-container {
  width: 660rpx;
  height: 212rpx;
  box-sizing: border-box;
  border-radius: 12rpx;
  background: #fff;
  padding: 12rpx 20rpx;
}
.welfare-bottom-image{
  width: 660rpx;
  height: 96rpx;
  border-radius: 12rpx;
}


运行结果如下



接着去掉商品部分的标签注释,调整样式


  • 商品外层设置flex布局,主轴从上往下,item居中,宽度134rpx,高度100%;


  • 商品图片宽高130rpx;


  • 商品价格宽100%,高56rpx;


.goods-wrapper {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 134rpx;
  height: 100%;
}
.goods-image {
  width: 130rpx;
  height: 130rpx;
}
.goods-price {
  width: 100%;
  height: 56rpx;
}



商品直接穿出来了,修改下商品外层布局flex布局,从左网友,两端占满:


.welfare-goods-container {
  width: 660rpx;
  height: 212rpx;
  box-sizing: border-box;
  border-radius: 12rpx;
  background: #fff;
  padding: 12rpx 20rpx;
  display: flex;
  flex-direction: row;
  justify-content: space-between;
}


运行结果如下



相关文章
|
2月前
|
JavaScript 小程序 开发者
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
384 0
|
5月前
|
小程序 安全 搜索推荐
【微信小程序开发实战项目】——个人中心页面的制作
本文介绍了如何设计和实现一个网上花店的微信小程序,包括个人中心、我的订单和我的地址等功能模块。个人中心让用户能够查看订单历史、管理地址和与客服互动。代码示例展示了`own.wxml`、`own.wxss`和`own.js`文件,用于构建个人中心界面,包括用户信息、订单链接、收藏、地址、客服和版本信息。我的订单部分展示了订单详情,包括商品图片、名称、销量、价格和订单状态,用户可以查看和管理订单。我的地址功能允许用户输入和编辑收货信息,包括联系人、性别、电话、城市和详细地址。每个功能模块都附有相应的WXML和WXSS代码,以及简洁的样式设计。
236 0
【微信小程序开发实战项目】——个人中心页面的制作
|
5月前
|
小程序 开发者
uniapp实战 —— 开发微信小程序的调试技巧
uniapp实战 —— 开发微信小程序的调试技巧
449 1
|
5月前
|
前端开发 小程序
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
418 0
|
5月前
|
小程序
【微信小程序】实战案例 -- 向订阅用户发送消息(范例:报名提醒)
【微信小程序】实战案例 -- 向订阅用户发送消息(范例:报名提醒)
280 0
|
5月前
|
小程序 前端开发
【微信小程序-原生开发】TDesign 实战模板——聊天气泡
【微信小程序-原生开发】TDesign 实战模板——聊天气泡
92 0
|
5月前
|
小程序
【微信小程序-原生开发】TDesign 实战模板——带性别图标的头像
【微信小程序-原生开发】TDesign 实战模板——带性别图标的头像
71 0
|
5月前
|
小程序 定位技术
【微信小程序-原生开发】TDesign 实战模板——个人信息编辑页
【微信小程序-原生开发】TDesign 实战模板——个人信息编辑页
48 0
|
5月前
|
JSON 小程序 JavaScript
【微信小程序-原生开发】TDesign 实战模板——账号密码登录页(含密码显示隐藏的技巧)
【微信小程序-原生开发】TDesign 实战模板——账号密码登录页(含密码显示隐藏的技巧)
140 0
|
5月前
|
小程序 定位技术
微信小程序实战——获取用户地理位置信息
微信小程序实战——获取用户地理位置信息
83 0