当前位置:首页 > uni-app

uniapp分类菜单

2026-03-05 03:42:53uni-app

uniapp分类菜单实现方法

横向滚动分类菜单

使用scroll-view组件实现横向滚动效果,结合flex布局展示分类项。示例代码:

<scroll-view scroll-x class="category-scroll">
  <view class="category-item" v-for="(item, index) in categories" :key="index">
    {{item.name}}
  </view>
</scroll-view>
.category-scroll {
  white-space: nowrap;
  width: 100%;
}
.category-item {
  display: inline-block;
  padding: 10px 15px;
  margin-right: 10px;
  background-color: #f5f5f5;
  border-radius: 15px;
}

左侧分类+右侧内容布局

采用flex布局分为左右两部分,左侧固定宽度显示分类,右侧展示对应内容:

<view class="container">
  <scroll-view scroll-y class="left-menu">
    <view v-for="(item,index) in menuList" :key="index" 
          @click="changeMenu(index)" 
          :class="['menu-item', activeIndex===index?'active':'']">
      {{item.name}}
    </view>
  </scroll-view>

  <scroll-view scroll-y class="right-content">
    <!-- 动态内容 -->
  </scroll-view>
</view>
.container {
  display: flex;
  height: 100vh;
}
.left-menu {
  width: 25%;
  background: #f8f8f8;
}
.right-content {
  width: 75%;
}
.menu-item {
  padding: 15px;
  text-align: center;
}
.active {
  color: #ff0000;
  background: #fff;
}

多级分类菜单

实现嵌套式多级分类结构,使用递归组件或多层v-for:

<view class="multi-level">
  <view v-for="(item,index) in categories" :key="index" class="level1">
    <view @click="toggleSub(index)" class="level1-title">
      {{item.name}}
      <uni-icons :type="item.expand?'arrowup':'arrowdown'"></uni-icons>
    </view>
    <view v-show="item.expand" class="level2">
      <view v-for="(sub,subIndex) in item.children" :key="subIndex" class="level2-item">
        {{sub.name}}
      </view>
    </view>
  </view>
</view>

动态数据绑定

在script部分定义分类数据和处理方法:

export default {
  data() {
    return {
      activeIndex: 0,
      categories: [
        {name: '全部', id: 0},
        {name: '食品', id: 1},
        {name: '电子产品', id: 2}
      ],
      menuList: [
        {name: '分类1', children: [...]},
        {name: '分类2', children: [...]}
      ]
    }
  },
  methods: {
    changeMenu(index) {
      this.activeIndex = index
      // 加载对应内容
    },
    toggleSub(index) {
      this.$set(this.menuList[index], 'expand', !this.menuList[index].expand)
    }
  }
}

性能优化建议

分类数据较多时使用虚拟列表技术,通过uni-app的组件或第三方组件如mescroll-uni实现懒加载

添加分类图标增强视觉效果,使用uni-icons组件或自定义图片:

uniapp分类菜单

<view class="category-with-icon">
  <uni-icons type="home" size="20"></uni-icons>
  <text>首页</text>
</view>

标签: 菜单uniapp
分享给朋友:

相关文章

css制作横向菜单

css制作横向菜单

使用浮动(Float)实现横向菜单 将菜单项的 display 属性设置为 float: left,使列表项横向排列。清除浮动避免影响后续布局。 ul.horizontal-menu { lis…

css菜单制作

css菜单制作

CSS 菜单制作方法 水平导航菜单 使用 display: inline-block 或 flexbox 可以轻松创建水平导航菜单。以下是一个基本示例: <nav> <ul c…

css制作菜单

css制作菜单

CSS 制作菜单的方法 使用 CSS 可以制作多种风格的菜单,包括水平菜单、垂直菜单、下拉菜单等。以下是几种常见的实现方式。 水平菜单 水平菜单通常用于导航栏,可以通过 display: inlin…

uniapp部署到服务器

uniapp部署到服务器

部署准备 确保本地开发环境已完成项目构建,生成静态文件(H5端为/dist/build/h5目录)。检查服务器环境是否安装Nginx/Apache等Web服务软件,并配置好域名解析。 上传文件 通过…

uniapp接入

uniapp接入

接入UniApp的基本流程 UniApp是一个基于Vue.js的跨平台开发框架,支持一次开发,多端发布。以下是接入UniApp的基本流程: 环境准备 确保已安装Node.js(建议版本12+)和HB…

uniapp grid

uniapp grid

uniapp grid 布局实现方法 在 uniapp 中实现 grid 布局可以通过多种方式完成,包括使用内置组件、CSS Grid 或第三方插件。以下是几种常见的实现方法: 使用 uni-gri…