Ответ 1
ИЗМЕНИТЬ ИЗ КОММЕНТАРИИ
Если вы не укажете источник вообще (даже не фиктивный, временный), браузер даже не попытается "угадать" высоту изображения, и поэтому он обрушится. Если вы знаете соотношение изображения (очевидно, 1:1 в случае квадратного изображения), вы можете использовать следующий трюк, чтобы заняться пространством и масштабировать изображение вместе с div.
Задайте следующий CSS:
.test-div-inner {
padding-bottom:100%;
background:#EEE;
height:0;
position:relative;
}
.test-image {
width:100%;
height:100%;
display:block;
position:absolute;
}
Затем вы можете использовать следующий HTML:
<div class="test-div-inner">
<img class="test-image" src="http://goo.gl/lO9SUU">
</div>
Вот рабочий пример: http://jsfiddle.net/pQ5zh/3/
Обратите внимание, что скрипта содержит еще один элемент div
, это требуется только в том случае, если вы хотите дать ему все дополнение или границу, поскольку padding-bottom
вычисляет отступы в пикселях в зависимости от ширины div
ВКЛЮЧАЯ ЭТИ ПАРАМЕТРЫ, что НЕ является результатом, которого мы хотим достичь (изображение будет немного выше, чем должно быть).
Для неквадратных изображений:
Если вы хотите изменить соотношение изображения, просто измените padding-bottom
контейнера div
соответственно. Например, если вы хотите разместить изображение с соотношением 2: 1, измените отступ на 50%
. Чтобы оно было коротким: отношение ширины контейнера div
и отступов всегда должно быть равно отношению ширины и высоты изображения.
Существует простой способ сделать именно это, но работает только для квадратных изображений.
Укажите ширину изображения (используя CSS) как 100%. Таким образом, браузер автоматически предположит, что высота изображения такая же, как ширина, и занимать место.
.test-image {
width:100%;
}
Примечание. Существует также способ достижения этого для неквадратных изображений, но это немного сложнее.
РЕДАКТИРОВАТЬ: см. выше.