Получение высоты изображения до загрузки изображения в HTML

У меня есть таблица, которая динамически создается с использованием DIV. В каждой строке таблицы по два изображения. Я хочу установить высоту для div (который представляет конкретную строку) на высоту изображения, которая больше двух изображений, отображаемых в этой конкретной строке. Отображаемые изображения всегда будут меняться, и они получены с внешнего сервера.

Как мне установить высоту для моего div, чтобы я мог умещать изображения?

Вы используете код на стороне сервера? В таком случае следует указать язык / настройки.

Zach 20.09.2008 07:09

здесь нет кода на стороне сервера. это чистый javascript-css play

thinkpad 20.09.2008 07:10
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
2
2
17 538
7

Ответы 7

Предварительно загрузите их в объекты изображений javascript, а затем просто укажите высоту и ширину.

Может потребоваться какая-то умная чертовщина, чтобы работать во всех браузерах ...

function getSize(imgSrc){

    var aImg = new Image();

    aImg.src = imgSrc;

    aHeight = newImg.height;
    aWidth = newImg.width;

}

как связать эти объекты изображения с соответствующими тегами div, которые должны их отображать?

thinkpad 20.09.2008 07:56

ширина и высота равны 0 сразу после создания изображения. Вам нужно дождаться, пока изображение запустит событие загрузки, прежде чем проверять его размер.

Kornel 13.10.2008 23:13

Вы можете:

  1. Не указывать высоту div и позволять ему расширяться автоматически
  2. После загрузки изображения выполните:

    document.getElementById ("myDiv"). height = document.getElementById ("myImage"). height

в таблице много строк. Разве это не ухудшит внешний вид пользовательского интерфейса?

thinkpad 20.09.2008 07:55

Нам понадобится немного больше информации, чтобы быть очень полезным. Вы можете получить высоту и ширину изображения после загрузки страницы с помощью Javascript (Информация), а затем вы можете изменить высоту div после загрузки. В противном случае вам действительно не повезло, поскольку в самом HTML ничего нет.

Если вы используете PHP, есть getimagesize (), который вы можете использовать, если вы создаете сайт динамически с помощью PHP. Есть аналогичные функции для других языков, но нам понадобится немного больше информации.

Если вы пытаетесь динамически изменить размер пары div в строке внутри таблицы, возможно, вам лучше использовать таблицу html вместо этого и иметь каждое изображение в теге td. Это приведет к изменению размера тега tr для изображения в каждой ячейке.

Если вы хотите, чтобы браузер создавал макет на основе высоты изображения, прежде чем он получит изображение, вам необходимо отправить эту высоту куда-нибудь в браузер. Для этого потребуется что-то на стороне сервера. Самым быстрым вариантом было бы вставить его напрямую в HTML. Медленнее, но более элегантно было бы получать его изображение за изображением с помощью операторов <script src =>, которые получают инструкции из специального бита cgi, генерирующего javascript. (Разница в скорости возникает из-за сетевых обходов.)

Если вы хотите изменить размер после получения данных, это намного проще. Либо установите обработчик загрузки на изображения, либо вставьте их в обычную dom (например, в настоящую таблицу, хотя вы можете сделать это с помощью div и css) и позвольте механизму компоновки выполнять эту работу.

На этот вопрос было дано несколько ответов, и вы задали дополнительный вопрос: «Не ухудшит ли это пользовательский интерфейс?»

Ответ на этот вопрос - да. Лучшее, что вы можете сделать в большинстве случаев, - это установить высоту вашего div так, чтобы она выглядела хорошо, а затем масштабировать изображения до нужного размера. Это ускорит рендеринг, а конечный продукт будет выглядеть лучше и профессиональнее.

Но это только мое личное мнение. У меня нет эмпирических данных, подтверждающих это.

  this.img = new Image();
  this.img.src = url;
  alert(this.img.width);

дает ширину, в то время как

  var img = new Image();
  img.src = url;
  alert(img.width);

не ..

не знаю почему.

Спасибо! Этот ответ найти на удивление сложно. На самом деле я использовал второй, и он отлично работает.

henry bemis 03.08.2012 22:55

Насколько я знаю, причина в том, что изображение еще не обязательно завершило загрузку (я полагаю, оно загружается асинхронно).

Abbafei 21.10.2013 15:22

Другие вопросы по теме