Причина, по которой вы потеряли высоту, заключается в том, что position:absolute;
удаляет элемент из потока, поэтому ваш родительский контейнер не сможет использовать его для определения его высоты.Это не устаревшая разметка, это часть контекста.
Быстрый отрывок из CSS-хитрости
Компромисс (и самое важное, что нужно запомнить) Об абсолютном позиционировании является то, что эти элементы удаляются из потока элементов на странице.Элемент с таким типом позиционирования не подвержен влиянию других элементов и не влияет на другие элементы.Это серьезная вещь, которую следует учитывать каждый раз, когда вы используете абсолютное позиционирование.Его чрезмерное или ненадлежащее использование может ограничить гибкость вашего сайта.
Если по какой-либо причине вам необходимо иметь этот конкретный элемент в качестве position:absolute;
, вашей следующей лучшей ставкой будет настройка родительского контейнера с использованиемJavaScript / jQuery, однако это может быть громоздким исправлением.
Мое предложение будет заключаться в том, чтобы попытаться достичь желаемого макета без использования абсолютного позиционирования, а затем, если вы застряли, опубликуйте еще один вопрос, объясняющий желаемый макет.и текущий код пытается его достичь.
EDIT
При этом, если упомянутое решение JavaScript / jQuery не кажется вам громоздким, вы можете попробовать следующее:
$('.container').each(function(){
$(this).css({
'padding-top': $(this).find('img').height()+'px'
});
});
Это добавит padding-top
к контейнеру в зависимости от размера изображения.В качестве альтернативы, вы можете добавить пустой div под изображением и настроить его высоту в зависимости от размера изображения.