cm-navbar.vue 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <template>
  2. <view class="navbar">
  3. <view class="navbar-item" v-for="(item, index) in list" :key="index" @click.stop="$emit('click', item)">
  4. <image class="navbar-icon" :src="item.image" mode="widthFix"></image>
  5. <view class="navbar-label" v-text="item.name"></view>
  6. </view>
  7. </view>
  8. </template>
  9. <script>
  10. export default {
  11. name: 'cm-navbar',
  12. data() {
  13. return {
  14. list: [
  15. {
  16. name: '护肤品',
  17. image: 'https://picsum.photos/200/200'
  18. },
  19. {
  20. name: '护肤品',
  21. image: 'https://picsum.photos/200/200'
  22. },
  23. {
  24. name: '护肤品',
  25. image: 'https://picsum.photos/200/200'
  26. },
  27. {
  28. name: '护肤品',
  29. image: 'https://picsum.photos/200/200'
  30. },
  31. {
  32. name: '护肤品',
  33. image: 'https://picsum.photos/200/200'
  34. },
  35. {
  36. name: '护肤品',
  37. image: 'https://picsum.photos/200/200'
  38. },
  39. {
  40. name: '护肤品',
  41. image: 'https://picsum.photos/200/200'
  42. },
  43. {
  44. name: '护肤品',
  45. image: 'https://picsum.photos/200/200'
  46. }
  47. ]
  48. }
  49. }
  50. }
  51. </script>
  52. <style lang="scss" scoped>
  53. .navbar {
  54. @extend .cm-flex-between;
  55. justify-content: flex-start;
  56. flex-wrap: wrap;
  57. padding: 40rpx 28rpx 12rpx;
  58. background: #fff;
  59. .navbar-item {
  60. @extend .cm-flex-center;
  61. flex-direction: column;
  62. width: 25%;
  63. padding-bottom: 28rpx;
  64. .navbar-icon {
  65. width: 110rpx;
  66. height: 110rpx;
  67. }
  68. .navbar-label {
  69. margin-top: 12rpx;
  70. font-size: 28rpx;
  71. color: #666;
  72. }
  73. }
  74. }
  75. </style>