여기에 몇 가지 게시물을 보았습니다.이 질문에 답하기 위해 노력했지만 코드를 답변으로 사용해 보았지만 제대로 작동하지 못해서 틀린 일을하고 있어야합니다. 기본적으로 CSS 속성 "background-size : contains"가있는 배경 이미지가있는 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); }
을 자사의 스케일 없음 (원본을 얻을 수) 크기의 배경 이미지를 잘, 그래서 atleast 코드의 첫 번째 절반 작동하는지 알고 있습니다. 그러나 중요한 부분 인 두 번째 부분은 아무 것도하지 않는 것처럼 보입니다. 나는 새로운 변수로 테스트 div의 innerHTML을 변경하여 테스트했습니다 :
document.getElementById("test").innerHTML = newW + " , " + newH;
난 그렇게 나는 확실히 프로그래머에게 난 그냥 제대로 이해하지 못하는거야 아마 뭔가를 해요 자바 스크립트에 새로운 수학을 잘하지 않아요 이리.
편집 : 위의 코드는 조금 업데이트되어 좀 더 자세한 설명이 포함되어 있습니다.
그래서이 그림에서 파란색 상자는 배경 사업부를 포함하는 확장 DIV이다. 높이와 폭은 vh와 vw로 설정됩니다. 회색 상자는 크기가 포함되도록 설정된 배경 이미지 자체를 나타냅니다. 위의 업데이트 된 코드에서 newW와 newH는 크기가 어떻게 변경되는지에 관계없이 파란색 상자의 크기를 제공합니다. imgW와 imgH는 배경의 스케일되지 않은 원래 치수를 알려줍니다. 회색 상자의 크기를 조정하려면 scaledW 및 scaledH를 사용하고 싶지만 수학은 제대로 작동하지 않는 것 같습니다.
newH와 newW는 실제로 스케일 된 높이와 너비를 계산하지 않습니다. 그들은 원래 크기가 조정되지 않은 배경 크기 만 반환합니다. – r1k
브라우저의 콘솔로 코드를 디버깅 할 경우,'getBackgroundSize' 함수를 입력합니까? – Barudar