Разрыв строки внутри PHP-скрипта (повторение изображений)

Пытаюсь добавить систему наград на общедоступную страницу профиля. Награды передаются из mySQL в виде изображений. Дело в том, что можно показать максимум 5 наград, и в следующей строке между ней и первой строкой нет пробела. Как его добавить, возможно с <br>, но если что-то другое лучше, то тоже приветствуется!

Разрыв строки внутри PHP-скрипта (повторение изображений)

Я пробовал кое-что <<<EOD , но это стало слишком сложно и не сработало. Пробовал наивный подход, добавляя <br> после эха, но, очевидно, это тоже не сработало. Пробовал увеличивать отступ, тоже не помогло.

 <div class = "row">
    <?php if (is_array($allawards)) { ?>
        <p style = "padding: 10px">
            <?php /* To show the image: */ ?>
             <?php foreach($allawards as $award) { ?>
                <img src = "<?php echo $award->image; ?>"
                     alt = "<?php echo $award->descrip; ?>">&nbsp;
             } ?>
         </p>
         <?php } ?>
         <br/>
     </div>

Как и все, что связано с эстетикой: с CSS.

Blackhole 05.06.2019 23:18
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
1
46
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Это не задача PHP, вам нужно использовать простой CSS.

Маржа-дно?

img {margin-bottom: 5px;}

Margin-top для 6-го и других?

img:nth-child(5) ~ img {margin-top: 5px;}

Это правильный OP, просто нужно отступить от нижнего края или отступа или гребли снизу.

Daryll 05.06.2019 23:31

@Daryll: это зависит ... Когда у белого поля отступ внизу 20 пикселей, зазор будет больше, добавляя поля / отступы. Лучшее решение — использовать margin-top для 2-й и других строк.

pavel 05.06.2019 23:34

@Daryll: сравните div в примере jsfiddle.net/La8qx2ny... Первый имеет нижний отступ 40px (20px сам + 20px от изображений), второй 20px, что правильно...

pavel 05.06.2019 23:42

Верно, хотя возможно, что они могли бы использовать margin-bottom, если бы они это сделали :not(:last-child) {margin-bottom: 20px;}, как в jsfiddle.net/m4wd1pxg. Несмотря на это, OP может сделать это с помощью CSS многими способами.

Daryll 05.06.2019 23:54

@Daryll: совсем нет... Если в строке будет 3 изображения, вы не можете использовать только :not(:last-child), потому что есть 3 «последних ребенка». Последняя строка может быть неполной (например, всего 2 изображения), адаптивной (иногда 3 изображения в последних строках, иногда 2, иногда 1)... Я использую пример с 1 изображением в строке, ОП запросил 5 изображений в строке. . Ваше решение не очень хорошее, по крайней мере, есть лучшие.

pavel 07.06.2019 00:21

В вашем foreach вы можете увеличить счетчик; после того, как вы эхо, вы можете проверить, находится ли счетчик на пяти, и, если это так, прерваться.

$counter = 1;
foreach
  ...
  echo ...
  if ($counter == 5) echo '<br>';
  $counter++;

Или вместо того, чтобы исправить это с помощью ручного разрыва, вы можете обратиться к своему стилю, чтобы решить эту проблему немного проще и динамичнее. С помощью CSS-сетка вы можете указать область, состоящую из 5 элементов в ширину, и пробел между строками, сколько вы хотите, между каждым набором из 5 наград, например так:

#awards_container {
  display: grid;
  grid-template-rows: 1fr 1fr 1fr 1fr 1fr; //1fr each instead of autos so they're always 
  the same width
  grid-row-gap: 5px;
}

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