TDesign电商小程序模板解析01-自定义底部导航栏

这篇具有很好参考价值的文章主要介绍了TDesign电商小程序模板解析01-自定义底部导航栏。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们已经利用了两篇文章解读了一下微信小程序带的TDesign模板
TDesign小程序组件库01
TDesign小程序组件库02

入门一款前端组件库,如果挨个去看每个组件的用法未免比较枯燥,即使看懂了其实离实际开发还是比较远的。为了快速的入门,其实带着一个实际的案例去学习就比较快了。

通常小程序比较常见的场景是电商,一般是作为商家一个私域运营的工具。好在已经提供了一套电商模板,我们来逐步拆解一下。

1 电商模板安装

在我们启动了微信开发者工具后,选择不使用云服务的时候,就可以看到这套电商模板
TDesign电商小程序模板解析01-自定义底部导航栏
安装后就可以看到具体的文件的目录
TDesign电商小程序模板解析01-自定义底部导航栏

2 创建页面

学习一套模板可以阅读代码,也可以创建一个空项目复刻一下。源代码我们在复刻的时候边做边看,这样可以比较好的梳理一下他的思路。

开发小程序第一个步骤是搭建页面,我们可以按照底部导航栏先进行搭建。底部导航栏目前有四个菜单,分别是首页、分类、购物车和个人中心。

那么就先搭建这四个一级页面,选中pages,右键新建文件夹

TDesign电商小程序模板解析01-自定义底部导航栏
输入home
TDesign电商小程序模板解析01-自定义底部导航栏
然后选中home,新建Page
TDesign电商小程序模板解析01-自定义底部导航栏
输入home
TDesign电商小程序模板解析01-自定义底部导航栏
它会自动生成四个页面分别是home.wxml、home.js、home.wxss、home.json
TDesign电商小程序模板解析01-自定义底部导航栏
然后创建分类页面,分类页面是在商品页面下的二级页面,结构如下
TDesign电商小程序模板解析01-自定义底部导航栏
之后建立购物车cart、个人中心usercenter页面
TDesign电商小程序模板解析01-自定义底部导航栏
页面创建好之后,页面的路径会自动的注册到app.json里

{
    "pages": [
        "pages/home/home",
        "pages/goods/category/index",
        "pages/usercenter/index",
        "pages/cart/index"
    ],
    "usingComponents": {},
    "window": {
        "backgroundTextStyle": "light",
        "navigationBarBackgroundColor": "#f6f6f6",
        "backgroundColor": "#f6f6f6",
        "navigationBarTitleText": "TDesign",
        "navigationBarTextStyle": "black"
    },
    "sitemapLocation": "sitemap.json"
}

3 创建底部导航条

我们底部导航条作为一级页面,可以使用微信自带的tabBar组件,配置方法是直接在app.json文件里增加对应的属性。导航条可以使用图标+文字的方案,图标有两种一种是选中状态,一种是未选中状态。

"tabBar": {
    "custom": true,
    "color": "#666666",
    "selectedColor": "#FF5F15",
    "backgroundColor": "#ffffff",
    "borderStyle": "black",
    "list": [
      {
        "pagePath": "pages/home/home",
        "text": "首页"
      },
      {
        "pagePath": "pages/goods/category/index",
        "text": "分类"
      },
      {
        "pagePath": "pages/cart/index",
        "text": "购物车"
      },
      {
        "pagePath": "pages/usercenter/index",
        "text": "我的"
      }
    ]
  }

把这个配置添加到app.json发现底部菜单栏并没有出现,原因是现在我们设置了cutom为true,表示我们要自己定义菜单栏的表现形式,因此需要在根目录创建一个custom-tab-bar文件夹
TDesign电商小程序模板解析01-自定义底部导航栏

在文件夹下建立如下文件
TDesign电商小程序模板解析01-自定义底部导航栏

在index.json里输入如下配置

{
  "component": true,
  "usingComponents": {
    "t-tab-bar": "tdesign-miniprogram/tab-bar/tab-bar",
    "t-tab-bar-item": "tdesign-miniprogram/tab-bar-item/tab-bar-item",
    "t-icon": "tdesign-miniprogram/icon/icon"
  }
}

component为true表示这是一个自定义组件,下边引入了三个框架自带组件

在data.js里输入如下代码

