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

如何在Styled Components中禁用Material-UI按钮的悬浮效果

修复styled-components修改Material-UI Button hover样式无效的问题

嘿,我懂你遇到的困扰——想用styled-components给Material-UI的Button加hover样式来禁用悬浮效果,但设置完全没起作用对吧?这其实是因为Material-UI组件的默认样式优先级比咱们自定义的样式高,咱们可以用这几种方法解决:

方法1:快速提升样式优先级

虽然一般不推荐滥用!important,但如果是简单场景或者想快速验证效果,这招最直接:

import Button from 'material-ui/Button'
import styled from 'styled-components'

const StyledButton = styled(Button)`
  &:hover {
    background: none !important;
  }
`

export const SubmitButton = ({ onClick }) => {
  return (
    <StyledButton variant="raised" onClick={onClick}>
      login
    </StyledButton>
  )
}

方法2:精准匹配Material-UI类名(更优雅)

Material-UI的Button组件会给不同类型的按钮添加特定类名,比如你用的raised类型按钮对应MuiButton-contained类,咱们直接针对这个类的hover状态写样式,就能稳稳覆盖默认效果:

import Button from 'material-ui/Button'
import styled from 'styled-components'

const StyledButton = styled(Button)`
  &.MuiButton-contained:hover {
    background-color: transparent;
    box-shadow: none; // 如果连悬浮时的阴影也想去掉,可以加上这行
  }
`

export const SubmitButton = ({ onClick }) => {
  return (
    <StyledButton variant="raised" onClick={onClick}>
      login
    </StyledButton>
  )
}

方法3:用Material-UI原生方式自定义样式

如果不想依赖styled-components的嵌套写法,也可以直接用Material-UI的makeStyles来定义样式,通过classes属性传入:

import Button from 'material-ui/Button'
import { makeStyles } from '@material-ui/core/styles'

const useStyles = makeStyles({
  customHover: {
    '&:hover': {
      background: 'none',
      boxShadow: 'none'
    }
  }
})

export const SubmitButton = ({ onClick }) => {
  const classes = useStyles()
  return (
    <Button 
      variant="raised" 
      onClick={onClick}
      classes={{ containedHover: classes.customHover }}
    >
      login
    </Button>
  )
}

核心逻辑就是:Material-UI的内置样式通过特定类名控制组件状态,只要让咱们的自定义样式优先级和它一致或者更高,就能覆盖默认的悬浮效果啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:04:08