You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

PrimeNG禁用按钮Hover时意外变色,如何修复样式异常?

解决PrimeNG按钮禁用时Hover样式变化的问题

我懂你的困扰——禁用状态的按钮hover时不该乱改样式,现在的CSS没区分开启用和禁用的场景,咱们来调整一下:

问题出在哪

你当前的hover样式.ui-button.ui-button-success:hover会匹配所有ui-button-success类的按钮,包括已经加了ui-state-disabled禁用类的按钮,所以禁用状态下hover还是会触发样式变化。而且你之前写的.ui-widget:hover:disabled这种选择器写法也不太准确,优先级和匹配逻辑都有问题。

修复后的CSS代码

调整选择器,让hover样式只作用于未禁用的按钮,同时确保禁用状态的样式稳定:

/* 基础样式:覆盖默认启用状态和禁用状态的按钮样式 */
.ui-button-success.color,
.ui-button-success.ui-state-disabled {
  background-color: white !important;
  color: #00965E !important;
}

/* 仅对启用状态的按钮生效hover样式 */
.ui-button.ui-button-success.color:not(.ui-state-disabled):hover {
  background-color: #00965E !important;
  color: white !important;
}

简单解释

  1. 先统一基础样式:不管按钮是启用还是禁用,默认都用白色背景+绿色文字,避免样式混乱。
  2. 给hover样式加上:not(.ui-state-disabled)伪类,这样只有当按钮没有禁用类的时候,hover才会触发背景和文字颜色的切换。
  3. 保留!important是因为PrimeNG自带的组件样式优先级较高,确保咱们的自定义样式能覆盖默认样式。

另外,你的按钮模板里的disabled判断可以简化得更直观:

<button pButton type="submit" label="Launch @RT" class="ui-button-success color" [disabled]="groupList.length === 0 && ejList.length === 0"></button>

内容的提问来源于stack exchange,提问作者infodev

火山引擎 最新活动