export default [
  {
    icon: 'home',
    text: '首页',
    url: 'pages/home/home',
  },
  {
    icon: 'sort',
    text: '分类',
    url: 'pages/goods/category/index',
  },
  {
    icon: 'cart',
    text: '购物车',
    url: 'pages/cart/index',
  },
  {
    icon: 'person',
    text: '个人中心',
    url: 'pages/usercenter/index',
  },
];

这里导出了一个数组,数组里的元素是菜单的具体配置,包括图标、文字名称和路径,但这里icon并没有指名路径,是使用框架自带的图标

剩下的配置我们就不解读了,官方已经编写好了,我们只需要复用他的代码就可以

index.js

import TabMenu from './data';
Component({
  data: {
    active: 0,
    list: TabMenu,
  },

  methods: {
    onChange(event) {
      this.setData({ active: event.detail.value });
      wx.switchTab({
        url: this.data.list[event.detail.value].url.startsWith('/')
          ? this.data.list[event.detail.value].url
          : `/${this.data.list[event.detail.value].url}`,
      });
    },

    init() {
      const page = getCurrentPages().pop();
      const route = page ? page.route.split('?')[0] : '';
      const active = this.data.list.findIndex(
        (item) =>
          (item.url.startsWith('/') ? item.url.substr(1) : item.url) ===
          `${route}`,
      );
      this.setData({ active });
    },
  },
});

index.wxml

<t-tab-bar
 value="{{active}}"
 bindchange="onChange"
 split="{{false}}"
>
	<t-tab-bar-item
	 wx:for="{{list}}"
	 wx:for-item="item"
	 wx:for-index="index"
	 wx:key="index"
	>
		<view class="custom-tab-bar-wrapper">
			<t-icon prefix="wr" name="{{item.icon}}" size="48rpx" />
			<view class="text">{{ item.text }}</view>
		</view>
	</t-tab-bar-item>
</t-tab-bar>


index.wxss

