elementUI+vue实现商城分类导航弹出二级菜单悬浮展示(鼠标经过时显示)

效果

在这里插入图片描述
二级菜单显示是用了elementUI的两个组件:el-tooltip + el-cascader-panel

vue代码

<!-- 分类 -->
<div class="category-box">
    <span class="category-label">分类</span>
    <div class="flex-1">
        <div class="category-list">
            <el-tooltip effect="light" content="" placement="bottom" popper-class="category-two-menu-box" v-for="item in categoryList" :key="item.id" :open-delay="300">
                <div slot="content" v-if="item.children.length > 0">
                    <el-cascader-panel v-model="currentActiveTwo" :options="item.children" @change="handleChangeCategoryTwo($event, item.id)" :props="{ expandTrigger: 'hover' }"></el-cascader-panel>
                </div>
                <span :class="[categoryActive == item.id ? 'category-item-active':'']" class="category-item" @click="handleChangeCategory(item.id)">{{item.label}}</span>
            </el-tooltip>
        </div>
    </div>
</div>
categoryList = [
        { value: '', label: '全部', children:[]},
        { value: '服饰内衣', label: '服饰内衣', children: [{value: '女装', label: '女装' },{value: '男装', label: '男装' },{value: '婴童装/亲子装', label: '婴童装/亲子装' },{value: '14', label: '内衣/袜子' },{value: '15', label: '家居服' },{value: '16', label: '其他' }] },
        { value: '食品饮料', label: '食品饮料', children: [{value: '零食/坚果/特产', label: '零食/坚果/特产' },{value: '酒水/饮料', label: '酒水/饮料' },{value: '茶', label: '茶' },{value: '粮油米面/南北干货/调味品', label: '粮油米面/南北干货/调味品' },{value: '乳品/咖啡/冲调', label: '乳品/咖啡/冲调' },{value: '方便速食/速冻食品', label: '方便速食/速冻食品' },{value: '其他', label: '其他' }] }]
categoryActive = '' // 当前选中的一级
currentActiveTwo = '' // 当前选中的二级
// 一级菜单点击事件
handleChangeCategory(e){
	this.categoryActive = e
    this.currentActiveTwo = ''
}
// 二级菜单点击事件
handleChangeCategoryTwo(e, bigC){
	this.categoryActive = bigC
    this.currentActiveTwo = e
}       
<style lang="less" scoped>
.category-box{
    display: flex;
    font-size: 14px;
    .category-label{
        min-width: 50px;
        color: #999;
        padding-top: 3px;
        padding-right: 15px;
    }
    .category-list{
        display: flex;
        flex-flow: row wrap;
        align-items: center;

        .category-item {
            margin: 0 10px 5px 0;
            padding: 4px 10px;
            color: #666;
            border-radius: 12px;
            outline: none;
            cursor: pointer;
            &-active{
                color: #ff7752;
                font-weight: 500;
                background-color: #ddebf8;
            }
        }
    }
}
.flex-1 {
    flex: 1;
}
</style>

覆盖element样式的部分,不能放在scoped里,需要直接放在style标签里

<style>
.category-two-menu-box.el-tooltip__popper.is-light{
    box-shadow: 0 2px 12px 0 #e1e3e6;
    border: 1px solid #f0f0f0;
}
.category-two-menu-box.el-tooltip__popper {
    padding: 0;
}
.category-two-menu-box .el-cascader-node:hover {
    color: #ff7752;
}
.category-two-menu-box .el-cascader-node.is-active {
    color: #ff7752;
}
.category-two-menu-box.el-tooltip__popper.is-light .el-cascader-panel.is-bordered {
    border-radius: 0;
    border: 0 none;
}
.category-two-menu-box.el-tooltip__popper.is-light .popper__arrow {
    border-bottom-color: #f0f0f0!important;
}
</style>
  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现在线商城商品的一级和二级展示,可以使用以下技术: 1. Java作为后端语言,使用Spring框架进行开发。 2. MySQL作为数据库,存储商品信息。 3. Servlet作为Java Web应用的核心控制器,处理HTTP请求和响应。 4. HTML和Vue.js作为前端技术,实现商品的展示和交互效果实现步骤如下: 1. 创建数据库表,包括商品分类表和商品表。商品分类表包括分类ID、分类名称、分类描述等字段;商品表包括商品ID、商品名称、商品价格、商品图片、商品描述、所属分类ID等字段。 2. 在Java中创建实体类,包括商品分类实体类和商品实体类。使用JPA或Mybatis等持久化框架,将实体类与数据库表进行映射。 3. 创建Servlet控制器类,处理HTTP请求和响应。在Servlet中通过JPA或Mybatis等持久化框架,查询数据库中的商品分类信息和商品信息,并将查询结果封装成JSON格式返回给前端。 4. 在前端使用HTML和Vue.js实现商品分类和商品的展示。使用Vue.js的组件化开发,将商品分类和商品列表封装成组件,方便复用和维护。 5. 实现商品分类的二级展示。在Vue.js中使用路由技术,根据商品分类ID跳转到对应的商品列表页,实现商品分类的二级展示。 6. 实现商品的搜索和排序功能。在前端使用Vue.js的双向绑定技术,实现商品的搜索和排序功能。在后端使用JPA或Mybatis等持久化框架,根据用户输入的关键字和排序条件进行查询,并将查询结果封装成JSON格式返回给前端。 综上所述,以上技术可以帮助我们实现在线商城商品的一级和二级展示

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值