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

如何阻止Material UI日期选择器获焦时标签上浮?

解决Material UI DatePicker获焦时标签上浮的问题

直接设置InputLabelProps={{ shrink: false }}无效,是因为DatePicker组件会根据输入框的聚焦/有值状态自动覆盖shrink属性。可以通过强制覆盖标签收缩时的样式来解决:

export default function BasicDatePicker() {
  return (
    <LocalizationProvider dateAdapter={AdapterDayjs}>
      <DatePicker
        label="dd"
        sx={{
          // 强制覆盖标签收缩时的样式,保持原位置
          '& .MuiInputLabel-shrink': {
            transform: 'translate(0, 1.5px) scale(1)',
            transformOrigin: 'top left',
          }
        }}
      />
    </LocalizationProvider>
  );
}

原理是:Material UI的MuiInputLabel-shrink类会在输入框聚焦/有值时触发,默认通过transform让标签上浮缩小。我们通过sx样式将这个类的transform重置为标签未收缩时的状态,从而阻止上浮效果。

如果需要更彻底的控制,也可以自定义输入组件,用TextField作为DatePicker的inputComponent,在TextField中更细致地控制标签行为:

export default function BasicDatePicker() {
  return (
    <LocalizationProvider dateAdapter={AdapterDayjs}>
      <DatePicker
        label="dd"
        inputComponent={({ ref, ...props }) => (
          <TextField
            {...props}
            inputRef={ref}
            InputLabelProps={{ shrink: false }}
            sx={{ '& .MuiInputLabel-shrink': { display: 'none' } }}
          />
        )}
      />
    </LocalizationProvider>
  );
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 16:05:01