.custom-tab-bar-wrapper {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.custom-tab-bar-wrapper .text {
  font-size: 20rpx;
}

实际我们自己做的时候就是把这些代码依次的复制到对应的文件里,复制过去发现图标显示不了,需要再引入一个样式文件,在根目录建一个style文件夹,创建一个iconfont的wxss文件
TDesign电商小程序模板解析01-自定义底部导航栏
样式文件的内容

@font-face {
    font-family: 'wr';
    src: url('https://cdn3.codesign.qq.com/icons/gqxWyZ1yMJZmVXk/Yyg5Zp2LG8292lK/iconfont.woff?t=cfc62dd36011e60805f5c3ad1a20b642')
      format('woff2');
  }
  
  .wr {
    font-family: 'wr' !important;
    font-size: 32rpx;
    font-style: normal;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
  }
  .wr-deliver:before {
    content: '\e033';
  }
  .wr-indent_close:before {
    content: '\e041';
  }
  .wr-edit:before {
    content: '\e002';
  }
  .wr-succeed:before {
    content: '\e00d';
  }
  .wr-goods_return:before {
    content: '\e03c';
  }
  .wr-wallet:before {
    content: '\e051';
  }
  .wr-package:before {
    content: '\e047';
  }
  .wr-comment:before {
    content: '\e037';
  }
  .wr-exchang:before {
    content: '\e03e';
  }
  .wr-credit_card:before {
    content: '\e035';
  }
  .wr-service:before {
    content: '\e04a';
  }
  .wr-shop_bag:before {
    content: '\e02a';
  }
  .wr-goods_refund:before {
    content: '\e03d';
  }
  .wr-check:before {
    content: '\e053';
  }
  .wr-wechat:before {
    content: '\e065';
  }
  .wr-cartAdd:before {
    content: '\e05d';
  }
  .wr-home:before {
    content: '\e020';
  }
  .wr-person:before {
    content: '\e02c';
  }
  .wr-cart:before {
    content: '\e023';
  }
  .wr-location:before {
    content: '\e016';
  }
  .wr-arrow_forward:before {
    content: '\e012';
  }
  .wr-close:before {
    content: '\e021';
  }
  .wr-search:before {
    content: '\e011';
  }
  .wr-clear_filled:before {
    content: '\e027';
  }
  .wr-arrow_drop_up:before {
    content: '\e071';
  }
  .wr-arrow_drop_down:before {
    content: '\e070';
  }
  .wr-filter:before {
    content: '\e038';
  }
  .wr-copy:before {
    content: '\e001';
  }
  .wr-arrow_back:before {
    content: '\e003';
  }
  .wr-add_circle:before {
    content: '\e004';
  }
  .wr-Download:before {
    content: '\e006';
  }
  .wr-map:before {
    content: '\e007';
  }
  .wr-store:before {
    content: '\e008';
  }
  .wr-movie:before {
    content: '\e00a';
  }
  .wr-done:before {
    content: '\e00b';
  }
  .wr-minus:before {
    content: '\e00c';
  }
  .wr-list:before {
    content: '\e00e';
  }
  .wr-expand_less:before {
    content: '\e00f';
  }
  .wr-person_add:before {
    content: '\e010';
  }
  .wr-Photo:before {
    content: '\e013';
  }
  .wr-preview:before {
    content: '\e014';
  }
  .wr-remind:before {
    content: '\e015';
  }
  
  .wr-info:before {
    content: '\e017';
  }
  .wr-expand_less_s:before {
    content: '\e018';
  }
  .wr-arrow_forward_s:before {
    content: '\e019';
  }
  .wr-expand_more_s:before {
    content: '\e01a';
  }
  .wr-share:before {
    content: '\e01d';
  }
  .wr-notify:before {
    content: '\e01e';
  }
  .wr-add:before {
    content: '\e01f';
  }
  .wr-Home:before {
    content: '\e020';
  }
  .wr-delete:before {
    content: '\e022';
  }
  .wr-error:before {
    content: '\e025';
  }
  .wr-sort:before {
    content: '\e028';
  }
  .wr-sort_filled:before {
    content: '\e029';
  }
  .wr-shop_bag_filled:before {
    content: '\e02b';
  }
  
  .wr-person_filled:before {
    content: '\e02d';
  }
  .wr-cart_filled:before {
    content: '\e02e';
  }
  .wr-home_filled:before {
    content: '\e02f';
  }
  .wr-add_outline:before {
    content: '\e030';
  }
  
  .wr-compass:before {
    content: '\e034';
  }
  .wr-goods_exchange:before {
    content: '\e03a';
  }
  .wr-group_buy:before {
    content: '\e03b';
  }
  .wr-group:before {
    content: '\e03f';
  }
  .wr-indent_goods:before {
    content: '\e040';
  }
  .wr-help:before {
    content: '\e042';
  }
  .wr-group_takeout:before {
    content: '\e043';
  }
  .wr-label:before {
    content: '\e044';
  }
  .wr-indent_wating:before {
    content: '\e045';
  }
  .wr-member:before {
    content: '\e046';
  }
  
  .wr-scanning:before {
    content: '\e04b';
  }
  .wr-tv:before {
    content: '\e04d';
  }
  .wr-to_top:before {
    content: '\e04f';
  }
  .wr-visibility_off:before {
    content: '\e050';
  }
  .wr-error-1:before {
    content: '\e052';
  }
  
  .wr-arrow_right:before {
    content: '\e054';
  }
  .wr-arrow_left:before {
    content: '\e056';
  }
  .wr-picture_filled:before {
    content: '\e057';
  }
  .wr-navigation:before {
    content: '\e058';
  }
  .wr-telephone:before {
    content: '\e059';
  }
  .wr-indent_time:before {
    content: '\e05c';
  }
  .wr-cart_add:before {
    content: '\e05d';
  }
  .wr-classify:before {
    content: '\e060';
  }
  .wr-place:before {
    content: '\e063';
  }
  .wr-wechat_pay:before {
    content: '\e064';
  }
  .wr-security:before {
    content: '\e066';
  }
  .wr-alarm:before {
    content: '\e067';
  }
  .wr-person-1:before {
    content: '\e068';
  }
  .wr-open_in_new:before {
    content: '\e069';
  }
  .wr-uncheck:before {
    content: '\e06b';
  }
  .wr-thumb_up:before {
    content: '\e06c';
  }
  .wr-thumb_up_filled:before {
    content: '\e06d';
  }
  .wr-star:before {
    content: '\e06e';
  }
  .wr-star_filled:before {
    content: '\e06f';
  }
  .wr-cards:before {
    content: '\e072';
  }
  .wr-picture_error_filled:before {
    content: '\e076';
  }
  .wr-discount:before {
    content: '\e077';
  }
  

然后需要在app.wxss里引入

@import 'style/iconfont.wxss';

一切配置好之后我们就把底部导航栏制作好了

总结

我们本篇带着大家搭建了一下TDesign电商模板的底部导航条功能,模板是使用自定义组件进行了搭建,还引入了自定义样式文件,稍稍有一点复杂,可以照着教程自己实验一下。文章来源地址https://www.toymoban.com/news/detail-495274.html

到了这里,关于TDesign电商小程序模板解析01-自定义底部导航栏的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序、uniapp自定义底部导航栏(附源码)

    需求分析 目前开发一套“同城跑腿平台”小程序,面向用户和骑手,需要两个不同的底部导航,uniapp原生导航不满足要求。所以需要自定义导航栏。 随着自定义导航卡完成,切换选项卡页面总是闪烁,在网上也没有搜到完整的解决方法,总不能完美解决。现在我有一个方法

    2024年02月04日
    浏览(64)
  • 微信小程序自定义导航栏机型适配--底部Tabbar--view高度--底部按钮适配

    自定义微信小程序头部导航栏 自定义微信小程序头部导航栏,有几种方式 方式一 定义此方法后,头部的导航栏会去掉,导航栏下的元素会直接向上移动到原导航栏的位置,可以再app.json配置成全局沉浸式导航栏,以及在单页面配置沉浸式导航栏。 方式二 使用组件 这里使用

    2024年02月02日
    浏览(55)
  • 小程序自定义底部导航 custom-tab-bar

    前言: 在开发小程序过程中,如果你需要根据不同用户角色显示不同底部导航;或者导航样式需要个性化设计。此时就需要用到自定义底部导航 custom-tab-bar。 1、根目录下创建custom-tab-bar目录 2、在app.json文件中配置导航信息 3、custom-tab-bar/index.wxml 文件内容 4、custom-tab-bar/ind

    2024年02月11日
    浏览(39)
  • uniApp开发小程序自定义tabBar底部导航栏+tabBar中间凸起自定义样式实现

            先看效果是否可以满足你们,如果可以满足你只要一步一步照着做绝对没有错。         本人技术不佳,研究了一整天,全网的大佬们写的博客看的晕头转向,避免大伙再走弯路,跟着我以下步骤一点一点来绝对可以实现。         最终效果图: (如果你

    2024年02月04日
    浏览(51)
  • 微信小程序第一节 —— 自定义顶部、底部导航栏以及获取胶囊体位置信息。

    dai ga hou啊!我是 😘😘😘 是江迪呀 。我们在进行微信小程序开发时,常常需要自定义一些东西,比如 自定义顶部导航 、 自定义底部导航 等等。那么知道这些自定义内容的具体位置、以及如何适配不同的机型就变得尤为重要。下面让我以在iPhone机型,来给大家介绍下 微信

    2024年02月02日
    浏览(58)
  • 小程序自定义底部导航 custom-tab-bar完整实现代码附效果图

    根据用户身份,动态设置底部的导航图标  实现步骤: 第一步 ,先配置:app.json里面的 tabBar 的 custom 设置为 true,如图:这里需要注意的是,自定义 tabBar 中包含的页面,在这里的 list 页面路径也必须得有,其它字段可以不设置 相关代码:   第二步 ,创建组件:在项目跟目

    2024年02月15日
    浏览(53)
  • uniapp隐藏底部导航栏(非自定义底部导航栏)

    uniapp官方网址:uni设置TabBar

    2024年02月12日
    浏览(39)
  • 【uni-app】【01】底部导航栏与页面切换

    1.(配置文件在哪)uni-app 路由控制是在 pages.json 文件中的。 2.(基本配置项有哪些)初学的时候主要有三个配置项,① pages ② globalStyle ③ tabbar [!TOC] 接下来主要是对这三个配置项做一个简单介绍。 负责页面管理。不需要自己写的,你在项目的 pages 文件夹下创建页面会自动生成配

    2023年04月27日
    浏览(59)
  • 微信小程序在TS模板下引入TDesign组件

    TDesign 是腾讯官方出品的一款微信小程序组件库。本文介绍如何在新建ts空白模板下引入TDesign库 新建一个空白项目,这里可以选择TS-基础模板 新建项目目录结构如图所示: 注意这里其实小程序的文件都存放在miniprogram文件夹下,因此我们后续安装npm包时需要进入miniprogram文件

    2024年02月03日
    浏览(57)
  • uni-app uView自定义底部导航栏

    因项目需要自定义底部导航栏,我把它写在了组件里,基于uView2框架写的(vue2);   在components下创建tabbar.vue文件,代码如下:  app.vue (有没有大佬知道为什么这个样式加载app.vue里才生效)  pages.json配置 页面使用: ( mine.vue ) 注: current是底部导航栏的下标,你在tabb

    2024年02月14日
    浏览(84)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包