React MUI TextField 스타일 적용시키기

minjeong·2023년 1월 30일
1

다크 모드를 지원하는 사이드 프로젝트를 개발하던 도중, React MUI의 TextField 컴포넌트를 모드에 따라 색상을 달리 설정하여 사용하고자 스타일을 커스터마이징 하는 방법을 알아내 사용하였다.

const InputTextField = styled(TextField)({
  '& label': {
    // placeholder text color
    color: 'var(--sub-text)'
  },
  '& label.Mui-focused': {
    // 해당 input focus 되었을 때 placeholder text color
    // floatng label을 사용할 때 처리 필요하다
    color: 'var(--primary)',
  },
  '& label.Mui-error': {
    color: '#d32f2f',
  },
  '& .MuiOutlinedInput-root': { 
    color: 'var(--text)',
    '& fieldset': {
      borderColor: 'var(--sub-text)',
    },
  },
});

// component
export function page(props) {
  return (
    <div>
      <InputTextField />
    </div>
  );
}
  • <TextField /> ui 컴포넌트가 렌더링 된 html을 보면 label로 placeholder가 구현되어 있기 때문에 label에 color를 적용해줘야 했다.
  • Input의 기본 border color를 변경해주고 싶었는데 fieldset 태그의 스타일링을 바꿔야하는 것이었다. border-color가 아닌 borderColor라는 정해진 key값에 설정해주어야 하는 것이 포인트.
before after
그 결과 다크 모드에서 아예 색상이 묻혀 죽어있던 인풋이 살아났다!
profile
프론트엔드 개발자 👩‍💻

2개의 댓글

comment-user-thumbnail
2024년 6월 19일

안녕하세요.
저도 같은 문제를 찾다가 검색해서 덕분에 해결하게되어 감사합니다.
혹시 아래 해결방안을 어떻게 찾아내게 되셨는지 알려주실 수 있을까요?

Input의 기본 border color를 변경해주고 싶었는데 fieldset 태그의 스타일링을 바꿔야하는 것이었다. border-color가 아닌 borderColor라는 정해진 key값에 설정해주어야 하는 것이 포인트.
1개의 답글