tailwindcss-px-to-responsive
Version:
A Tailwind plugin for converting pixel values to rem, vw, vh units. It helps you to create Design-to-Development workflow easier and faster.
30 lines (29 loc) • 1.19 kB
JavaScript
import { useEffect, useState } from "react";
export default function useResizeHook(observeResize = true) {
const [actualWidth, setActualWidth] = useState(1920);
const [actualHeight, setActualHeight] = useState(1080);
function handleResize() {
const logicalWidth = window.innerWidth;
const logicalHeight = window.innerHeight;
const dpr = window.devicePixelRatio;
const actualWidth = logicalWidth * dpr;
const actualHeight = logicalHeight * dpr;
document.documentElement.style.setProperty("--vh", `${100 / actualHeight}vh`);
document.documentElement.style.setProperty("--vw", `${100 / actualWidth}vw`);
setActualWidth(actualWidth);
setActualHeight(actualHeight);
}
useEffect(() => {
// 초기 렌더링 시 한번 실행
handleResize();
if (observeResize) {
window.addEventListener("resize", handleResize);
}
return () => {
if (observeResize) {
window.removeEventListener("resize", handleResize);
}
};
}, [actualWidth, actualHeight, observeResize]);
return { actualWidth, actualHeight };
}