当前位置:   article > 正文

uniapp自定义导航栏样式,自定义导航栏组件使用说明,兼容小程序和H5及各端_uniapp data-cur

uniapp data-cur

实现思路:

把底部导航做成一个组件,点击导航显示的页面也做成组件,在启动页面引入这四个组件,点击封装的导航组件就显示相应的组件页面,这样就不会出现页面重新加载的问题了,有个弊端就是导航页面不能使用页面的生命周期,需要使用组件的生命周期,例如onLoad 和onShow 就是页面生命周期,可以使用 created 代替,下面看看实现步骤。

实现步骤:

1. 使用 colorui UI库

下载colorui  ui库-[github](https://github.com/weilanwl/ColorUI);

下载好之后放在 components 目录

2.在 components 目录创建 tabbar.vue 文件,里面代码是:

  1. <template>
  2. <view class="cu-bar tabbar bg-white shadow foot">
  3. <view class="action" @click="NavChange" data-cur="home">
  4. <view class='cuIcon-cu-image'>
  5. <image :src="'/static/tabbar/home' + [PageCur=='home'?'1':''] + '.png'"></image>
  6. </view>
  7. <view :class="PageCur=='home'?'text-green':'text-gray'">首页</view>
  8. </view>
  9. <view class="action" @click="NavChange" data-cur="nutrition">
  10. <view class='cuIcon-cu-image'>
  11. <image :src="'/static/tabbar/task' + [PageCur == 'nutrition'?'1':''] + '.png'"></image>
  12. </view>
  13. <view :class="PageCur=='nutrition'?'text-green':'text-gray'">充电</view>
  14. </view>
  15. <view class="action" @click="NavChange" data-cur="userCenter">
  16. <view class='cuIcon-cu-image'>
  17. <image :src="'/static/tabbar/user' + [PageCur == 'userCenter'?'1':''] + '.png'"></image>
  18. </view>
  19. <view :class="PageCur=='userCenter'?'text-green':'text-gray'">我的</view>
  20. </view>
  21. </view>
  22. </template>
  23. <script>
  24. export default {
  25. data() {
  26. return {
  27. PageCur: 'home'
  28. }
  29. },
  30. methods: {
  31. NavChange: function(e) {
  32. this.PageCur = e.currentTarget.dataset.cur
  33. this.$emit('tabbarChange',this.PageCur)
  34. }
  35. }
  36. }
  37. </script>
  38. <style>
  39. </style>

3.使用示例:

  1. <template>
  2. <view class="">
  3. <view v-if="tab=='home'" class="">
  4. 首页
  5. </view>
  6. <Nutrition v-if="tab=='nutrition'"></Nutrition>
  7. <UserCenter v-if="tab=='userCenter'"></UserCenter>
  8. <tabbar @tabbarChange="tabbarChange"/>
  9. </view>
  10. </template>
  11. <script>
  12. import tabbar from '@/components/tabbar.vue';
  13. import Nutrition from '../nutrition/nutrition'
  14. import UserCenter from '../nhs/userCenter'
  15. export default {
  16. components: {
  17. tabbar,Nutrition,UserCenter
  18. },
  19. data() {
  20. return {
  21. tab:'home'
  22. }
  23. },
  24. onLoad() {},
  25. methods: {
  26. tabbarChange(e){
  27. console.log('e',e)
  28. this.tab =e
  29. },
  30. navTo(e) {
  31. console.log('e', e)
  32. let url = e.currentTarget.dataset.url
  33. this.$navTo.navigateTo({
  34. url
  35. })
  36. },
  37. }
  38. }
  39. </script>
  40. <style>
  41. .aaa {
  42. height: 120rpx;
  43. line-height: 120rpx;
  44. margin: 20rpx;
  45. background-color: #00C7DD;
  46. text-align: center;
  47. color: white;
  48. width: 26%;
  49. }
  50. .aaaacc {
  51. margin-top: 10rpx;
  52. display: flex;
  53. flex-wrap: wrap;
  54. margin-left: 5%;
  55. }
  56. </style>

图标:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/594923
推荐阅读
相关标签