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

React.js中使用Material UI palette颜色无法修改边框颜色

问题原因

MUI 的 sx 属性解析规则中,borderRight: 1 会被默认转换为 border-right: 1px solid currentColor,其中 currentColor 继承当前元素的文本颜色(默认黑色)。你的代码中 borderColor 写在 borderRight 前面,CSS 规则遵循后写的属性优先级更高的原则,因此 borderRight 隐式携带的颜色设置覆盖了你自定义的 borderColor。

解决方案

你可以任选以下一种方式修改即可生效:

方法1:调整属性顺序

把 borderColor 放到 borderRight 之后,让自定义颜色优先级更高:

const SideNav = () => {
    return (
        <Stack
            sx={{
                bgcolor: 'background.paper',
                borderRight: 1,
                borderColor: 'grey.500', //移到borderRight后面即可生效
                top: 0,
                left: 0,
                position: 'fixed',
                width: 80,
                height: 1
            }}
        >
            <Stack alignItems="center" spacing={2}>
                <IconButton color="primary" aria-label="delete" size="large">
                    <DeleteIcon fontSize="medium" />
                </IconButton>
            </Stack>
        </Stack>
    )
}

方法2:直接在borderRight中定义完整样式

直接通过 sx 的主题回调写全边框属性,无需单独设置 borderColor:

<Stack
  sx={{
    bgcolor: 'background.paper',
    borderRight: (theme) => `1px solid ${theme.palette.grey[500]}`,
    top: 0,
    left: 0,
    position: 'fixed',
    width: 80,
    height: 1
  }}
>

额外提示

你代码中的 height: 1 在 MUI 的 sx 规则中会被解析为 height: 100%,如果需要让导航栏铺满视口高度,建议修改为 height: '100vh',避免父元素高度不足导致导航栏显示异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:45:03