uniApp开发小程序自定义tabBar底部导航栏+tabBar中间凸起自定义样式实现

这篇具有很好参考价值的文章主要介绍了uniApp开发小程序自定义tabBar底部导航栏+tabBar中间凸起自定义样式实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        先看效果是否可以满足你们,如果可以满足你只要一步一步照着做绝对没有错。

        本人技术不佳,研究了一整天,全网的大佬们写的博客看的晕头转向,避免大伙再走弯路,跟着我以下步骤一点一点来绝对可以实现。

        最终效果图: (如果你看着还满意的话那就跟着教程一步一步来吧)

u-tabbar centeritem,uniApp,笔记

首先你要确保你的项目中安装了 uview的UI框架和vuex,具体安装教程这两个网上都有详细教程,我这项目是Vue3.0的,用的是uview-plus框架。

第一步:配置信息

pages.js 添加 "custom": true 属性

u-tabbar centeritem,uniApp,笔记

第二步:添加自定义tabBar代码文件

注意:这里是按官方要求必须放在项目根目录下,而且文件名不能修改,index中代码如下:

u-tabbar centeritem,uniApp,笔记

<template>
	<view>
		<u-tabbar :value="index" @change="tabBarChange" :fixed="true" :placeholder="true" :safeAreaInsetBottom="true"
			activeColor="#d81e06">
			<u-tabbar-item text="首页">
				<template #active-icon>
					<image class="u-page__item__slot-icon" :src="list[0].selectedIconPath"></image>
				</template>
				<template #inactive-icon>
					<image class="u-page__item__slot-icon" :src="list[0].iconPath"></image>
				</template>
			</u-tabbar-item>

			<u-tabbar-item text="转让">
				<template #active-icon>
					<image class="u-page__item__slot-icon" :src="list[1].selectedIconPath"></image>
				</template>
				<template #inactive-icon>
					<image class="u-page__item__slot-icon" :src="list[1].iconPath"></image>
				</template>
			</u-tabbar-item>

			<u-tabbar-item @click="show = true">
				<template #active-icon>
					<image class="u-page__item__slot-icon-big" :src="list[2].selectedIconPath">
					</image>
				</template>
				<template #inactive-icon>
					<image class="u-page__item__slot-icon-big" :src="list[2].iconPath"></image>
				</template>
			</u-tabbar-item>

			<u-tabbar-item text="积分">
				<template #active-icon>
					<image class="u-page__item__slot-icon" :src="list[3].selectedIconPath"></image>
				</template>
				<template #inactive-icon>
					<image class="u-page__item__slot-icon" :src="list[3].iconPath"></image>
				</template>
			</u-tabbar-item>

			<u-tabbar-item text="我的">
				<template #active-icon>
					<image class="u-page__item__slot-icon" :src="list[4].selectedIconPath"></image>
				</template>
				<template #inactive-icon>
					<image class="u-page__item__slot-icon" :src="list[4].iconPath"></image>
				</template>
			</u-tabbar-item>
		</u-tabbar>
		<view>
			<u-popup :overlayOpacity="0.6" :round="10" :show="show" @close="close" @open="open">
				<view class="issue-item">
					<view class="issue-item-buy" @click="toBuy">
						<text>我要卖</text>
					</view>
					<view class="issue-item-sell">
						<text>我要买</text>
					</view>
				</view>
			</u-popup>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				show: false,
				list: [{
						"pagePath": "/pages/index/index",
						"text": "首页",
						"iconPath": "/static/tabs/home_default.png",
						"selectedIconPath": "/static/tabs/home_selected.png"
					},
					{
						"pagePath": "/pages/makeOver/makeOver",
						"text": "转让",
						"iconPath": "/static/tabs/mass_default.png",
						"selectedIconPath": "/static/tabs/mass_selected.png"
					},
					{
						"pagePath": "/pages/issue/issue",
						"text": "发布",
						"iconPath": "/static/images/tab_issue.png",
						"selectedIconPath": "/static/images/tab_issue.png"
					},
					{
						"pagePath": "/pages/integral/integral",
						"text": "积分",
						"iconPath": "/static/tabs/mass_default.png",
						"selectedIconPath": "/static/tabs/mass_selected.png"
					},
					{
						"pagePath": "/pages/my/my",
						"text": "我的",
						"iconPath": "/static/tabs/my_default.png",
						"selectedIconPath": "/static/tabs/my_selected.png"
					}
				]
			}
		},
		computed: {
			index() {
				return this.$store.state.tabbarIndex
			}
		},
		methods: {
			tabBarChange(e) {
				if (e !== 2) {
					uni.switchTab({
						url: this.list[e].pagePath
					})
				}
			},
			//点击发布按钮的弹出层
			open() {
				console.log('open');
			},
			close() {
				this.show = false;
				console.log('close');
			},
			//点击我要卖
			toBuy() {
				console.log("点击了");
				uni.switchTab({
					url: '/pages/issue/issue'
				})
			}
		}
	}
