uniapp实现中间平滑凸起tabbar
uniapp实现中间平滑凸起tabbar
- 背景
- 实现思路
- 代码实现
- 尾巴
背景
在移动端开发中,tabar是一个使用频率很高的组件,几乎是每个APP都会用到。今天给大家分享一个中间平滑凸起的tabbar组件,有需要的可以做下参考。先上图镇楼:

实现思路
看上面图片就知道这个难点只有一个,就是中间那个平滑的凸起tab怎么来实现。好了,我也不卖关子了,直接说下实现的思路:
1、先布局一个普通的tabbar
2、再利用clip-path来裁剪出一个平滑凸起的圆弧,通过设置position来盖在步骤1的普通tabbar上面。
代码实现
我们先布局出一个普通的tabbar并放置在屏幕底部。
/*省略部分代码*/
<view class="tabbar"><block v-for="(item, index) in tabbarList" :key="index"><view class="tabbar-item" @click="toIndex(index)"><image :src="current == index ? item.activeIcon : item.inactiveIcon"></image><text :class="'font-title' + (current == index ? '-active' : '')">{{item.title}}</text></view></block></view>
/*省略部分代码*/
tabbarList就是你存放的tabbar配置项为奇数个,格式如下:
/*省略部分代码*/
tabbarList: [{inactiveIcon: '../../static/tabbar/main_tab_home_normal.png',activeIcon: '../../static/tabbar/main_tab_home_select.png',title: '首页'}]
/*省略部分代码*/
这是效果如下:

接下来我们利用clip-path来裁剪出一个弧形的path,然后在tabbar中间盖一个你需要的图片,我这里是加号图。为了看的更直观,我将这个裁剪的弧形先不盖在tabbar上面,先偏移底部较大一段距离,看效果:

