Bootstrap выровняет svg по центру заголовка

Я скопировал этот шаблон карты из бутстрапа для карты предупреждения. В заголовке карточки я использую svg, полученный из иконок Bootstrap https://icons.getbootstrap.com/icons/exclamation-triangle-fill/. Там вы можете увидеть несколько примеров, где иконка реализована правильно. Значок выравнивается точно посередине рядом со следующим. Однако в моем коде значок выровнен по низу и поэтому не центрирован. Есть ли способ исправить это?

 <div class = "card" style = "width: 18rem;">
    <div class = "card-body">
                <div class = "mb-3">
                    <h5 class = "card-title">
                        <svg xmlns = "http://www.w3.org/2000/svg" width = "16" height = "16" fill = "currentColor" viewBox = "0 0 16 16">
                            <path fill-rule = "evenodd" d = "M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 5zm.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/>
                        </svg>
                        Warning
                    </h5>
                </div>
                <p class = "card-text">
                    Text of card
                </p>

  </div>
</div>

Добавьте класс или идентификатор к значку svg и в css установите для него отрицательное значение margin-top. Вот так margin-top: -5px;

Harinder Singh 13.12.2020 09:46

Проверьте это jsfiddle.net/1bLdq8js

Harinder Singh 13.12.2020 09:47
Улучшение производительности загрузки с помощью 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 страниц, которые помогут...
1
2
1 155
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

Используйте минус margin-top, чтобы настроить его.

Например:

 <div class = "card" style = "width: 18rem;">
<div class = "card-body">
            <div class = "mb-3">
                <h5 class = "card-title">
                    <svg class = "myIcon" xmlns = "http://www.w3.org/2000/svg" width = "16" height = "16" fill = "currentColor" viewBox = "0 0 16 16">
                        <path fill-rule = "evenodd" d = "M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 5zm.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/>
                    </svg>
                    Warning
                </h5>
            </div>
            <p class = "card-text">
                Text of card
            </p>
        </div>
    </div>

CSS:

.myIcon { margin-top: -5px; }

Проверьте это здесь: https://jsfiddle.net/8t61qehn/

Это работает, но мне просто интересно, есть ли общее решение для такого рода вещей. Это требует, чтобы я знал точные пиксели и измерения. Есть ли решение, которое работало бы для всех изображений, независимо от того, были ли они 16x16?

James Huang 13.12.2020 20:32

Мой результат

Просто сначала измените стиль DIV на text-align: center Проверьте изображение сверху, убедитесь, что вы хотите показать бросьте лайк, если работаете на вас.

Это было не совсем то, чего я хотел. Вы видите, что изображение все еще выровнено по низу. Один из способов проверить, не отцентрирован ли он, — увеличить масштаб страницы. Когда он начинает выглядеть запутанным, значит, он не отцентрован.

James Huang 13.12.2020 20:35

О, теперь я понял.. просто укажите родительский элемент div margin-top = value.. он будет таким, как вы хотите, браузерным центром или другим методом, использующим свойства FLEXBOX.

Ankush 13.12.2020 23:47

printf("%d\n", 42); /* Вы можете просто добавить CSS в часть стиля следующим образом: */

   .card-svg {
    position: absolute;
    left: 50%;
    transform: translate(-50%, -50%);
  }
  .card-txt{
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    text-align: center;
  }

/*И добавьте эти стили как классы в свой HTML-код следующим образом: */

<img class = "card-svg" src = "http://www.w3.org/2000/svg" width = "16" height = "16" fill = "currentColor" viewBox = "0 0 16 16">
                              <path fill-rule = "evenodd" d = "M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 5zm.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/>
                          <img>
 <h5 class = "card-txt">Warning</h5>  

/Кстати, я изменил svg на img, вы можете попробовать так, если это то, что вы хотите./

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