我有一个带背景图像的DIV。但我的要求是如何根据背景图像的高度和宽度扩展DIV大小。我在this链接的帮助下尝试了一些代码。
var src = $('#divID').css('background-image').
replace('url', '')
.replace('(', '')
.replace(')', '')
.replace('"', '')
.replace('"', '');
$('body').append('<img id="appendedImg" src="' + src + '" style="height:0px;width:0px"');
var img = document.getElementById('appendedImg');
var width = img.clientWidth;
var height = img.clientHeight;
$('#appendedImg').detach();
如果可能,我只是在寻找任何优雅的解决方案。
答案 0 :(得分:5)
你可能只需要寻找宽度/高度onload:
var img = document.getElementById('appendedImg');
img.onload = function() {
var width = img.width;
var height = img.height;
console.log(width,height);
};
此外,您无需附加它,创建新图像就足够了。我就是这样做的:
var $div = $('#divID'),
src = $div.css('background-image').replace(/url\(\"([^\"]+).*/,'$1');
$(new Image).load(function() {
$div.width(this.width).height(this.height);
}).attr('src', src);
答案 1 :(得分:0)
我首先加载img然后获取它的高度和宽度:
imgSrc = 'http://ajthomas.co.uk/wp-content/themes/ajthomascouk/library/images/logo.png'
// append the temp imag
$('body').append('<img src="'+imgSrc+'" alt="" style="display:none" id="dummyImage"/>');
// get the image width and height
imgWidth = $('#dummyImage').width()+'px';
imgHeight = $('#dummyImage').height()+'px';
// remove the image
$('#dummyImage').remove();
// set the css for the div
$('#imADiv').css({height: imgHeight, width: imgWidth, 'background-image': 'url('+imgSrc+')'});
在此编写代码 - http://jsfiddle.net/LTdtM/