728x90
const [maxDetailFontSize, setDetailMaxFontSize] = useState(12);
const [minDetailFontSize, setDetailMinFontSize] = useState(5);
const [windowWidth, setWindowWidth] = useState(window.innerWidth);
<AutoTextSize
mode='oneline'
maxFontSizePx={maxDetailFontSize}
minFontSizePx={minDetailFontSize}
key={windowWidth} // key 속성을 통해 강제로 리렌더링 유도
>
{time}{t('atTime')} <span style={{color:'#00FF62'}}>{name}</span>{t('rouletteCreated')}
</AutoTextSize>
// 리사이즈 이벤트 리스너 추가
const handleResize = () => {
const newWindowWidth = window.innerWidth;
// 윈도우 크기에 따라 maxFontSize와 minFontSize를 조정
if (newWindowWidth < 500) {
setMaxFontSize(18);
setDetailMaxFontSize(8);
setMinFontSize(6);
setDetailMinFontSize(5);
} else if (newWindowWidth < 800) {
setMaxFontSize(22);
setDetailMaxFontSize(10);
setMinFontSize(8);
setDetailMinFontSize(8);
} else {
setMaxFontSize(25);
setDetailMaxFontSize(12);
setMinFontSize(10);
setDetailMinFontSize(10);
}
// 윈도우 너비 상태 업데이트
setWindowWidth(newWindowWidth);
};
윈도우 리사이즈 이벤트를 받아와서 그에 따른 max, min 사이즈 설정하기
AutoTextSize
npm install AutoTextSize
후 사용하면 됩니다.
728x90
'웹개발' 카테고리의 다른 글
[React.js/Next.js] card 를 반응형으로 디자인하기 (feat. width와 heigth 비율유지) (0) | 2024.11.12 |
---|---|
[Next.js] unset 을 통해 속성을 초기값으로 되돌리기 (0) | 2024.11.12 |
[React] useTranslation 을 통해 다국어 지원하기 (feat.i18next) (0) | 2024.10.14 |
[css] position 속성 (0) | 2024.09.27 |
[React] React Context API로 상태 공유하기 (0) | 2024.09.09 |