在使用 background-size: cover
时,背景图片会被缩放以完全覆盖容器,同时保持图片的宽高比。为了计算背景图片的缩放比例,你需要考虑容器的尺寸和背景图片的原始尺寸。
cover
模式下的缩放比例。// 获取容器元素
const container = document.querySelector('.container');
// 获取背景图片的URL
const bgImageUrl = window.getComputedStyle(container).backgroundImage.slice(4, -1).replace(/"/g, "");
// 创建一个新的Image对象来获取图片的原始尺寸
const img = new Image();
img.src = bgImageUrl;
img.onload = function() {
// 获取容器的尺寸
const containerWidth = container.clientWidth;
const containerHeight = container.clientHeight;
// 获取图片的原始尺寸
const imgWidth = img.naturalWidth;
const imgHeight = img.naturalHeight;
// 计算缩放比例
const scaleX = containerWidth / imgWidth;
const scaleY = containerHeight / imgHeight;
// 取较大的缩放比例,因为background-size: cover会确保图片完全覆盖容器
const scale = Math.max(scaleX, scaleY);
console.log(`背景图片的缩放比例是: ${scale}`);
};
container.clientWidth
和 container.clientHeight
:获取容器的宽度和高度。img.naturalWidth
和 img.naturalHeight
:获取图片的原始宽度和高度。scaleX
和 scaleY
:分别计算图片在宽度和高度方向上的缩放比例。Math.max(scaleX, scaleY)
:取较大的缩放比例,因为 background-size: cover
会确保图片完全覆盖容器。Image
对象来加载图片并获取其原始尺寸。通过这种方法,你可以准确地计算出在 background-size: cover
下背景图片的缩放比例。