vw、vh
vwDiv = (300px / document.documentElement.clientWidth ) * 100vw
rem
- 拿 1920 * 1080 的标准屏幕大小为例,将屏幕分为10份,先计算rem 的基准值: 1920 / 10 = 192
- 把所有元素的长、宽、位置、字体大小等原来的 px 单位全部转换成 rem
- 网页加载后,动态设置 html 的 font-size 为当前浏览器窗口宽度 / 10
scale
const handleScreenAuto = () => {
const designDraftWidth = 1920;
const designDraftHeight = 960;
const scale = document.documentElement.clientWidth / document.documentElement.clientHeight < designDraftWidth / designDraftHeight ?
(document.documentElement.clientWidth / designDraftWidth) :
(document.documentElement.clientHeight / designDraftHeight);
(document.querySelector('#screen') as any).style.transform = `scale(${scale}) translate(-50%,-50%)`;
}
document.addEventListener('click', function (event) {
const scale = 1.5;
const originalX = event.clientX;
const originalY = event.clientY;
const relativeX = originalX / scale;
const relativeY = originalY / scale;
console.log('相对坐标:', relativeX, relativeY);
});