Skip to content

Instantly share code, notes, and snippets.

@julenwang
Last active October 22, 2021 09:37
Show Gist options
  • Select an option

  • Save julenwang/84b46a0e3aa9ec787e08c138134657fd to your computer and use it in GitHub Desktop.

Select an option

Save julenwang/84b46a0e3aa9ec787e08c138134657fd to your computer and use it in GitHub Desktop.
useRem
import { useState } from 'react';
import { getRemNumber } from '@/utils/doms';
import { useEventListener } from 'ahooks/es';
import * as _ from 'lodash';
export function getRemNumber(): number {
const fontString = getComputedStyle(document.documentElement).getPropertyValue('font-size');
return Number(fontString.replace(/[^0-9.]/g, ''));
}
export function transformPxToRemString(length: number, precision = 3) {
return `${_.round(length / getRemNumber(), precision)}rem`;
}
function useRem(): number {
const [remNumber, setRemNumber] = useState(() => getRemNumber());
useEventListener(
'resize',
() => {
setRemNumber(getRemNumber());
},
{
target: window,
}
);
return remNumber;
}
export default useRem;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment