修改Element-ui中的Sidebar列表下拉框子项的宽度

问题描述

vue项目引入element-ui的侧边栏时,当调整sidebar侧边栏大小为180px时,下拉列表子项的宽度会超出(默认为200px)。

更新

  1. 加入方式二进行修改更简便

如图所示:

在这里插入图片描述


原因分析:

列表的默认样式中的子项宽度未能正确修改成和父级的一样,
即 < ul > 下的< li >未能和< ul >保持一样的宽度。


解决方案1:

1、浏览器F12打开元素选择,点击对应的元素选项:
在这里插入图片描述
2、找到样式区域,看准min-width:200px配置项:
在这里插入图片描述
3、根据提示找到路径:node_modules/element-ui/lib/theme-chalk/index.css
在这里插入图片描述
4、打开css文件找到对应的配置项:
在这里插入图片描述
min-width:200px修改为min-width: 100%;

解决方案2:

  • 在对应的SideBar样式中加入:

解决方案2:

  • 在对应的SideBar样式中加入:
    /deep/ .el-submenu .el-menu-item{ min-width:100%}
    
  • 效果是一样的,而且重新安装依赖后不会影响。

效果展示:

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要自定义 `sidebar-item`,需要按照以下步骤进行: 1. 在 `NavMenu` 定义 `sidebar-item` 的模板,可以使用 `template` 或 `slot`。 2. 在 `sidebar-item` 模板内部添加需要自定义的内容。 3. 使用 `item-scope` 作为 `sidebar-item` 模板的参数,可以获取到该 `sidebar-item` 的数据。 4. 使用 `$scopedSlots` 获取 `sidebar-item` 的插槽,并渲染自定义内容。 以下是自定义 `sidebar-item` 的示例代码: ```html <template> <div> <el-nav-menu :default-active="activeIndex" class="el-menu-vertical-demo" @select="handleSelect"> <template v-for="(item, index) in menuList"> <el-submenu v-if="item.children" :index="item.path" :key="index"> <template slot="title"> <i :class="item.icon"></i> <span slot="title">{{ item.title }}</span> </template> <el-menu-item v-for="(child, i) in item.children" :index="child.path" :key="i">{{ child.title }}</el-menu-item> </el-submenu> <el-menu-item v-else :index="item.path" :key="index"> <!-- 定义 sidebar-item 的模板 --> <template v-slot:default="itemScope"> <div class="sidebar-item"> <i :class="itemScope.item.icon"></i> <!-- 添加自定义内容 --> <span>{{ itemScope.item.title }}</span> <span class="count">{{ itemScope.item.count }}</span> </div> </template> </el-menu-item> </template> </el-nav-menu> </div> </template> <script> import { mapState } from 'vuex'; export default { name: 'SidebarMenu', data() { return { activeIndex: '', menuList: [ { title: '首页', path: '/', icon: 'iconfont icon-home', }, { title: '文章', path: '/article', icon: 'iconfont icon-article', count: 10, children: [ { title: '技术', path: '/article/tech', }, { title: '生活', path: '/article/life', }, ], }, ], }; }, mounted() { this.activeIndex = this.$route.path; }, methods: { handleSelect(index) { this.activeIndex = index; this.$router.push(index); }, }, computed: { ...mapState(['menu']), }, }; </script> <style> .sidebar-item { display: flex; align-items: center; } .sidebar-item i { font-size: 14px; margin-right: 10px; } .sidebar-item span { font-size: 14px; margin-right: 10px; } .sidebar-item .count { background-color: #f56c6c; color: #fff; font-size: 12px; padding: 0 4px; border-radius: 8px; } </style> ``` 在上面的示例,我们在 `sidebar-item` 模板添加了一个计数器,用于显示文章数量。可以看到,我们使用 `itemScope` 获取到了当前 `sidebar-item` 的数据,并使用 `$scopedSlots` 渲染了自定义内容。同时,我们还定义了一些样式,使得自定义内容更加美观。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值