Arco Design按钮hover样式不生效怎么办?
在用Arco Design的Button组件时,给按钮加了hover样式,但鼠标悬停完全没反应。尝试过加!important也不行,怎么回事啊?
我这样写的:
.custom-btn:hover { background-color: #ff4d4f !important; }
但hover效果就是不触发,正常点击事件倒是能用。
完整代码结构是这样的:
<template>
<a-button class="custom-btn">测试按钮</a-button>
</template>
<style>
.custom-btn:hover {
background-color: #ff4d4f !important;
color: white !important;
}
</style>
查过开发者工具发现样式被组件内部的CSS变量覆盖了,但不知道该怎么正确覆盖Ant Design的样式层级…
你需要覆盖组件内部的CSS变量来实现hover效果,而不是直接写background-color。正确的做法是用组件提供的变量覆盖方式,比如这样:
.custom-btn {
--arcoblue-6: #ff4d4f;
--arcoblue-5: #ff4d4f;
}
然后你再写hover状态的时候,需要加上对应的伪类和变量:
.custom-btn:hover {
--arcoblue-6: #ff4d4f;
--arcoblue-5: #ff4d4f;
}
如果你用的是Arco Design Vue版本,可能还需要在组件上加上hover属性才会生效:
不过更稳妥的做法是用class覆盖的方式,我之前试过直接写变量有时候也会失效。可以试试用class覆盖:
.arco-btn-custom-hover:hover {
background-color: #ff4d4f !important;
color: white !important;
}
然后使用的时候加上这个class:
这样基本就能绕过组件内部的样式限制了。我当时为了一个hover效果折腾了大半天,最后发现是组件内部封装得太死了,直接写样式覆盖不了,必须用class或者组件提供的变量方式才行。