Как центрировать контент с помощью: before в CSS

У меня есть следующий код css:

При этом создается наведение курсора на изображение.

Эффект наведения - это синяя крышка и белая стрелка, которая скользит слева.

Вот так:

Неизвестный:

Как центрировать контент с помощью: before в CSS

Завис:

Как центрировать контент с помощью: before в CSS

«\ f04b» - белая стрелка. Как я могу центрировать значок в синем поле? Я попытался добавить отступ в

sidebar-article-thumb: до, .sidebar-best-thumb: до

но он добавляет отступ ко всему синему наложению, а не к белому значку внутри.

Как я могу центрировать значок внутри синего поля?

.sidebar-article-thumb img,
.sidebar-best-thumb img {
  border: 1px solid #021a40;
  position: relative;
  max-width: none;
  height: 100%;
  width: auto;
  left: 50%;
  -moz-transform: translateX(-50%);
  -ms-transform: translateX(-50%);
  -webkit-transform: translateX(-50%);
  transform: translateX(-50%);
}

.sidebar-article-thumb:before,
.sidebar-best-thumb:before {
  content: "\f04b";
  font-family: FontAwesome;
  font-size: 40px;
  color: #fff;
  position: absolute;
  top: 0;
  left: -100%;
  height: 100%;
  width: 100%;
  background: #00ade6;
  z-index: 1;
  -webkit-transition: all 0.3s ease;
  -moz-transition: all 0.3s ease;
  -o-transition: all 0.3s ease;
  transition: all 0.3s ease;
}

Я обнаружил следующее: : before,: after и заполнение

Что казалось актуальным, но я не мог понять, как применить это к приведенному выше css.

Также поделитесь своим фрагментом html.

Saif Ur Rahman 21.06.2018 01:07

Попробуйте сделать онлайн-демонстрацию с вашим кодом.

SaidbakR 21.06.2018 02:33
Улучшение производительности загрузки с помощью 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
2
61
4

Ответы 4

Line-height сделает это, \ f04b - это символ.

line-height: 50%;

или же

line-height: 100px;

Используйте position: relative в контейнере и

position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);

в псевдоэлементе (: before) для центрирования символа.

Пример:

.container {
	position: relative;

	/* Demo */
	width: 300px;
	height: 300px;
	border: 1px solid #000;
}

.container:before {
  content: '';
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%,-50%);

	/* Demo */
	width: 30px;
	height: 30px;
	border: 1px solid #000;
}
<div class = "container"></div>

Попробуйте использовать vertical-align: middle;

Использование flexbox в контейнере творит чудеса.

.container {
    align-items: center;
    display: flex;
    justify-content: center;
}

JSFiddle

(Я просто создал свою собственную стрелку вместо использования font-awesome, но принципы все те же)

Я до сих пор не могу комментировать другие сообщения (только начал сегодня). Использование абсолютной позиции требует, чтобы вы знали высоту и ширину вашего элемента и вычтите это из 50%. vertical-align, конечно же, центрирует его только по вертикали. Использование flexbox - лучший и самый простой способ центрировать его как по вертикали, так и по горизонтали.

jmulder5 21.06.2018 02:55

Вам совсем не обязательно знать ширину и высоту, просто используйте transform: translate (-50%, - 50%); (это работает так же, как работают margin-top: - (height / 2) и margin.left: (width / 2).

agustin 21.06.2018 06:21

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