Почему при задании блоку свойства display:inline-block схлопывается изображение?

Если будет display: block, то все будет работать как надо.

.block {
  background-image: url(https://i.postimg.cc/8c4ZJRdy/Names-10.jpg);
  height: 700px;
  border: 40px dashed black;
  background-size: cover;
  background-repeat: no-repeat;
  box-sizing: border-box;
  display: block;
}
<div class="block"></div>

Но когда задается display: inline-block, все сжимается. Картинки вообще не видно.

.block {
  background-image: url(https://i.postimg.cc/8c4ZJRdy/Names-10.jpg);
  height: 700px;
  border: 40px dashed black;
  background-size: cover;
  background-repeat: no-repeat;
  box-sizing: border-box;
  display: inline-block;
}
<div class="block"></div>

Разве inline-block без четко заданной ширины, не должен принимать ширину содержимого?


Ответы (1 шт):

Автор решения: DiD

Разве inline-block без четко заданной ширины, не должен принимать ширину содержимого?

Да, должен принимать ширину содержимого.

Но дело в том, что картинка заданная background-image не является содержимым блока. Чтобы она стала содержимым блока, её надо вставлять в блок тегом <img>.

Можно оставить и background-image, но тогда нужны "распорки" для блока. То есть, вставить что-нибудь в этот блок, что будет задавать ему нужную ширину.

.block {
  background-image: url(https://i.postimg.cc/8c4ZJRdy/Names-10.jpg);
  height: 700px;
  border: 40px dashed black;
  background-size: cover;
  background-repeat: no-repeat;
  box-sizing: border-box;
  display: inline-block;
  color: #f00;
}

.block>p {
  width: 300px;
  height: 1px;
  margin:0;
  padding:0;
}
<div class="block">
  <p></p>
  Далее может идти любой нужный контент
</div>

Либо задать ширину блоку можно через min-width:

.block {
  background-image: url(https://i.postimg.cc/8c4ZJRdy/Names-10.jpg);
  height: 700px;
  border: 40px dashed black;
  background-size: cover;
  background-repeat: no-repeat;
  box-sizing: border-box;
  display: inline-block;
  min-width: 300px;
}
<div class="block"></div>

→ Ссылка