- 商品分类数据,包括分类名称和对应的商品列表
- 点击弹出 列表的内容
展示效果如下:
代码展示
①div部分
<view class="container"><view class="menu-bar"><view class="menu"><view class="menu-scroll"><view v-for="(m, i) in menus" :key="m":class="['menu-item', i === activeIndex && 'active']" @click="activeIndex = i">{{ m }}</view></view><view :class="['unfold', visible && 'up']" @click="visible = !visible"style="background-color: #F5F9FF;margin-top: 6rpx;"><u-icon name="arrow-down" size="15" style=""></u-icon></view></view><view v-if="visible" :class="['all-menu', visible && 'active']"><view class="menu-item h3">全部分类</view><view v-for="(m, i) in menus" :key="m" :class="['menu-item', i === activeIndex && 'active']"@click="activeIndex = i">{{ m }}</view></view></view><view v-if="visible" class="modal" @click="visible = false" /></view>
②js部分
menus: ["首页", "手机", "爱车", "百货", "男装", "饰品", "美妆", "电脑", "钟表眼镜"],activeIndex: 0,visible: false,
③css部分
::-webkit-scrollbar {display: none;}.container {position: relative;z-index: 100;width: 375px;// height: 812px;background-color: #f1f1f1;}.menu-bar {position: relative;z-index: 10;}.menu {display: flex;width: 100%;height: 100%;padding: 16px 12px 12px 10px;background-color: #F5F9FF;box-sizing: border-box;}.menu .menu-scroll {display: flex;width: 100%;overflow-x: scroll;}.menu-item {padding: 0 7px;flex-shrink: 0;font-size: 14px;}.menu-item.active {color: #478CF6;font-weight: 700;}.all-menu {display: grid;grid-template-columns: repeat(5, 1fr);gap: 6px 4px;padding: 16px 8px 20px 24px;background-color: #fff;border-radius: 0 0 16px 16px;transition: all 0.3s;}.all-menu.active {padding: 16px 8px 20px;height: auto;}.all-menu .menu-item {background-color: #f5f5f5;font-size: 12px;display: flex;align-items: center;justify-content: center;padding: 8px;border-radius: 20px;box-sizing: border-box;border: 1px solid #f5f5f5;}.all-menu .menu-item.h3 {background: none;border-color: #fff;}.all-menu .menu-item.active {background-color: #fff;border-color: #478CF6;}.modal {position: absolute;top: 0;left: 0;// background-color: rgba(0, 0, 0, 0.3);width: 100%;height: 100%;}
以上为所有,即可粘贴进行测试。