在 uni-app 中实现底部导航栏(TabBar)并让最中间的项凸出来,可以通过自定义 TabBar 的样式来实现。uni-app 默认提供的 TabBar 配置选项有限,无法直接设置某个 Tab 项凸出来,但你可以通过自定义组件和样式来完成这一需求。
以下是一个简单的实现方法,利用自定义组件和 CSS 样式来实现底部导航栏,并让中间的 Tab 项凸出来。
- 创建自定义 TabBar 组件
首先,在 components
目录下创建一个自定义组件,例如 CustomTabBar.vue
。
<template>
<view class="tab-bar">
<view class="tab-item" @click="navigateTo('/pages/index/index')">首页</view>
<view class="tab-item" @click="navigateTo('/pages/about/about')">关于</view>
<view class="tab-item active" @click="navigateTo('/pages/center/center')">中心</view>
<view class="tab-item" @click="navigateTo('/pages/settings/settings')">设置</view>
</view>
</template>
<script>
export default {
methods: {
navigateTo(url) {
uni.switchTab({ url });
}
}
}
</script>
<style scoped>
.tab-bar {
display: flex;
position: fixed;
bottom: 0;
left: 0;
right: 0;
background-color: #fff;
border-top: 1px solid #eee;
}
.tab-item {
flex: 1;
text-align: center;
padding: 10px 0;
}
.tab-item.active {
background-color: #ff6600;
color: #fff;
border-radius: 10px 10px 0 0; /* 顶部圆角,模拟凸起效果 */
box-shadow: 0 -2px 5px rgba(0, 0, 0, 0.1); /* 添加阴影增强凸起效果 */
}
</style>
- 配置 pages.json
在 pages.json
中,配置 tabBar
为隐藏,因为我们使用自定义的 TabBar。
{
"tabBar": {
"list": [],
"color": "#7A7E83",
"selectedColor": "#3cc51f",
"borderStyle": "black",
"backgroundColor": "#ffffff",
"hideOnBoard": true // 隐藏默认TabBar
}
}
- 在 App.vue 中引入自定义 TabBar
在 App.vue
中引入并使用自定义的 TabBar 组件。
<template>
<view>
<slot></slot> <!-- 页面内容 -->
<CustomTabBar /> <!-- 自定义TabBar -->
</view>
</template>
<script>
import CustomTabBar from '@/components/CustomTabBar.vue';
export default {
components: {
CustomTabBar
}
}
</script>
通过以上步骤,你就可以实现一个自定义的底部导航栏,并让中间的 Tab 项凸出来。这种方法灵活且可定制性强,可以根据需求进一步调整样式和功能。