</script>

<style lang="scss">
	.u-page__item__slot-icon {
		width: 50rpx;
		height: 50rpx;
	}

	.u-page__item__slot-icon-big {
		width: 120rpx;
		height: 120rpx;
		margin-bottom: 30rpx;
	}

	.issue-item {
		height: 400rpx;
		display: flex;
		justify-content: center;
		align-items: center;

		.issue-item-buy,
		.issue-item-sell {
			width: 30%;
			height: 100rpx;
			font-size: 28rpx;
			border-radius: 20rpx;
			background-color: pink;
			margin: 40rpx;
			line-height: 100rpx;
			text-align: center;
		}
	}
</style>

 下面我给大家先讲讲实现的逻辑,首先逛了一天的博客,有的人用for循环来做,刚开始我也用循环,但是我中间有个凸起的发布按钮,我想做出点击后有弹出层,然后再选择的功能,按照网上他们说的去做都直接跳转了,我这点击发布效果如下图:  没办法我只能我只有会写死,反正后面这个换的也不是太频繁。

u-tabbar centeritem,uniApp,笔记

我再讲讲代码中需要注意的点吧,首先 如下图的value值我绑定的computed计算属性中的index,然后methods中的tabBarChange方法呢是点击tabBar切换的每一项,下面我又加个if判断就是用来控制中间发布的那个图标点击后不跳转

u-tabbar centeritem,uniApp,笔记

 u-tabbar centeritem,uniApp,笔记

 以上配置好后,那就在每一个跳转页配一下代码,作用是用来更store中的changgeTabbarIndex的值,也就是确保页面跳转后,图标选中你所点击的那个页面,我这里每个页面都配置了一下。代码如下:

		onShow() {
			this.$store.commit('changeTabbarIndex', 1)
		},

u-tabbar centeritem,uniApp,笔记

u-tabbar centeritem,uniApp,笔记

第三步:安装配置vuex

 首先说为什么要安装vuex,因为通过vuex来实现组件和组件之间数据传递,当你点击不同tabBar来回切换的时候把对应的值存在store中。

安装命令:npm install vuex --save

配置vuex:项目根目录下新建 store/index.js文件,代码如下:

u-tabbar centeritem,uniApp,笔记

import {
	createStore
} from 'vuex'

const store = createStore({
	//全局状态
	state: {
		tabbarIndex: 0,
	},
	//同步的方法,commit
	mutations: {
		changeTabbarIndex(state, index) {
			state.tabbarIndex = index;
			console.log('uvexIndex',state.tabbarIndex);
		}
	},
	//异步的方法 dispatch
	actions: {

	}
})

export default store

第四步:配置主入口文件

u-tabbar centeritem,uniApp,笔记

 到这里就已经完成了,这是本人第一个小程序项目,希望能给新手们带来点帮助,欢迎大佬们前来批评指正。文章来源地址https://www.toymoban.com/news/detail-761339.html

