我已經在這裏看到了幾個帖子,試圖回答這個問題,我嘗試使用給出的代碼作爲答案,但一直未能得到它的工作,所以我必須做錯事。基本上我有一個背景圖像與CSS屬性「background-size:contains」的div。我想獲得縮放背景的尺寸。這裏是我的代碼,大多是從這裏另一篇文章複製,一些事情發生了變化,以配合我div的名字:javascript,獲取包含屬性的縮放背景的大小
var elem = document.querySelector("#enlarged-inner .image-bg");
功能getBackgroundSize(ELEM){
elem = document.querySelector("#enlarged-inner .image-bg");
//get original background size
var computedStyle = getComputedStyle(elem);
var img = new Image;
img.src = computedStyle.backgroundImage.replace(/url\((['"])?(.*?)\1\)/gi, '$2');
var imgW = parseInt(img.width, 10);
var imgH = parseInt(img.height, 10);
//get scaled size
var newW = parseInt(computedStyle.width, 10);
var newH = parseInt(computedStyle.height, 10);
var scaledW = 0;
var scaledH = 0;
scaledW = imgW/imgH * newH;
scaledH = imgH/imgW * newW;
}
window.onresize = function(){ getBackgroundSize(elem); }
它能夠獲得原始(未縮放)大小的背景圖像就好了,所以我至少知道前半部分代碼正在工作。但第二部分,重要的一部分,似乎沒有做任何事情。我一直在改變測試的div innerHTML來的新變量測試它:
document.getElementById("test").innerHTML = newW + " , " + newH;
我是新來的JavaScript和數學不是很大,所以我敢肯定,那裏有可能是一些我只是沒有正確理解這裏。
編輯:上面的代碼已經更新了一點,繼承人一些更多的解釋。
所以在這張照片的藍色方塊是包含與背景的DIV一個可擴展的股利。它的高度和寬度用vh和vw設置。 灰色框表示背景圖像本身,其大小設置爲包含。在上面的更新代碼中,newW和newH給了我藍色框的尺寸,不管它如何縮放。 imgW和imgH給我背景的原始未縮放尺寸。我想scaledW和scaledH返回灰色框的縮放大小,但我的數學似乎沒有工作。
問題是newH和newW實際上並不計算縮放的高度和寬度。他們只是返回原始的,未縮放的大小的背景。 – r1k
如果用瀏覽器的控制檯調試你的代碼,你輸入你的getBackgroundSize函數嗎? – Barudar