Это потому, что когда вы добавляете <img>
непосредственно в html, браузер устанавливает высоту элемента равной высоте предоставленного вами изображения (если не указано иное). Когда вы добавляете изображение в качестве фона <div>
и устанавливаете высоту на авто, оно пытается изменить размер div до высоты содержимого. Однако в этом случае нет содержимого - только фон, который будет фоном, когда div имеет некоторую высоту. Пустой div не имеет высоты. Поэтому, если вы хотите, чтобы изображение было фоном <div>
, оно должно либо содержать некоторый контент, либо иметь его высоту, установленную вручную.