element-plus中el-sub-menu样式修改

<style lang="scss">
.el-sub-menu__title.el-tooltip__trigger.el-tooltip__trigger:hover {
    color: red;
}
</style>

注意<style lang="scss">里不要加scoped!!!!

加了就没效果了,原因可能是:当<style>标签有scoped时,它的 CSS 样式只作用于当前组件中的元素,父组件的样式将不会渗透到子组件中。而el-sub-menu的标题(上面例子即是“第二”)是通过插槽方式显示的。

完整代码:

<template>
	<div class="menu_bar">
		<el-menu background-color="rgb(0, 0, 0)" active-text-color="red" :default-active="activeIndex"
			class="el-menu" mode="horizontal" @select="handleSelect">
			<el-menu-item index="1">第一</el-menu-item>
			<el-sub-menu index="2" popper-class="test">
				<template #title>第二</template>
				<el-menu-item index="2-1">item one</el-menu-item>
				<el-menu-item index="2-2">item two</el-menu-item>
				<el-menu-item index="2-3">item three</el-menu-item>
			</el-sub-menu>
			<el-menu-item index="3">第三</el-menu-item>
			<el-menu-item index="4">第四</el-menu-item>
		</el-menu>
	</div>
</template>

<script>
import { defineComponent, ref, reactive } from 'vue'

export default defineComponent({
	name: 'menu_bar',
	components: {
	},
	setup() {

		const activeIndex = ref('1')
		const activeIndex2 = ref('1')
		const handleSelect = (key, keyPath) => {
			console.log(key, keyPath)

		}
		return {
			activeIndex,
			activeIndex2
		}
	}
})
</script>

<style lang="scss" scoped>

// 取消下划线
.el-menu--horizontal,
.el-menu-item,
.el-menu-item.is-active,
::v-deep .el-menu--horizontal>.el-sub-menu .el-sub-menu__title {
	border-bottom: none;
}

// 一级菜单颜色
.el-menu-item,
::v-deep .el-sub-menu .el-sub-menu__title {
	color: #fff;
}

// 有二级菜单的标题及子菜单菜单字体颜色
.el-menu--horizontal .el-menu .el-menu-item,
.el-menu--horizontal .el-menu .el-sub-menu__title {
	color: #fff !important;
}

// 二级菜单hover状态下字体颜色
.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,
.el-menu--horizontal .el-menu-item:not(.is-disabled):hover {
	color: red  !important;
}
</style>


<style lang="scss" >
// 有二级菜单的标题时鼠标悬停的颜色
.el-sub-menu__title.el-tooltip__trigger.el-tooltip__trigger:hover {
    color: red;
}
</style>

  • 11
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
你可以使用`lazy`属性来实现隐藏所有子菜单,该属性默认为false,设置为true后,只有当点击父级菜单时才会动态加载子菜单。 例如: ```html <el-cascader :options="options" :props="{ lazy: true }" ></el-cascader> ``` 这样就可以实现隐藏所有子菜单。如果需要动态加载子菜单,可以在父级菜单的`load`方法返回子菜单数据。 ```javascript options: [ { value: 'zhinan', label: '指南', children: [], loading: false }, { value: 'zujian', label: '组件', children: [], loading: false } ], methods: { load(node, resolve) { if (node.level === 0) { this.loadData(node, resolve, this.options) } else if (node.level === 1) { this.loadData(node, resolve, this.options[1].children) } else { this.loadData(node, resolve, []) } }, loadData(node, resolve, children) { if (node.level === 0) { children.push({ value: 'shejiyuanze', label: '设计原则', children: [ { value: 'yizhi', label: '一致' }, { value: 'fankui', label: '反馈' } ] }) } else if (node.level === 1) { children.push({ value: 'basic', label: 'Basic', children: [ { value: 'layout', label: 'Layout 布局' }, { value: 'color', label: 'Color 色彩' } ] }) } setTimeout(() => { resolve(children) }, 1000) } } ``` 这里的`load`方法根据`node.level`的值来判断当前节点是一级菜单还是二级菜单,然后根据父级菜单的`children`属性来动态加载子菜单数据。在加载完成后,通过`resolve`方法将数据返回给`el-cascader`组件。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值