You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Button鼠标悬停切换背景色,移开后恢复原状?

实现Button悬停切换背景色及平滑过渡方案

完全可以实现悬停切换背景色的效果,也能通过transition属性实现平滑过渡,给你两种可行方案:

方案一:内联事件+状态控制(快速实现)

通过React的useState管理背景色状态,结合鼠标事件切换状态,同时在样式中加入过渡效果:

import { useState } from 'react';

// 组件内部
const [bgColor, setBgColor] = useState('#E3E3E3');

<Button
  outline
  color="secondary"
  style={{
    marginLeft: 5,
    borderRadius: '5px',
    padding: '2px',
    background: bgColor,
    color: '#000',
    fontSize: 7,
    marginTop: 0,
    transition: 'background 0.1s ease-in-out' // 加入平滑过渡
  }}
  onClick={() => { handleCopy(player) }}
  onMouseEnter={() => setBgColor('#CCCCCC')} // 自定义悬停背景色
  onMouseLeave={() => setBgColor('#E3E3E3')} // 离开时恢复原背景色
>
  <span className="enhanced-sports enhanced-sports-copy4" />
</Button>

方案二:CSS类控制(推荐,更易维护)

把样式抽离到CSS文件中,利用CSS的:hover伪类实现悬停效果,同时添加过渡:

第一步:添加自定义CSS类

.custom-copy-button {
  margin-left: 5px;
  border-radius: 5px;
  padding: 2px;
  background-color: #E3E3E3;
  color: #000;
  font-size: 7px;
  margin-top: 0;
  transition: background-color 0.1s ease-in-out; /* 平滑过渡 */
}

.custom-copy-button:hover {
  background-color: #CCCCCC; /* 自定义悬停背景色 */
}

第二步:修改Button组件

<Button
  outline
  color="secondary"
  className="custom-copy-button" // 使用自定义CSS类
  onClick={() => { handleCopy(player) }}
>
  <span className="enhanced-sports enhanced-sports-copy4" />
</Button>

说明:如果你的Button是Material-UI等UI库的组件,可能需要通过classes属性或者sx属性注入样式,核心逻辑都是利用:hover伪类和transition属性实现效果。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 22:20:39