Я думаю, что обновление этих ответов полезно, потому что один из ответов с наибольшим количеством голосов предлагает использовать clientWidth
и clientHeight, которые, я думаю, сейчас устарели.
Я провел несколько экспериментов с HTML5, чтобы увидеть, какие значения действительно возвращаются.
Прежде всего, я использовал программу под названием Dash, чтобы получить обзор API изображения.
В нем говорится, что height
и width
представляют собой высоту / ширину изображения, а naturalHeight
и naturalWidth
являются собственной высотой / шириной изображения (и являются только HTML5).
Я использовал изображение красивой бабочки из файла с высотой 300 и шириной 400. И этот Javascript:
var img = document.getElementById("img1");
console.log(img.height, img.width);
console.log(img.naturalHeight, img.naturalWidth);
console.log($("#img1").height(), $("#img1").width());
Затем я использовал этот HTML со встроенным CSS для высоты и ширины.
<img style="height:120px;width:150px;" id="img1" src="img/Butterfly.jpg" />
Результаты:
/*Image Element*/ height == 300 width == 400
naturalHeight == 300 naturalWidth == 400
/*Jquery*/ height() == 120 width() == 150
/*Actual Rendered size*/ 120 150
Затем я изменил HTML-код на следующий:
<img height="90" width="115" id="img1" src="img/Butterfly.jpg" />
т.е. использование атрибутов высоты и ширины вместо встроенных стилей
Результаты:
/*Image Element*/ height == 90 width == 115
naturalHeight == 300 naturalWidth == 400
/*Jquery*/ height() == 90 width() == 115
/*Actual Rendered size*/ 90 115
Затем я изменил HTML-код на следующий:
<img height="90" width="115" style="height:120px;width:150px;" id="img1" src="img/Butterfly.jpg" />
т.е. используя оба атрибута и CSS, чтобы увидеть, какой из них имеет приоритет.
Результаты:
/*Image Element*/ height == 90 width == 115
naturalHeight == 300 naturalWidth == 400
/*Jquery*/ height() == 120 width() == 150
/*Actual Rendered size*/ 120 150