JavaScript 代码解析:实现网页自适应缩放
这段代码是一个 JavaScript 脚本,用于在网页加载完成后和窗口大小改变时触发一个缩放操作,以实现网页的自适应效果。
代码首先定义了一个名为 triggerScale 的函数,该函数用于计算当前窗口的宽度和高度,并根据预设的目标宽度和高度以及宽高比来计算缩放比例。
代码通过获取 document.documentElement.clientWidth 或者 document.body.clientWidth 来获取当前窗口的宽度,通过获取 document.documentElement.clientHeight 或者 document.body.clientHeight 来获取当前窗口的高度。
接下来,代码根据当前窗口的宽高比与目标宽高比进行比较,如果当前宽高比大于目标宽高比,则将缩放比例设置为当前窗口的高度与目标高度的比值,并将 transformStr 变量设置为一个 transform 属性和一个 left 属性的字符串,用于对 body 元素进行缩放和平移操作。如果当前宽高比小于或等于目标宽高比,则将 transformStr 变量设置为一个 transform 属性的字符串,用于对 body 元素进行缩放操作。
最后,代码通过 querySelector 方法获取 body 元素,并使用 setAttribute 方法将 transformStr 设置为 body 元素的 style 属性,从而实现对 body 元素的缩放操作。
整个代码的目的是根据窗口的大小和预设的目标大小,以及宽高比,对网页进行自适应的缩放操作。
以下是代码的详细解释:
window.onload = function () {
triggerScale();
window.addEventListener("resize", function () {
triggerScale();
});
};
function triggerScale() {
var targetX = 1920;
var targetY = 1080;
var targetRatio = 16 / 9;
var currentX = document.documentElement.clientWidth || document.body.clientWidth;
var currentY = document.documentElement.clientHeight || document.body.clientHeight;
// 1.缩放比例 3840 / 2160 => 2
var ratio = currentX / targetX;
var currentRatio = currentX / currentY;
var transformStr = "";
if (currentRatio > targetRatio) {
ratio = currentY / targetY;
transformStr = 'transform:scale(${ratio}) translateX(-${ targetX / 2 }px); left:50%;';
} else {
transformStr = 'transform:scale(${ratio});';
}
var bodyEl = document.querySelector("body");
// 2.需要修改缩放的原点 body { transform-origin: left top; }
bodyEl.setAttribute("style", transformStr);
}
代码的要点如下:
triggerScale函数用于计算缩放比例,并根据比例对body元素进行缩放和平移操作。- 代码使用
document.documentElement.clientWidth和document.body.clientWidth来获取当前窗口的宽度,使用document.documentElement.clientHeight和document.body.clientHeight来获取当前窗口的高度。 - 代码根据当前宽高比与目标宽高比来判断是否需要进行水平平移操作。
- 代码使用
setAttribute方法将transformStr设置为body元素的style属性,从而实现对body元素的缩放操作。
这段代码可以帮助开发者实现网页的自适应功能,确保网页在不同分辨率设备上都能良好显示。
原文地址: https://www.cveoy.top/t/topic/qkpy 著作权归作者所有。请勿转载和采集!