Как динамически выравнивать по центру 3+ div в строках по 3? - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь центрировать динамически генерируемые элементы div (содержащие другие элементы div и динамическое содержимое), и выровнять их по горизонтали с количеством строк до 3, в настоящее время они находятся на одной линии, но не центрированы в родительском элементе div (т.е.. осталось место справа).Я использовал много методов на других должностях, но безрезультатно.Любая помощь будет фантастической!:)

HTML: (PHP сгенерирует любое их количество)

<div id="div$j" class="divs">
    <div class="image_ratio">
        <img src="photos/Asset 1-100.jpg" onerror="this.src='Social_Icons/Rectangle 157@2x.png'">
    </div>
    <h3><?php echo $name; ?></h3>
    <form type="text" name="form$j" id="form$j" action="AJAX.php" method="post">
        <div class="aligner">
            <button type="button" class="button_div")">X</button>
            <button type="button" class="button_div">Y</button>
            <button type="button" class="button_div">Z</button>
        </div><br>
        <input type="hidden"/>
        <input type="hidden"/>
    </form>
</div>

, и все эти div'ы объединены в:

<div class="BAJAX">.....</div>

CSS:

.BAJAX {
    grid-area: pieces;
    border: solid;
}


.image_ratio {
        position: relative;
        width: 25vmin;
        height: 35vmin;

    }

    .image_ratio img {
        margin: 0 auto;
        width: 100%;
        height: 100%;
        object-fit: cover;

    }

    .divs {
        width: 25vmin;
        z-index: 98;
        display: inline-block;
        padding: 2.5%;
        float: left;
        margin: 0 auto;
        border: solid;

    }

Ответы [ 2 ]

1 голос
/ 06 июня 2019

Лучше всего использовать flexbox . Ваш контейнер (родитель) будет иметь display: flex и justify-content: space-between (поэтому элементы могут равномерно заполнять пространство). Затем для каждого отдельного элемента (дочернего элемента) вы будете устанавливать flex-basis: 33% (или меньше, так как вы хотите, чтобы элементы имели некоторый margin / padding для отделения одного от другого).

Подробнее об этом: https://css -tricks.com / snippets / css / a-guide-to-flexbox /

Демо: https://codepen.io/Manu92/pen/PvvdMp

0 голосов
/ 06 июня 2019

Вместо <div class="aligner"> используйте <div class="row">.

https://getbootstrap.com/docs/3.4/css

Также вы можете добавить его внутрь тега <h3>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...