前端微信小程序实战篇

电商底部导航栏的制作

我想大家对电商一定不陌生,一般电商的底部导航栏有以下几个首页、分类、购物车、个人中心。

app.json是用来配置page路径以及导航栏属性的,那我们要做首页、分类、购物车、个人中心界面就要在page也添加这几个界面,所以在app.json的page里添加如下代码,写入page路径,系统会自动帮你创建界面的

  "pages":[ "pages/home/home", "pages/classify/classify", "pages/cart/cart", "pages/mine/mine", "pages/index/index" ],

好,既然添加了四个界面,那我们要怎么做底部导航栏呐,今天给app.json再添加一个属性,就是可以在app.json里配置导航栏,将下面代码添加到app.json里面

 "tabBar": { "color": "#858585", "selectedColor": "#f0145a", "backgroundColor": "#ffffff", "borderStyle": "#000", "list": [ { "pagePath": "pages/home/home", "iconPath": "images/bottomNav/home.png", "selectedIconPath": "images/bottomNav/home_select.png", "text": "首页" }, { "pagePath": "pages/classify/classify", "iconPath": "images/bottomNav/classify.png", "selectedIconPath": "images/bottomNav/classify_select.png", "text": "分类" }, { "pagePath": "pages/cart/cart", "iconPath": "images/bottomNav/cart.png", "selectedIconPath": "images/bottomNav/cart_select.png", "text": "购物车" }, { "pagePath": "pages/mine/mine", "iconPath": "images/bottomNav/mine.png", "selectedIconPath": "images/bottomNav/mine_select.png", "text": "我的" } ] }

tabBar系统自带字段,不可改,添加这个字段就是告诉系统你要添加导航栏,color、selectedColor、backgroundColor从字面意思也字段,分别对应的属性是默认字体颜色、勾选字体颜色、背景颜色。着重说一下borderStyle,这个的定义底部导航栏与界面的边界线,属性有点特殊,特殊在如果你不想要这个分界线,可以把属性设置为white,剩下的不管你写入的是什么,系统都理解为要添加这条分界线,不信你可以试试。list属性自然是设置对应导航栏的界面啦,

  • pagePath:页面路径,就是你写在page里的路径
  • iconPath:默认导航栏图片路径
  • selectedIconPath:勾选图片的路径
  • text:导航栏名字

这里要说的是,图片路径,一定要写对,不然找不到图片就显示不出来,这里给大家提供我的导航栏图片---提取码:8zwe 大家可以根据我的图片路径创建对应的文件夹,如下图


1-1.png

需要注意的:

  • 添加tabBar的时候别忘记别忘记上面有一个逗号,这个是用来区分每个属性的,所以你每添加一个属性都要用逗号分隔开来,这点要注意,不然会报错,这就是我把标点去掉的错误日志,一般报出错误日志Expecting 'EOF' XXXXXXXXX,got STRING都是语法错误,所以要仔细检查看看哪里少写了东西。

    1-2.png
  • 还有就是在.json文件里是不可以写注释的,我原本想添加一点注释方便读者阅读,然而会出现下面错误信息,解决办法很简单,把注释删除就可以啦

    1-3.png

    举一反三

    1. 我们创建了四个导航栏,那么如果我想再添加两个导航栏可以吗?
      你也许觉得很简单,试着去在list列表里添加两个了吧,我也是这么做的,但是出问题啦。系统会报错,这回知道了吧,最多只能是五个,没办法,谁让微信是老大,人家定最多五个那就只能最多五个喽!

      1-3.png
    2. 不知道你有没有注意到,导航栏默认首页勾选为红色,那么我想要默认勾选分类为红色呐,要怎么办?
      这个有点难度了吧,我刚开始想的是在tabBar属性把list里的第一个home属性和classify属性换一下应该就可以解决,然而并不是这样的,因为没有效果,后来也是一次误打误撞给发现的,我给你点小提示,有没有注意到,pages的第一个路径是什么pages/home/home,没错,就是它,如果想要分类classify作为默认的勾选项,你只需要在pages属性把home的路径和classify路径换一下,保存,重新编译一下,你要的效果就出来了,这里可以总结的一点就是,tabBar是到page里的第一行路径作为默认勾选项的。

电商顶部导航栏制作

既然讲了导航栏,干脆今天多讲解一点,接着教教大家顶部导航栏怎么制作,先上效果图


2-1.png


这个导航栏可不像底部导航栏啦,因为他的级别比较低,是页面级别的导航栏,所以要写在页面里,你想要在哪个页面加入顶部导航栏就在哪个页面里添加如下代码,这里以首页的界面为例:
home.wxss

