上篇文章中我们介绍了项目的整体风格,本篇将完成基础页面的设计(github地址在文末)。

针对每块内容用到的比较常见的组件、方法、注意点等进行说明总结,方便自我学习

※首先固定页面content的高度,我们写一个通用的方法

//高度自适应
    wx.getSystemInfo({
      success: function (res) {//res中可获取页面的宽高等基本信息
        var clientHeight = res.windowHeight;
        var calc = clientHeight - 50;//这里减掉底部tabBar的高度,剩余的就是页面内容的高度
        that.setData({
          Height: calc
        })
      }
    });

下面我们介绍每部分中用到的一些小知识点

※首页部分

1、顶部搜索框

我们引入第三方搜索框:在josn文件中写入引用组件的路径,然后按照组件要求进行页面配置

{
  "usingComponents": {
    "SearchBar": "/components/searchBox/index"//组件的路径
  },
  "navigationBarTitleText": "FlowerHose"//页面名称
}

2、无限循环滚动的banner

采用swiper/swiper-item官方控件(说明文档:https://developers.weixin.qq.com/miniprogram/dev/component/swiper.html

设置autoplay为true即自动播放,则可预览效果。

※注意一下两种情况:

  • 一般情况我们引入图片默认采用的是平铺,充满我们所设置的空间,但有可能造成图片拉伸导致图片变形
  • 设置了图片大小,但是没有效果,或者图片不显示/显示不全等问题

针对上面两个问题,这里我们封装一个方法用于计算图片的大小

imageLoad: function (e) {//获取图片真实宽度  
    var imgwidth = e.detail.width,
      imgheight = e.detail.height,
      //宽高比  
      ratio = imgwidth / imgheight;
    //计算的高度值  
    var viewHeight = 750 / ratio;
    var imgheight = viewHeight;
    var imgheights = this.data.imgheights;
    //把每一张图片的对应的高度记录到数组里  
    imgheights[e.target.dataset.id] = imgheight;
    this.setData({
      imgheights: imgheights
    })
  },

3、中间部分的图文介绍相关内容统一采用flex布局

※注意:小程序中默认的块级元素是view,对应我们平时的div,如果写的不顺手的话,可以在基础样式中添加样式:

div{
    dispaly:block;
}

4、底部店长信息(卡片式列表)

  • 循环方法:wx:for="{{list}}"  wx:key="*this"
  • 点击方法:bintap="function"
  • 跳转方法:wx.navigateTo(这里采用带有回退按钮的跳转方式)

※点击事件传参(小程序中不能直接写成function(option)的形式,所以一般采用data-xxx的形式进行传参)

取值,赋值、跳转等操作如下示例:

//wxml
<view bindtap='toDo' data-info='exp'></view>

//js
toDo: function (e) {
   //取值
   var data = e.currentTarget.dataset.info;
   //赋值
   this.setData({
      data : data 
   })
   //跳转
   wx.navigateTo({
      url: '../card/card?id=' + data//url的路径要与app.json中的pages配置相同
   })
}

5、店长详情页

这个页面有一个常用的操作:选项卡的操作(效果见下图)

android小商城app 小商城程序_选项卡

这里我们做一个优化:添加左右滑动来切换页面的操作

  • tab卡片选用srcoll-view控件,横向滚动(适应多个选项卡超出一个屏幕的情况)
  • 下面对应的内容采用swiper/swiper-item控件来实现,swiper组件自带左右滑动的效果

代码及说明如下:

//wxml
      //swichNav:点击选项卡时切换tab
      <scroll-view scroll-x="true">//横向滚动
          <view 
          class="tab-item {{currentTab==0?'active':''}}"  //对应currentTab添加active样式
          data-current="0" 
          bindtap="swichNav">name1</view>
          <view 
          class="tab-item {{currentTab==1?'active':''}}" 
          data-current="1" 
          bindtap="swichNav">name2</view>
          <view 
          class="tab-item {{currentTab==2?'active':''}}" 
          data-current="2" 
          bindtap="swichNav">name3</view>
      </scroll-view>
      //swiper的current等于几就会展示第一个swiper-item
      //binchange:滑动改变当前swiper-item时触发
      <swiper current="{{currentTab}}" duration="300" bindchange="switchTab">
          <swiper-item>tab1的内容</swiper-item>
          <swiper-item>tab2的内容</swiper-item>
          <swiper-item>tab3的内容</swiper-item>
      </swiper>
  //js
  //滚动切换标签样式
  switchTab: function (e) {
    this.setData({
      currentTab: e.detail.current
    })
  },
  //点击标题切换当前页时改变样式
  swichNav: function (e) {
    var cur = e.target.dataset.current;
    //点击当前选项卡,不做操作
    if (this.data.currentTaB == cur) { 
        return false; 
    }else {
      this.setData({
        currentTab: cur
      })
    }
  },

※店铺信息页面

与一般的网页设计相同,这里不做过多赘述

※预约页面、订单页面(实现原理同上面的店长信息)

android小商城app 小商城程序_微信_02

android小商城app 小商城程序_android小商城app_03

其它的页面设计都是一些基础的css/html的用法,基本上没什么问题。下篇我们介绍微信获取授权、登录、获取用户信息的相关操作

此demo的github地址:https://github.com/736755244/FlowerHouse


有兴趣的朋友可以下载交流!