#html #css #bootstrap-4
#HTML #css #bootstrap-4
Вопрос:
Я скопировал этот шаблон карточки из bootstrap для предупреждающей карточки. В заголовке карты я использую 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>
Комментарии:
1. Добавьте класс или идентификатор к значку svg и в css установите для него отрицательное поле сверху. Вот так
margin-top: -5px;
2. Проверьте это jsfiddle.net/1bLdq8js
Ответ №1:
Используйте отрицательный 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 /
Комментарии:
1. Это работает, но мне просто интересно, есть ли общее решение для такого рода вещей. Для этого мне нужно знать точные пиксели и измерения. Есть ли решение, которое работало для всех изображений, независимо от того, были ли они 16×16?
Ответ №2:
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, вы можете попробовать так, если это то, что вы хотите./
Ответ №3:
Просто измените первый DIV
стиль, text-align: center
проверив изображение сверху, убедитесь, что вы хотите, чтобы отображение отображалось, как если бы оно работало для вас.
Комментарии:
1. Это было не совсем то, чего я хотел. Вы видите, что изображение все еще выровнено внизу. Один из способов проверить, не центрирован ли он, — это увеличить масштаб страницы. Когда он начинает выглядеть запутанным, он не центрируется.
2. О, теперь я понял .. просто укажите родительский div margin-top = value .. это будет по вашему желанию, центр браузера или другой метод использует свойства FLEXBOX