Как мне выровнять изображения разного размера

#php #html #css #image #alignment

#php #HTML #css #изображение #выравнивание

Вопрос:

Я пытаюсь написать страницу с изображениями разного размера, но не могу понять, как их правильно выровнять. Вот как выглядит веб-страница:https://i.imgur.com/Li17CMl.jpg

Я добавил загрузочную img-жидкость для быстрого реагирования. Если я установлю фиксированную высоту, изображения не будут уменьшаться должным образом на экранах меньшего размера.

Я очистил некоторые не связанные данные с помощью ‘…’, просто чтобы сделать код более чистым. Мой текущий код:

     foreach(row...) : ?>
    <div class="col-md-6" style="padding...">

      <div class="card">
        <div class="card-body" style="padding...">

          <a href="">
            <div>
              <img class="img-fluid" style="width: 100%;" src="row->image..." alt="">
            </div>
            <div>
              <h5> title </h1>
              <h6> date </h6>
            </div>
          </a>

        </div> <!-- /card body -->
      </div> <!-- /card -->

    </div> <!-- /col-6 -->
    <?php endforeach; ?>
  

Я надеюсь, что изображения будут уменьшаться на экранах меньшего размера.

Комментарии:

1. Попробуйте минимальную высоту изображения

2. Это php-код. Пожалуйста, добавьте тег PHP

3. @MMJM хотя код в вопросе является фрагментом php, вопрос не имеет ничего общего с php.

Ответ №1:

TL: DR object-fit: cover; сделает свое дело.

Решение 1 — ФИКСИРОВАННАЯ ВЫСОТА

с помощью этого решения вы должны установить значение для высоты изображений: фотографии не будут растягиваться, но соотношение будет разным для каждого экрана

 .img-fluid {
   height: 200px; /* insert here your desired height*/
   object-fit:cover;
}
  

Решение 2 — РЕАЛЬНАЯ ЖИДКОСТЬ

это решение немного сложнее, но фотографии всегда будут иметь то соотношение, которое вы выберете.

 .card-body a div:first-child {
   position: relative;
   width: 100%;
   height: 0;
   padding-top: 60%; /*insert value for the desired ratio. ie: 60% -> 10/6 image*/ 
}

.img-fluid {
   position: absolute;
   top:0;
   left: 0;
   right: 0;
   bottom: 0;
   object-fit: cover;
}
  

Ответ №2:

Пожалуйста, используйте приведенный ниже код:

 .img-card img{width:100%;height:300px;object-fit:cover;}
.img-card{margin-bottom:15px;margin-top:15px;}  
 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">

<div class="container">
<div class="row">
  <div class="col-6">
    <div class="img-card">
      <img src="https://i.ytimg.com/vi/VDNd4KjELkU/maxresdefault.jpg" />
    </div>
  </div>
    <div class="col-6">
    <div class="img-card">
      <img src="https://media-cdn.tripadvisor.com/media/photo-s/0f/5e/fc/f5/inkaya-cinari.jpg" />
    </div>
  </div>
    <div class="col-6">
    <div class="img-card">
      <img src="https://thumbs.dreamstime.com/z/scenery-5680647.jpg" />
    </div>
  </div>
    <div class="col-6">
    <div class="img-card">
      <img src="https://cdn.pixabay.com/photo/2015/11/11/03/47/evening-1038148__340.jpg" />
    </div>
  </div>
</div>
</div>