微信小程序打造本地宝(1)—— 主页面

简介: 微信小程序打造本地宝(1)—— 主页面

微信小程序基础:思维导图



实现:


效果图


我们将模块分解,实际要实现轮播图、首页导航分区、模块间的小白条、首页入口分区,与底部tab导航栏



1. 添加轮播图


用列表渲染 wx:for 更高效,


<!-- 首页轮播图分区 -->
<view class='slider'>
    <swiper indicator-dots="true" autoplay="{{ true }}" interval="2500" duration="400" circular>
        <swiper-item wx:for="{{ sliderList }}" wx:key="id" >
            <image src="{{ item.image }}" width="375" height="150"  mode="aspectFill" lazy-load />
        </swiper-item>
    </swiper>
</view>


2. 首页导航分区


<!-- 首页导航分区 -->
<view class='index-nav bgw'>
    <navigator wx:for="{{ navList }}" wx:key="id" class='nav-item bdr' url='/pages/shopList/shopList?cat={{ item.id }}&title={{ item.name }}'>
        <image src='{{ item.icon }}' lazy-load></image>
        <text>{{ item.name }}</text>
    </navigator>
</view>


3. 模块间小白条


以为此模块用到的地方比较多,所以我们可以封装到app.wxss里作为共有样式使用


wxml里


<view class='divider'></view>


wxss里


/* 功能封装2:专门用于做间隔的类,设定高度,填充底色 */
.divider {
    height: 20rpx;
    background-color: #f1f1f1;
    box-shadow: 0 5rpx 5rpx rgba(0, 0, 0, 0.1) inset;
}


4. 首页入口分区


<!-- 首页入口分区 -->
<view class='index-enter bgw'>
    <navigator class='enter-item'>
        <image src='/assets/images/link-01.png'></image>
    </navigator>
    <navigator class='enter-item'>
        <image src='/assets/images/link-02.png'></image>
    </navigator>
</view>


5. tabBar


这个要到 app.json 里去改代码


在{ }里添加 “tabBar”及其属性


"tabBar": {
    "color": "#999",
    "selectedColor": "#333",
    "borderStyle": "black",
    "position": "bottom",
    "list": [
      {
        "pagePath": "pages/index/index",
        "text": "首页",
        "iconPath": "assets/tabs/home.png",
        "selectedIconPath": "assets/tabs/home-active.png"
      },
      {
        "pagePath": "pages/message/message",
        "text": "消息",
        "iconPath": "assets/tabs/message.png",
        "selectedIconPath": "assets/tabs/message-active.png"
      },
      {
        "pagePath": "pages/profile/profile",
        "text": "个人中心",
        "iconPath": "assets/tabs/profile.png",
        "selectedIconPath": "assets/tabs/profile-active.png"
      },
      {
        "pagePath": "pages/contact/contact",
        "text": "大杂烩",
        "iconPath": "assets/tabs/contact.png",
        "selectedIconPath": "assets/tabs/contact-active.png"
      }
    ]
  },


源代码


index.js


上面的导航栏均是用的小程序接口接收的后台json数据,再用列表渲染 wx:for 循环输出的


index.wxss


/* !!小程序的图片记得设置宽高 */
.slider, 
.slider image ,
.slider swiper{
    width: 100%;
    height: 390rpx;
}
.index-nav {
    /* 1.5. 给当前父元素设置成伸缩盒模式 */
    display: flex;
    /* 1.6. 设置子元素换行能排列 */
    flex-wrap: wrap;
}
.index-nav .nav-item {
    width: 33.33333%;
    height: 200rpx;
    /* 1.1. 给当前父元素设置成伸缩盒模式 */
    display: flex;
    /* 1.2. 设置垂直排列 */
    flex-direction: column;
    /* 1.3.设置主轴居中 */
    justify-content: center;
    /* 1.4.设置交叉轴居中 */
    align-items: center;
    /* 1.7微信小程序的字号大小官方推荐使用 px */
    font-size: 14px;
    /* 2.0.底部边框,直接通过border-bottom */
    border-bottom: 1rpx solid #ddd;
}
.index-nav .nav-item:nth-child(3n)::after {
    /* 2.4每隔第三个元素去除边框 */
    width: 0;
}
/* !!小程序的图片记得设置宽高 */
.index-nav image {
    width: 80rpx;
    height: 80rpx;
    margin-bottom: 10rpx;
}
/* -------------
 * 模块3:首页入口分区 
 * -------------
*/
.index-enter {
    display: flex;
    padding: 20rpx 25rpx;
}
.index-enter .enter-item {
    width: 50%;
    display: flex;
    justify-content: center;
}
.index-enter image {
    width: 320rpx;
    height: 178rpx;
}