然后调整下偏移量到一个合适位置,就看到了文章中开始那个效果了。这个path的裁剪形状你可以直接参考我的。
/*省略部分代码*/
.mid-btn-arc {position: fixed;bottom: 250rpx;left: calc(50% - 100rpx);background-color: #fff;z-index: 98;height: 100rpx;width: 200rpx;clip-path: path('M 50,0 Q 35,0 25,7.5 Q 20.5, 11.5 0, 15 V 50 H 100 V15 Q 79.5,11.5 75,7.5 Q 65,0 50,0 z');}
/*省略部分代码*/
到这里基本就完工了。接下来贴出来全部的代码:
<template><view><view>{{content}}</view><view class="tabbar"><block v-for="(item, index) in tabbarList" :key="index"><view class="tabbar-item" @click="toIndex(index)"><image :src="current == index ? item.activeIcon : item.inactiveIcon"></image><text :class="'font-title' + (current == index ? '-active' : '')">{{item.title}}</text></view></block><view class="mid-btn-arc"></view><view class="mid-btn" @click="toIndex(tabbarList.length % 2)"><image class="mid-img" src="../../static/tabbar/add.png"></image></view></view></view>
</template><script>export default {data() {return {current: 0,content: '首页',tabbarList: [{inactiveIcon: '../../static/tabbar/main_tab_home_normal.png',activeIcon: '../../static/tabbar/main_tab_home_select.png',title: '首页'},{inactiveIcon: '../../static/tabbar/main_tab_home_normal.png',activeIcon: '../../static/tabbar/main_tab_home_select.png',title: '首页1'},{inactiveIcon: '../../static/tabbar/main_tab_home_normal.png',activeIcon: '../../static/tabbar/main_tab_home_select.png',title: '首页2'},{inactiveIcon: '../../static/tabbar/main_tab_home_normal.png',activeIcon: '../../static/tabbar/main_tab_home_select.png',title: '首页3'},{inactiveIcon: '../../static/tabbar/main_tab_home_normal.png',activeIcon: '../../static/tabbar/main_tab_home_select.png',title: '首页4'}]}},methods: {toIndex(index){this.current = indexthis.content = this.tabbarList[index].title}}}
</script><style lang="scss">page {background-color: #dfdfdf;}.tabbar {position: fixed;left: 0;bottom: 0;height: 120rpx;width: 100vw;background-color: #f9f9f9;z-index: 99;display: flex;justify-content: space-between;align-items: center;}.tabbar-item {flex: 1;height: 120rpx;background-color: #fff;z-index: 100;display: flex;flex-direction: column;justify-content: center;align-items: center;transition: transform 0.3s;}.font-title {font-size: 22rpx;margin: 5rpx 0;color: #dfdfdf;z-index: 100;}.font-title-active {font-size: 22rpx;margin: 5rpx 0;color: #000000;z-index: 100;}.mid-btn-arc {position: fixed;bottom: 50rpx;left: calc(50% - 100rpx);background-color: #fff;z-index: 98;height: 100rpx;width: 200rpx;clip-path: path('M 50,0 Q 35,0 25,7.5 Q 20.5, 11.5 0, 15 V 50 H 100 V15 Q 79.5,11.5 75,7.5 Q 65,0 50,0 z');}.mid-btn {position: fixed;height: 100rpx;width: 100rpx;left: 50%;bottom: 45rpx;transform: translateX(-50rpx);background-color: #fff;border-radius: 50rpx;display: flex;justify-content: center;align-items: center;z-index: 100;.mid-img {width: 80rpx;height: 80rpx;}}image {width: 50rpx;height: 50rpx;transition: transform 0.3s, width 0.3s, height 0.3s;}
</style>
我知道你只想直接ctrl+c
啊什么,你还想要图片?给你,通通给你:



尾巴
毫无保留啥都给你们了,有啥问题可以给我留言,如果喜欢我的文章,欢迎给我点赞,评论,关注,谢谢大家!
相关文章:
uniapp实现中间平滑凸起tabbar
uniapp实现中间平滑凸起tabbar 背景实现思路代码实现尾巴 背景 在移动端开发中,tabar是一个使用频率很高的组件,几乎是每个APP都会用到。今天给大家分享一个中间平滑凸起的tabbar组件,有需要的可以做下参考。先上图镇楼: 实现思…...
【视频】OpenCV:识别颜色、绘制轮廓
1、安装OpenCV库 sudo apt install libopencv-dev2、链接库 将 OpenCV 头文件路径和库添加到CMake中,在 CMakeLists.txt 中添加 1)查找库 find_package(OpenCV REQUIRED) 或者 find_package(OpenCV REQUIRED core imgproc highgui) 2)添加头文件路径 include_directories…...
C++_STL_xx_番外01_关于STL的总结(常见容器的总结;关联式容器分类及特点;二叉树、二叉搜索树、AVL树(平衡二叉搜索树)、B树、红黑树)
文章目录 1. 常用容器总结2. 关联式容器分类3. 二叉树、二叉搜索树、AVL树、B树、红黑树 1. 常用容器总结 针对常用容器的一些总结: 2. 关联式容器分类 关联式容器分为两大类: 基于红黑树的set和map;基于hash表的unorder_set和unorder_ma…...
xlrd.biffh.XLRDError: Excel xlsx file; not supported
文章目录 一、问题报错二、报错原因三、解决思路四、解决方法 一、问题报错 在处理Excel文件时,特别是当我们使用Python的xlrd库来读取.xlsx格式的文件,偶尔会遇到这样一个错误:“xlrd.biffh.XLRDError: Excel xlsx file; not supported”。…...
ENNSP中ACL的实验配置
ACL:访问控制列表 1访问控制----在路由器的入或者出的接口上,匹配流量,之后产生动作---允许或拒绝 2.定义感兴趣流量-----帮助其他软件抓流量 访问控制的匹配规则: 拓扑图如下 基础配置 基础配置弄好后,随便p…...
数字后端零基础入门系列 | Innovus零基础LAB学习Day8
###LAB15 Detail Routing for Signal Integrity, Timing, Power and Design for Yield 这个章节虽然标题有点长,但不要被它吓到,其实这个章节就是Innovus工具的绕线Routing。只不过这个阶段做Route不是仅仅是把所有的逻辑连接,用实际的金属层…...
【AI开源项目】FastGPT- 快速部署FastGPT以及使用知识库的两种方式!
文章目录 一、FastGPT大模型介绍1. 开发团队2. 发展史3. 基本概念 二、FastGPT与其他大模型的对比三、使用 Docker Compose 快速部署 FastGPT1、安装 Docker 和 Docker Compose(1). 安装 Docker(2). 安装 Docker Composeÿ…...
信息学科平台系统开发:Spring Boot实用指南
3系统分析 3.1可行性分析 通过对本基于保密信息学科平台系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本基于保密信息学科平台系统采用Spring Boot框架&a…...
笔记本电脑买i7还是i9?i7和i9处理器区别详细介绍
i7和i9处理器都是英特尔(Intel)公司生产的高性能处理器,但它们有一些显著的区别。为了帮助你做出明智的选择,下面我们详细介绍一下i7和i9处理器的区别,以及如何根据你的需求来选择合适的处理器。 一、i7处理器的特点…...
Netty原来就是这样啊(一)
前言: 当前对于整体而言来说就是说分为客户端以及服务端然后服务端接收到客户端的请求之后将客户端想要的结果返回给它,但是这个就需要建立一个连接进行数据的传输除此以外我们是通过网络进行传输的那么就需要网络协议 (TCP UDP),建立的连接就是叫Socket连接 Socket的具体介绍…...
量子容错计算
基本思想 容错量子计算的基本想法是,在合理编码后的量子态上直接量子计算,以至于不完全需要解码操作。假设有一个简单的量子电路,但不幸的是噪声影响着这个电路的每一个元件,包括量子态的制备、量子逻辑门、对输出的测量&#x…...
QGraphics View坐标系
QGraphics View绘图结构依赖三个类:QGraphicsScene,QGraphicsView,QGraphicsItem。 这三者的关系在前面已经介绍过:Graphics View 绘图架构-CSDN博客 这里介绍下这三者的坐标系,以及如何相互转换。 1. QGraphicsScen…...
繁星之下--
在一个宁静的小镇上,年轻的画家阿宁用她的画笔捕捉着四季的变换。这个小镇四季分明,春天的嫩芽、夏天的繁花、秋天的金黄和冬天的白雪,仿佛每一个季节都在向她诉说着自己的故事。阿宁常常在思考,如何将这些美丽的瞬间转化为永恒的…...
Transformer+KAN系列时间序列预测代码
前段时间,来自 MIT 等机构的研究者提出了一种非常有潜力的替代方法 ——KAN。该方法在准确性和可解释性方面表现优于 MLP。而且,它能以非常少的参数量胜过以更大参数量运行的 MLP。 KAN的发布,引起了AI社区大量的关注与讨论,同时…...
vue项目安装组件失败解决方法
1.vue项目 npm install 失败 删除node_modules文件夹、package-lock.json 关掉安装对话框 重新打开对话框 npm install...
C++ [项目] 躺平发育
一、基本介绍 支持Dev-C5.11版本(务必调为英文输入法),基本操作看游戏里的介绍,怎么做的……懒得说,能看懂就看注释,没有的自己猜,如果你很固执……私我吧 二、代码部分 #include<bits/stdc.h> #include<windows.h> #include<unistd.h> using namespace st…...
[产品管理-55]:产品设计不仅仅完成功能,即可用性设计,还需要完成可生产性、可装配性、可维护性、可回收性、可服务性设计
目录 可用性设计: 可生产性设计: 可装配性设计: 可维护性设计: 可回收性设计: 可服务性设计: 产品设计是一个综合性的过程,它不仅仅局限于完成产品的基本功能,即可用性设计&am…...
Mount Image Pro,在取证安全的环境中挂载和访问镜像文件内容
天津鸿萌科贸发展有限公司从事数据安全服务二十余年,致力于为各领域客户提供专业的数据恢复、数据备份解决方案与服务,并针对企业面临的数据安全风险,提供专业的相关数据安全培训。 天津鸿萌科贸发展有限公司是 GetData 公司数据恢复与取证工…...
玩转Docker | Docker基础入门与常用命令指南
玩转Docker | Docker基础入门与常用命令指南 引言基本概念help帮助信息常用命令管理镜像运行容器构建镜像其他Docker命令整理结语引言 Docker 是一种开源的应用容器引擎,它允许开发者将应用程序及其依赖打包进一个可移植的容器中,然后发布到任何流行的 Linux 机器上。这大大简…...
【MySQL】MySQL安装以及各种报错处理
前言: 本节内容讲述在Ubuntu环境下怎么进行MySQL的安装。 以及一些安装过程中遇到的报错如何处理的问题。 ps:注意, 本篇文章不是图形化界面的MySQL安装教程哦。想要安装图形化界面的MySQL的友友们可以另寻资源了。 目录 更新软件包列表 安装M…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
