Home >Web Front-end >CSS Tutorial >How to Determine a Div's Background Image Dimensions Using jQuery?
Determine Div's Background Image Dimensions in jQuery
Problem:
Acquiring the width and height of a div's background image using jQuery seems elusive. Conventional attempts like $('#myDiv').css('background-image').height(); yield the "not a function" error.
Solution:
Fortunately, an ingenious solution exists. By leveraging the power of creating a new Image object, one can ascertain image dimensions even if they are not explicitly defined within the CSS. Here's an updated version of the script:
var image_url = $('#something').css('background-image'), image; // Extract the URL without the url() or url("") wrapper image_url = image_url.match(/^url\("?(.+?)"?\)$/); // Proceed if the image URL was obtained if (image_url[1]) { image_url = image_url[1]; // Create a new Image object image = new Image(); // Trigger an event when the image is loaded // This ensures we get the actual image dimensions $(image).load(function () { alert('Width: ' + image.width + '\nHeight: ' + image.height); }); image.src = image_url; }
Improved Approach (2018):
A more comprehensive solution is presented below, providing enhanced functionality and error handling:
var getBackgroundImageSize = function(el) { // Extract the image URL var imageUrl = $(el).css('background-image').match(/^url\(["']?(.+?)["']?\)$/); // Create a deferred object var dfd = new $.Deferred(); // Handle existence of image URL if (imageUrl) { // Create a new Image object var image = new Image(); // Resolve the deferred on load, reject on error image.onload = dfd.resolve; image.onerror = dfd.reject; // Assign the image source image.src = imageUrl[1]; } else { // Image not available, reject dfd.reject(); } // Return the dimensions if the image loads return dfd.then(function() { // Return the dimensions as an object return { width: this.width, height: this.height }; }); }; // Sample usage getBackgroundImageSize(jQuery('#mydiv')) .then(function(size) { // Success - log the dimensions console.log('Image size is: ', size); }) .fail(function() { // Error - log failure message console.log('Failed to determine image size'); });
The above is the detailed content of How to Determine a Div's Background Image Dimensions Using jQuery?. For more information, please follow other related articles on the PHP Chinese website!