index.wxml


<!-- 首页轮播图分区 -->
<view class='slider'>
    <swiper indicator-dots="true" autoplay="{{ true }}" interval="2500" duration="400" circular>
        <swiper-item wx:for="{{ sliderList }}" wx:key="id" >
            <image src="{{ item.image }}" width="375" height="150"  mode="aspectFill" lazy-load />
        </swiper-item>
    </swiper>
</view>
<!-- 首页导航分区 -->
<view class='index-nav bgw'>
    <navigator wx:for="{{ navList }}" wx:key="id" class='nav-item bdr' url='/pages/shopList/shopList?cat={{ item.id }}&title={{ item.name }}'>
        <image src='{{ item.icon }}' lazy-load></image>
        <text>{{ item.name }}</text>
    </navigator>
</view>
<view class='divider'></view>
<!-- 首页入口分区 -->
<view class='index-enter bgw'>
    <navigator class='enter-item'>
        <image src='/assets/images/link-01.png'></image>
    </navigator>
    <navigator class='enter-item'>
        <image src='/assets/images/link-02.png'></image>
    </navigator>
</view>
相关文章
|
5月前
|
JSON 小程序 JavaScript
微信小程序页面事件,下拉刷新事件和上拉触底事件
这篇文章介绍了微信小程序中如何实现下拉刷新和上拉触底事件,包括开启下拉刷新、配置下拉刷新样式、监听下拉刷新事件,以及监听上拉触底事件和配置上拉触底的距离。
|
5月前
|
小程序 JavaScript API
微信小程序开发学习之页面导航(声明式导航和编程式导航)
这篇文章介绍了微信小程序中页面导航的两种方式:声明式导航和编程式导航,包括如何导航到tabBar页面、非tabBar页面、后退导航,以及如何在导航过程中传递参数和获取传递的参数。
微信小程序开发学习之页面导航(声明式导航和编程式导航)
|
5月前
|
JSON 小程序 前端开发
微信小程序的目录结构及页面结构的说明
本文详细介绍了微信小程序的目录结构、页面组成部分以及项目的全局配置文件,阐述了小程序的宿主环境和运行机制,包括小程序启动和页面渲染的过程。
微信小程序的目录结构及页面结构的说明
|
5月前
|
小程序 前端开发 生物认证
微信小程序如何将一个按钮放到页面的最底下?
微信小程序如何将一个按钮放到页面的最底下?
664 5
|
6月前
|
小程序
微信小程序多种跳转页面方式
微信小程序多种跳转页面方式
|
6月前
|
小程序 开发者
万能的微信小程序个人主页:商城系统个人主页、外卖系统个人主页、购票系统个人主页等等【全部源代码分享+页面效果展示+直接复制粘贴编译即可】
这篇文章分享了四个不同应用场景下的微信小程序个人主页的源代码和页面效果展示,包括商城系统、外卖系统、医疗挂号和电影购票系统的个人主页。提供了完整的页面布局和样式代码,允许开发者直接复制粘贴并根据自己的项目需求进行简单的改造使用。
万能的微信小程序个人主页:商城系统个人主页、外卖系统个人主页、购票系统个人主页等等【全部源代码分享+页面效果展示+直接复制粘贴编译即可】
|
7月前
|
小程序 安全 搜索推荐
【微信小程序开发实战项目】——个人中心页面的制作
本文介绍了如何设计和实现一个网上花店的微信小程序,包括个人中心、我的订单和我的地址等功能模块。个人中心让用户能够查看订单历史、管理地址和与客服互动。代码示例展示了`own.wxml`、`own.wxss`和`own.js`文件,用于构建个人中心界面,包括用户信息、订单链接、收藏、地址、客服和版本信息。我的订单部分展示了订单详情,包括商品图片、名称、销量、价格和订单状态,用户可以查看和管理订单。我的地址功能允许用户输入和编辑收货信息,包括联系人、性别、电话、城市和详细地址。每个功能模块都附有相应的WXML和WXSS代码,以及简洁的样式设计。
389 0
【微信小程序开发实战项目】——个人中心页面的制作
|
7月前
|
前端开发 小程序
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
454 0
|
7月前
|
JSON 小程序 JavaScript
【微信小程序-原生开发】实用教程13 - 新用户注册审核(含页面的下拉刷新)
【微信小程序-原生开发】实用教程13 - 新用户注册审核(含页面的下拉刷新)
86 0
|
7月前
|
小程序 API
【微信小程序-原生开发】实用教程07 - Grid 宫格导航,详情页,侧边导航(含自定义页面顶部导航文字)
【微信小程序-原生开发】实用教程07 - Grid 宫格导航,详情页,侧边导航(含自定义页面顶部导航文字)
137 0