/* pages/home/home.wxss */ page{ display: flex; flex-direction: column; height: 100%; } .navbar{ flex: none; display: flex; background: #fff; } .navbar .item{ position: relative; flex: auto; text-align: center; line-height: 80rpx; font-size:14px; } /* 顶部导航字体颜色 */ .navbar .item.active{ color: #f0145a; } /* 顶部指示条属性 */ .navbar .item.active:after{ content: ""; display: block; position: absolute; bottom: 0; left: 0; right: 0; height: 6rpx; background: #f0145a; }

home.wxml

<!--导航条--> <view class="navbar"> <text wx:for="{{navbar}}" data-idx="{{index}}" class="item {{currentTab==index ? 'active' : ''}}" wx:key="unique" bindtap="navbarTap">{{item}}</text> </view>

在home.wxml里面bindtap字段我们已经讲解过啦,是事件监听的标识符,事件名称叫“navbarTap”可以到home.js里查找到这个事件wx:for这个字段重点讲解,在组件上使用wx:for控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。默认数组的当前项的下标变量名默认为index,数组当前项的变量名默认为item,这是官方解释,说白了就是item默认叫做变量的值,index表示第几个变量的值,还不太明白请看这个 微信 wx:for 的讲解

  • wx:for="{{navbar}}" 意思是虚幻navbar的数组数据
  • {{item}} 这里面是navbar数组里面的值,如护肤、彩妆等值
  • wx:key="unique" 来指定列表中项目的唯一的标识符
  • data-idx="{{index}}" 存储一些数据供home.js里调用,这里data-xxx,xxx就是你给home.js里提供的数据关键词,home.js通过获取xxx关键词来获取xxx里面的数据

home.js

// pages/home/home.js var app = getApp() Page({ data: { navbar: ['护肤', '彩妆', '香水','个人护理'], currentTab: 0, }, // 导航切换监听 navbarTap: function (e) { console.debug(e); this.setData({ currentTab: e.currentTarget.dataset.idx }) }, })

home.js,这里读过微信小程序入门篇(二)都知道,page页面里.js一般是放data数据和事件监听的,这里data有一个navbar导航栏数据,还有一个记录当前位置的currentTab,字段可以自由命名,赋值的时候对应上就好,

  • navbarTap 记得在home.wxml里面data-idx属性吗,在这里用到,currentTab: e.currentTarget.dataset.idx 把当前用户选择的Tab传给currentTab里,为了验证一下结果,我在这里面加入了一个输出日志console.debug(e);,可以在控制台上看输出的日志,我选择点击彩妆,输出台的数据idx:1刚好是彩妆的位置。

2-2.png

总结

今天我们讲解的微信小程序的底部导航栏和顶部导航栏,导航栏应该说是必须的对于电商小程序来说,那么今天的导航栏教程你掌握了吗?

学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入学习交流群
343599877,我们一起学前端!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368701.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring MVC –使用@ResponseBody轻松实现基于REST的JSON服务

Spring 3使JSON REST服务非常容易。 本教程将通过几个步骤向您展示如何进行。 您可以在GitHub上获取代码。 先决条件 您应该有一个运行中的Spring MVC应用程序。 如果尚未设置正常的Spring MVC应用程序&#xff0c;请按照本教程进行操作 。 我们将定义三个REST服务&#xff1a…

android 勿扰模式代码,Android N Zen Mode (勿扰模式)设置流程

Android N去除了情景模式&#xff0c;取而代之的是勿扰模式。勿扰模式的入口有两处&#xff0c;下拉栏和设置声音里面。下面我们就从设置声音入口&#xff0c;看看勿扰模式的设置流程。首先&#xff0c;勿扰模式的首页有三种选项&#xff0c;分别是仅允许优先打扰内容、自动规则…

一个edit的学习笔记

https://blog.csdn.net/woshizoe/article/details/51555396转载于:https://www.cnblogs.com/strongdady/p/9060760.html

VM12虚拟机Centos7配置动态IP的网络设置

1.控制面板->网络和Internet->网络连接->本地连接->属性->共享->共享给VMnet8 2.VM虚拟机->编辑->虚拟网络编辑器->NAT模式 将所有IP设置为Windows下的CMD->ipconfig下的VMnet8一样的IP 3. 1 vi /etc/sysconfig/network-script/ifcfg-ens33 PS:e…

使用display:none和visibility:hidden隐藏的区别

今天做毕设时遇到了一个小问题&#xff0c;我做了一个tab导航栏&#xff0c;点击一个tab页其它tab页隐藏&#xff0c;这时候第一想法是使用display&#xff1a;none来控制显示隐藏&#xff0c;写了之后发现使用display会有一个问题&#xff0c;就是第二个tab页的轮播图是在页面…

Java 8 Lambdas –缺少脱离Java的链接

我学习了函数式编程&#xff0c;但是后来我决定我更喜欢命令式编程&#xff0c;于是我转回去。 —没人 从命令式编程过渡到函数式编程是当今非常普遍的事情。 互联网上的博客文章充斥着关于它的证词。 我读过的所有内容以及与我交谈过的每个人&#xff08;包括我自己&#xf…

倒计时 时间校准android,android倒计时器时间

我一直在使用android倒计时器样本来创建某个日期的倒计时.Time TimerSet new Time();TimerSet.set(20, 8, 2012); //day month yearTimerSet.normalize(true);long millis TimerSet.toMillis(true);Time TimeNow new Time();TimeNow.setToNow(); // set the date to Current…

(转)zabbix3.4使用percona-monitoring-plugins监控mysql

原文&#xff1a;https://blog.csdn.net/yanggd1987/article/details/79656771 简介 之前主要使用nagios监控mysql&#xff0c;本文主要介绍使用percona-monitoring-plugins监控mysql&#xff0c;percona监控插件是php开发&#xff0c;因此要在agent安装php环境。 配置安装 一.…

用订阅/发布者模式解决异步函数结果依赖的问题

我们都知道node是基于事件无阻塞i/o模型的&#xff0c;所以说大部分函数都是以异步实现的&#xff0c;请看下面代码&#xff1a; db.query(sql1, function (err, data) {//code })db.query(sql2, function (err, data) {//code })如果我们上述两个操作&#xff0c;结果之间没有…

在集成测试中模拟耗时的动作

最近在我的一个项目中&#xff0c;我遇到一种情况&#xff0c;需要为该应用程序创建集成测试。 这不是很奇怪&#xff0c;不是吗&#xff1f; 有趣的是&#xff0c;该应用程序的逻辑涉及一些并发问题&#xff0c;并且其中一个组件必须连接到外部服务&#xff0c;这将花费几秒钟…

html基础-html简介-第一个网页(1)

今天刚刚开通博客园&#xff0c;把我最近整理的html/css来说一下&#xff0c;对于初学者还是有一定的帮助。 一、先来为大家简单普及以下html &#xff08;1&#xff09;、html英文即&#xff1a;hypertext markup language 中译 &#xff1a; 超文本标记语言 &#xff08;2&…

javafx android sdk,JavaFX打包到Android上

让JavaFX运行到移动平台一直是社区努力完成的事。当然&#xff0c;目前已经可以让JavaFX运行到Android和IOS平台了&#xff0c;下面我们来看看如何打包自己的JavaFX项目到Android平台。这个示例是我从打包官方示例的例子里修改而来&#xff0c;用于打包一个简单的JavaFX程序。示…

在zookeeper集群的基础上,搭建伪solrCloud集群

伪集群的搭建&#xff1a;将solrCloud搭建到同一台机器上。 准备工作 1 将在window中部署的单机版solr上传到服务器&#xff08;虚拟机&#xff09;中 solr的简单部署&#xff1a;在tomcat中启动slor 的内容 这一次放到 mkdir /usr/local/solr-cloud 文件夹内并解压 2 复制4份…

Python-IndexError: list index out of range

Error&#xff1a;IndexError: list index out of range Where? 对Python中有序序列进行按索引取值的时候&#xff0c;出现这个异常 Why? 对于有序序列&#xff1a; 字符串 str 、列表 list 、元组 tuple进行按索引取值的时候&#xff0c;默认范围为 0 ~ len(有序序列)-1&…

摆脱困境:向REST API添加验证

我对此感到有些to愧&#xff0c;但直到昨天&#xff0c;我才知道我可以使用Valid和RequestBody批注将验证添加到REST API中。 这在Spring MVC 3.0中不起作用&#xff0c;由于某种原因&#xff0c;我没有注意到在Spring MVC 3.1中添加了对此功能的支持 。 我从不喜欢旧的方法&am…

三星 原生android,原生Android 4.0 三星GALAXY Nexus评测

前言&#xff1a;北京时间10月19日上午10时&#xff0c;谷歌联合三星在香港举行了一场主题为“Calling all possibilities ”的新品发布会&#xff0c;在发布会上正式推出了搭载最新Android 4.0操作系统的智能手机三星GALAXY Nexus。三星GALAXY Nexus每一代的Nexus都被看做是An…

css类选择器类名覆盖优先级

code <style>.a{background: red;}.b{background: yellow;} </style> <div class"a b">A</div> 渲染效果 最初以为更改元素中class类里面的类名顺序&#xff0c;渲染效果就会根据类名顺序依次渲染code <style>.a{background: red;…

IntelliJ IDEA插件-常用插件

IntelliJ IDEA的插件真的很多&#xff0c;最近的新版集成的插件已经基本够用&#xff0c;下面是收集的一些常用插件&#xff0c;根据需要来安装和测试。如果还是没有找到&#xff0c;那么自己来开发一个。 官网&#xff1a;https://plugins.jetbrains.com/ 插件开发资料&#x…

CMD命令锦集

虽然随着计算机产业的发展&#xff0c;Windows 操作系统的应用越来越广泛&#xff0c;DOS 面临着被淘汰的命运&#xff0c;但是因为它运行安全、稳定&#xff0c;有的用户还在使用&#xff0c;所以一般Windows 的各种版本都与其兼容&#xff0c;用户可以在Windows 系统下运行DO…

在运行时访问工件的Maven和SCM版本

您可以轻松地告诉Maven在JAR清单文件中包含工件的版本及其Git / SVN /…修订版&#xff0c;然后在运行时通过getClass&#xff08;&#xff09;。getPackage访问该信息。 getImplementationVersion&#xff08;&#xff09; 。 &#xff08;所有功劳归功于MarkusKrger和其他同事…