Я не могу центрировать иконки Bootstrap вертикально рядом с текстом.

Вопрос или проблема

Я не могу центрировать иконки звёзд Bootstrap рядом с текстом отзыва на сайте, который я разрабатываю. Я вставил SVG в свой код. Здесь я также использую некоторые классы Bootstrap 4 для контекста. Вот как это выглядит сейчас:

Внешний вид иконок звёзд и текста отзыва:

введите описание изображения здесь

Мой код:

.reviews {
        color: black;
}

.review-name {
        font-weight: 700;
        margin-bottom: 2px;
        margin-top: 40px;
}

.review-location {
        font-weight: 400;
}

.stars-container {
        vertical-align: center;
}

.stars {}

.review-date {
        font-weight: 400;
}

.review-content {
        font-size: .9rem;
}
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
<section id="reviews" class="reviews container-md">
            <div class="review-item">
                <p class="review-name">Брайан С.</p>
                <p class="review-location">МЕСТО ОТЗЫВА</p>
                <p class="review-date">
                    <span class="stars"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"
                            fill="currentColor" class="bi bi-star-fill" viewBox="0 0 16 16">
                            <path
                                d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z" />
                        </svg><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"
                            class="bi bi-star-fill" viewBox="0 0 16 16">
                            <path
                                d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z" />
                        </svg><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"
                            class="bi bi-star-fill" viewBox="0 0 16 16">
                            <path
                                d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z" />
                        </svg><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"
                            class="bi bi-star-fill" viewBox="0 0 16 16">
                            <path
                                d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z" />
                        </svg><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"
                            class="bi bi-star-fill" viewBox="0 0 16 16">
                            <path
                                d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z" />
                        </svg></span> 10 июля 2019
                </p>
                <p class="review-content">ТЕКСТ ОТЗЫВА</p>
                <p class="blockquote-footer">Yelp</p>
            </div>
</section>            

Я пытался использовать свойство vertical-align без успеха. Это не дало реальной разницы в классе stars-container. Использование vertical-align с классом stars (span, содержащий SVG) тоже не дало результата, поэтому я даже не включил это:

.stars { vertical-align: center; }

После изучения этой проблемы я попробовал класс bootstrap mx-auto (в моем случае my-auto), предложенный другим пользователем, но это не сработало для меня. Не знаю, что ещё попробовать.

Ответ или решение

Вам нужно отцентрировать иконки звезд рядом с текстом отзыва по вертикали. Для достижения этого эффекта можно использовать несколько CSS-свойств и классов Bootstrap. Давайте посмотрим на ваш код и внесем необходимые изменения.

Шаги для решения проблемы:

  1. Используйте Flexbox: Flexbox позволяет гибко управлять выравниванием элементов как по горизонтали, так и по вертикали. Вам нужно добавить некоторые стили к .review-date.

  2. Обновите HTML: Убедитесь, что ваши элементы обёрнуты в контейнер для Flexbox.

Обновлённый CSS:

.reviews {
    color: black;
}

.review-name {
    font-weight: 700;
    margin-bottom: 2px;
    margin-top: 40px;
}

.review-location {
    font-weight: 400;
}

.review-date {
    display: flex; /* Включает Flexbox */
    align-items: center; /* Центрирует по вертикали */
    font-weight: 400;
}

.stars {
    margin-right: 5px; /* Добавляем немного пространства между звёздами и текстом */
}

.review-content {
    font-size: .9rem;
}

Обновлённый HTML:

<section id="reviews" class="reviews container-md">
    <div class="review-item">
        <p class="review-name">Brian C.</p>
        <p class="review-location">REVIEW LOCATION</p>
        <p class="review-date">
            <span class="stars">
                <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"
                     fill="currentColor" class="bi bi-star-fill" viewBox="0 0 16 16">
                    <path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z" />
                </svg>
                <!-- Другие звёзды -->
            </span>
            Jul 10, 2019
        </p>
        <p class="review-content">REVIEW TEXT</p>
        <p class="blockquote-footer">Yelp</p>
    </div>
</section>

Объяснение изменений:

  • Мы добавили класс display: flex; к классу .review-date, что позволит контейнеру использовать Flexbox.
  • Использование align-items: center; в классе .review-date выравнивает элементы по вертикали по центру.
  • Мы добавили отступ справа в классе .stars, чтобы пространство между звёздами и датой было визуально привлекательнее.

Теперь иконки звёзд должны правильно центрироваться по вертикали рядом с текстом даты. Если у вас остались вопросы или проблемы, не стесняйтесь спрашивать!

Оцените материал
Добавить комментарий

Капча загружается...