当前位置:首页 > 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布局分为左右两部分,左侧固定宽度显示分类,右侧展示对应内容:

uniapp分类菜单

<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部分定义分类数据和处理方法:

uniapp分类菜单

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组件或自定义图片:

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

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

相关文章

vue菜单tab实现

vue菜单tab实现

实现Vue菜单Tab的步骤 在Vue中实现菜单Tab功能,可以通过动态组件或条件渲染来实现。以下是几种常见的方法: 使用动态组件 动态组件允许根据当前选中的Tab动态切换显示内容。定义一个组件数组…

uniapp隐藏滚动条

uniapp隐藏滚动条

在UniApp中隐藏滚动条可以通过以下几种方法实现,具体根据使用场景选择: 全局样式设置(APP/H5) 通过修改全局CSS样式隐藏滚动条,适用于所有页面: ::-webkit-scrollb…

uniapp分享到facebook

uniapp分享到facebook

使用uniapp分享到Facebook的方法 在uniapp中实现分享到Facebook功能,可以通过调用原生插件或使用第三方SDK。以下是具体实现方式: 安装Facebook SDK插件 在uni…

uniapp 头条

uniapp 头条

uniapp 适配今日头条(字节跳动小程序)的方法 环境配置 确保HBuilderX版本在2.7.0以上,manifest.json中勾选"字节跳动小程序"平台。在开发者工具中配置正确的AppID和项…

uniapp 线程

uniapp 线程

uniapp 线程的概念 在 uniapp 中,线程的概念与原生应用开发有所不同。由于 uniapp 是基于 JavaScript 的运行环境,它并不直接支持多线程操作。JavaScript 本身是单…

css二级菜单制作

css二级菜单制作

使用纯CSS制作二级菜单 HTML结构采用嵌套的<ul>和<li>标签,主菜单项包含子菜单: <nav class="menu"> <ul>…