di-scroll-menu-list.vue 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <template>
  2. <scroll-view class="di-scroll-menu-list" :scroll-x="true">
  3. <view class="di-scroll-menu-list__item" :style="{'width':menuList.length > 4 ? '23%' : '25%'}" v-for="(menu, index) in menuList"
  4. :key="menu.title">
  5. <view class="di-scroll-menu-list__item-body" @click="handleClick(menu)">
  6. <u-image width="64rpx" height="64rpx" :src="menu.icon"></u-image>
  7. <text class="u-m-t-24">{{menu.title}}</text>
  8. </view>
  9. </view>
  10. </scroll-view>
  11. </template>
  12. <script>
  13. /**
  14. * di-scroll-menu-list 滚动菜单
  15. * @description 单行滚动菜单,可以用在首页单行展示多个菜单
  16. * @property {Array} menu-list= [{title: '', icon: '', path: ''}]
  17. * @event {Function} click 点击传入当前menu的参数
  18. */
  19. export default {
  20. methods: {
  21. /**
  22. * 点击触发
  23. * @param {Object} menu
  24. */
  25. handleClick(menu) {
  26. menu.path && uni.navigateTo({
  27. url: menu.path
  28. })
  29. this.$emit('click', menu)
  30. }
  31. },
  32. props: {
  33. menuList: {
  34. type: Array,
  35. require: true
  36. }
  37. }
  38. }
  39. </script>
  40. <style scoped lang="scss">
  41. .di-scroll-menu-list {
  42. white-space: nowrap;
  43. width: 100%;
  44. &__item {
  45. display: inline-block;
  46. &-body {
  47. display: flex;
  48. flex-direction: column;
  49. align-items: center;
  50. }
  51. }
  52. }
  53. </style>