Дополнительно
Как получить размер изображения (высота & ширина) с помощью JavaScript?
Существуют ли API или методы jQuery или чистого JS для получения размеров изображения на странице?
580
20
Вы можете программно получить изображение и проверить размеры, используя Javascript...
& Лт;!- начать фрагмент: js hide: ложная консоль: истинная павиана: false - > & Лт;!- язык: lang-js - > var img = новый Image (); img.onload = function () { alert (this.width + 'x' + this.height) ; } img.src = 'http://www.google.com/intl/en_ALL/images/logo.gif'; & Лт;!- конец фрагмента - >
Это может быть полезно, если изображение не является частью разметки.
clientWidth и clientHeight - это свойства DOM, которые показывают текущий размер внутренних размеров элемента DOM в браузере (без учета margin и border). Таким образом, в случае элемента IMG, здесь будут указаны фактические размеры видимого изображения.
Также (в дополнение к ответам Рекса и Яна') есть:
и
Они задают высоту и ширину самого файла изображения (а не только элемента изображения).
Если вы используете jQuery и запрашиваете размеры изображений, вам нужно подождать, пока они загрузятся, иначе вы получите только нули.
Я думаю, что обновление этих ответов полезно, потому что один из ответов с наибольшим голосованием предлагает использовать «clientWidth» и clientHeight, которые, я думаю, сейчас устарели.
Я провел несколько экспериментов с HTML5, чтобы увидеть, какие значения действительно возвращаются.
Прежде всего, я использовал программу под названием Dash, чтобы получить обзор API изображений В нем говорится, что «высота» и «ширина» являются визуализированной высотой / шириной изображения и что «naturalHeight» и «naturalWidth» являются внутренней высотой / шириной изображения (и являются только HTML5).
Я использовал изображение красивой бабочки из файла высотой 300 и шириной 400. И это Javascript:
Затем я использовал этот HTML с встроенным CSS для высоты и ширины.
Результаты:
Затем я изменил HTML на следующее:
то есть. использование атрибутов высоты и ширины, а не встроенных стилей
Результаты:
Затем я изменил HTML на следующее:
то есть. используя как атрибуты, так и CSS, чтобы увидеть, что имеет приоритет.
Результаты:
Используя JQuery, вы сделаете это:
Все остальные забыли, что вы не можете проверить размер изображения, прежде чем оно загрузится. Когда автор проверяет все опубликованные методы, он будет работать, вероятно, только на localhost. Поскольку jQuery можно использовать здесь, помните, что «готовое» событие запускается до загрузки изображений. $ ('# xxx') .width () и .height () должны быть запущены в случае загрузки или позже.
Вы можете сделать это только с помощью обратного вызова события загрузки, так как размер изображения неизвестен, пока он фактически не закончит загрузку. Что-то вроде кода ниже...
С jQuery библиотека-
Используйте
.width ()
и.height ()
.Больше в ширине jQuery и jQuery heigth.
Пример кода
& Лт;!- начать фрагмент: js скрыть: false - >
& Лт;!- конец фрагмента - >
хорошо, ребята, я думаю, что улучшил исходный код, чтобы иметь возможность загружать изображение, прежде чем пытаться выяснить его свойства, в противном случае он будет отображать «0 * 0», потому что следующее утверждение было бы вызвано до загрузки файла в браузер. Требуется jquery...
Перед использованием реального размера изображения вы должны загрузить исходное изображение. Если вы используете JQuery Framework, вы можете получить реальный размер изображения простым способом.
Этот ответ был именно тем, что я искал (в jQuery):
Предполагая, что мы хотим получить размеры изображения
< img id = "an-img" src "...">
Натуральные размеры
el.naturalWidth
иel.naturalHeight
дадут нам естественные размеры, размеры файла изображения.Размеры макета
el.offsetWidth
иel.offsetHeight
дадут нам размеры, при которых элемент отображается в документе.JQuery Ответ:
Просто вы можете проверить, как это.
Вы можете применить свойство обработчика загрузки, когда страница загружается в js или jquery, как это: -
Это мой метод, надеюсь, это поможет. :)
Вы также можете использовать:
Недавно у меня была такая же проблема из-за ошибки в гибком слайдере. Высота первого изображения была установлена меньше из-за задержки загрузки. Я попробовал следующий метод для решения этой проблемы, и он сработал.
Это даст вам высоту относительно установленной вами ширины, а не первоначальной ширины или нуля.
Вы можете иметь простую функцию, такую как следующая (
imageDimensions ()
), если вы не боитесь использовать Promises.& Лт;!- начать фрагмент: js hide: ложная консоль: истинная павилонка: true - >
& Лт;!- конец фрагмента - >