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

如何为MUI 5版本TextField组件的禁用元素添加悬停样式

解决MUI禁用TextField悬停时文字变色问题

问题核心在于禁用状态的元素默认带有pointer-events: none,导致hover事件无法触发;同时WebkitTextFillColor的优先级高于普通color属性,直接设置color不会生效。

修改后的代码如下:

import * as React from "react";

import TextField from "@mui/material/TextField";
import { AdapterDayjs } from "@mui/x-date-pickers/AdapterDayjs";
import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider";
import { DatePicker } from "@mui/x-date-pickers/DatePicker";

export default function BasicDatePicker() {
  const [value, setValue] = React.useState(null);

  return (
    <LocalizationProvider dateAdapter={AdapterDayjs}>
      <DatePicker
        label="Basic example"
        value={value}
        onChange={(newValue) => {
          setValue(newValue);
        }}
        renderInput={(params) => (
          <TextField
            {...params}
            disabled
            sx={{
              // 给禁用的TextField根元素开启指针事件,让hover能触发
              '&.MuiTextField-root.Mui-disabled': {
                pointerEvents: 'auto',
              },
              '& .MuiInputBase-input.Mui-disabled': {
                WebkitTextFillColor: 'pink',
              },
              // 悬停时修改WebkitTextFillColor而非color,保证优先级
              '&:hover .MuiInputBase-input.Mui-disabled': {
                WebkitTextFillColor: 'green',
              }
            }}
          />
        )}
      />
    </LocalizationProvider>
  );
}

关键调整说明:

  • 开启指针事件:给禁用状态的TextField根元素设置pointer-events: auto,让鼠标悬停事件能够被捕获。
  • 调整颜色属性:hover时修改WebkitTextFillColor而非color,因为前者是专门用于覆盖输入框文字填充色的属性,优先级更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 08:43:18