到了这里,关于uniApp开发小程序自定义tabBar底部导航栏+tabBar中间凸起自定义样式实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 小程序自定义tabbar,中间凸起

    微信小程序自带tabbar,但无法实现中间按钮凸起样式和功能,因此按照设计重新自定义一个tabbar 如需源码,请点击下载源码,或点击顶部下载按钮

    2024年02月08日
    浏览(27)
  • uniapp自定义tabbar(支持中间凸起,角标,动态隐藏tab,全端适用)

    在使用uniapp进行开发时,tabbar是我们使用的很频繁的一个组件,但是在特定的平台会有一些使用上的限制,无法通过一套代码来做通用平台的适配。比如说中间按钮凸起,动态隐藏某个tab(不同角色展示不同功能),使用字体图标,数字角标等,这些功能不是所有平台都支持

    2024年02月02日
    浏览(31)
  • 鸿蒙开发自定义tabbar,带中间凸起按钮

    今天要分享的是开发一个自定义tabbar,因为签了保密协议的缘故,所以本项目还是基于鸿蒙4.0。 先看效果图: 自己做的图标不太美观,大家见谅哈哈哈。 这种带中间凸起的tabbar在项目中非常常见,但是我研究了一下系统的tabbar是不支持这样设置的,所以我们就自己开发一个

    2024年04月17日
    浏览(23)
  • 微信小程序自定义tabbar【中间凸起样式】

    效果预览 微信开发文档:自定义tabBar 一、配置信息 在 app.json 中的 tabBar 中指定 custom 字段为 true【允许使用自定义 tabBar】 在所有 tab 页 json 中申明usingComponents 项,或者在 app.json 中全局开启 在 list 中指定自己需要 tab 示例 二、添加 tabBar 代码文件 在代码根目录下添加custom-

    2024年02月10日
    浏览(34)
  • 前端Vue自定义tabbar底部tabbar凸起tabbar兼容苹果刘海屏小程序和APP

    前端Vue组件化开发:自定义tabbar组件的设计与实现  兼容苹果刘海屏小程序和APP 摘要: 随着前端开发技术的不断发展,组件化开发成为了提高开发效率和降低维护成本的有效手段。本文将介绍一款基于Vue的前端自定义tabbar组件的设计与实现,该组件具有单独开发、单独维护

    2024年02月11日
    浏览(51)
  • uni-app 实现凸起的 tabbar 底部导航栏

    效果图 在 pages.json 中设置隐藏自带的 tabbar 导航栏 新建一个 custom-tabbar.vue 自定义组件页面 底部安全区域的适配问题可查看:uni-app 苹果手机底部安全区域的适配问题 在 main.js 中引用组件 在要用到的页面中直接调用

    2024年02月07日
    浏览(45)
  • uniapp 开发小程序之实现不同身份展示不同的 tabbar(底部导航栏),附带相关问题解答

    效果展示:   引言 在开发过程中逐渐意识到uniapp原生的tabbar可能不能满足开发要求,通过浏览博客才选择使用uView的Tabbar 底部导航栏来实现,我选择用的是2X版本 安装 我是使用Hbuilder插件的方式引入的组件库,安装配置可以看这篇: 下载安装方式配置 | uView 2.0 - 全面兼容

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

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

    2024年02月02日
    浏览(41)
  • 微信小程序自定义tabbar导航栏,中间凸出样式

    这种样式的底部导航栏 使用微信小程序的自定义tabBar:微信小程序官方说明 uni.app=在  page.json   中的  tabBar  项指定  custom   字段为true: 在根目录创建custom-tab-bar目录, 注意一定要完全匹配,不要输错 :  index.js代码: 注意这里的中间需要凸出项设置一个class index.json代码

    2024年02月09日
    浏览(32)
  • 详细介绍uniapp小程序自定义底部tabbar样式的方法

    uniapp自带的tabbar组件可以方便地实现底部导航栏的功能,原生tabBar是相对固定的配置方式,但是默认的样式可能无法满足我们的需求,所以我们需要自定义设置tabbar样式。下面我会详细介绍uniapp自定义tabbar样式的方法。 一、pages.json代码 pages.json这里只配置页面路径就可以。

    2024年02月02日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包