Изображения PHP не отображаются должным образом

Вот мой код.

<?php

$q = $db->query("SELECT * FROM images WHERE user_id = $id");
while ($result = $q->fetch_assoc()):
?>

<div class = "box">
  <div class = "panel">
    <div class = "image" style = "background-image: url(uploads/<?= $result['image'] ?>)">
      <div class = "overlay">
         <div class = "content">
          <strong>Title</strong>
          <p>Some text</p>
        </div>
      </div>
    </div>
  </div>
</div>

  <?php
endwhile;
?>

Возникла проблема с изображениями, которые не отображаются так, как я ожидал, каждый раз, когда я вставляю или добавляю новое изображение, оно всегда переходит к следующей строке.

Это то, что я хочу для макета.

Изображения PHP не отображаются должным образом

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

Изображения PHP не отображаются должным образом

Я тоже пробовал поставить его в ряд, но ничего не получается.

Вот мой код CSS.

.box {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
}

.panel {
  height: 230px;
  min-width: 250px;
  margin: 10px;
  flex: 1 1 30%;
}

.image {
  background-size: cover;
  height: 230px;
}

.overlay {
  position: relative;
  background-color: rgba(15, 10, 36, 0.5);
  height: 230px;
}

.content {
  text-align: center;
  position: absolute;
  color: #fff;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

Div - это блочные элементы, их можно перемещать, использовать flexbox или объявлять элементы как встроенные

Danial 01.07.2018 20:31

Вы используете Bootstrap для CSS? Если да, то какой версии?

rpm192 01.07.2018 20:31

Думаю, это вам поможет: stackoverflow.com/questions/2637696/…

Ole EH Dufour 01.07.2018 20:39

Как упоминает @Danial, div являются блочными элементами. Блочные элементы ведут себя таким образом, что предотвращают попадание любых других элементов в одну линию. то есть ваши панели панели переносятся на новую «линию». Чтобы изменить поведение по умолчанию, вы можете попробовать использовать display:inline-block;. Обратите внимание, что встроенный блок вызывает странное поле в 4 пикселя вокруг таких вещей, поэтому вам нужно установить поле -4 пикселя, чтобы преодолеть добавленный сбой поля.

www139 01.07.2018 20:47

Если вы поделитесь с нами своим CSS, мы сможем составить ответы. Проблема здесь не в PHP. Ваш CSS - проблема.

www139 01.07.2018 20:48

Я добавил свой код css в свой пост выше. Пожалуйста, проверьте это.

Tonzkie 01.07.2018 20:52

Чтобы справиться с нежелательными дополнительными интервалами (например, с комментарием 4px), не делайте -4px ни для чего. Вместо этого удалите фактические пробельные символы (символы новой строки / табуляции / пробелы) между теми элементами, которые вызывают это. Вы можете легко сделать это в php, просто поместив php open / close между ...</div><?php ?><div>..., чтобы он сожрал все пробелы и символы новой строки из вывода. Или используйте echo '<div>...</div>'; для вывода без ненужных пробелов.

IncredibleHat 01.07.2018 21:03
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
7
70
1

Ответы 1

Решил эту проблему, переместив контейнер div за пределы кода php.

Проверьте код ниже.

<div class = "box"> <!-- This div -->
<?php

$q = $db->query("SELECT * FROM images WHERE user_id = $id");
while ($result = $q->fetch_assoc()):
?>

  <div class = "panel">
    <div class = "image" style = "background-image: url(uploads/<?= $result['image'] ?>)">
      <div class = "overlay">
         <div class = "content">
          <strong>Title</strong>
          <p>Some text</p>
        </div>
      </div>
    </div>
  </div>


  <?php
endwhile;
?>

</div> <!-- and this div -->

Я пробовал другой подход, но у меня это не сработало, Надеюсь, это поможет другим людям, у которых такая же проблема, как у меня. Просто поместите контейнер div за пределы итерации.

Другие вопросы по теме