homepage

Brown Markup Library

useWindowZoomLevel

Useful for when you need to dynamically set elements based on the window zoom/magnification level set by the user.


TypeScript

import { useState, useEffect } from "react";

export default function useWindowZoomLevel() { const [zoomLevel, setZoomLevel] = useState<number>(100); useEffect(() => { function getZoomLevel() { const { outerWidth, visualViewport } = window; const level = Math.round( (outerWidth / (visualViewport?.width ?? 1)) * 100 ); return level; } setZoomLevel(getZoomLevel()); function handleResize() { setZoomLevel(getZoomLevel()); } window.addEventListener("resize", handleResize); return () => window.removeEventListener("resize", handleResize); }, []); return { zoomLevel }; }

JavaScript

import { useState, useEffect } from "react";

export default function useWindowZoomLevel() { const [zoomLevel, setZoomLevel] = useState(100); useEffect(() => { function getZoomLevel() { const { outerWidth, visualViewport } = window; const level = Math.round( (outerWidth / (visualViewport?.width ?? 1)) * 100 ); return level; } setZoomLevel(getZoomLevel()); function handleResize() { setZoomLevel(getZoomLevel()); } window.addEventListener("resize", handleResize); return () => window.removeEventListener("resize", handleResize); }, []); return { zoomLevel }; }