Почему img для :before не работает как надо?
Мне надо, чтобы расположение было как на 1м скрине. То есть есть две строки текста, обёрнутые в div с классом .name и для этого .name я псевдоэлементом ставлю изображение через бэкграунд.
По началу изображение было вообще наверху, но потом подсказали, что это из-за того,что мой 1й p блочный, поэтому он не пускает картинку к себе. Ну я ему inline-block поставил, и сейчас ситуация как на 3м скрине
Пробовал ставить inline-block и для 2го , много чего пробовал, но что-то не помогло.
Подскажите пожалуйста, что не так(ну и объясните почему оно так работает)
*Знаю, что через скрины здесь код не показывают, но я сейчас не у компухтера.
Дополнительно:
Это фото реального человека, значит, контент, img, а никакой не псевдо.
Абсолюты тут не нужны вообще.
Помогут флексы, но тогда имя и должность нужно будет обернуть в div.
Либо, ещё лучше, гриды. 2х2
Вообще, поможет даже банальный float :) Только аккуратно. Но лучше гриды.
<div class="person"> <img class="person__photo" src=""> <div class="person__name">Имя фамилия</div> <div class="person__position">Должность</div> </div> |
<div class="person"> <img class="person__photo" src=""> <div class="person__name">Имя фамилия</div> <div class="person__position">Должность</div> </div>
.person { display: grid; grid-template-columns: 5rem 1fr; align-items: center; gap: 0.25rem 1rem; } .person__photo { grid-row: span 2; align-self: center; width: 5rem; height: 5rem; border-radius: 50%; } .person__name { align-self: end; } .person__position { align-self: start; } |
.person { display: grid; grid-template-columns: 5rem 1fr; align-items: center; gap: 0.25rem 1rem; } .person__photo { grid-row: span 2; align-self: center; width: 5rem; height: 5rem; border-radius: 50%; } .person__name { align-self: end; } .person__position { align-self: start; }
А в варианте с флексами можно и грид убрать (хорошая фраза) и заменить на margin, будет еще меньше строк :)
gap мне, конечно, более симпатичен.
Это изображение контентное, а не оформительское. На реальном сайте, его очевидно будут загружать через админку. Его следует ставить через тег img
<div class="person"> <img class="person__photo" src=""> <div class="person__wrapper"> <div class="person__name">Имя фамилия</div> <div class="person__position">Должность</div> </div> </div> |
<div class="person"> <img class="person__photo" src=""> <div class="person__wrapper"> <div class="person__name">Имя фамилия</div> <div class="person__position">Должность</div> </div> </div>
.person { display: flex; align-items: center; gap: 1rem; } .person__photo { width: 50px; height: 50px; border-radius: 50%; flex-shrink: 0; } .person__wrapper { display: grid; gap: 0.25rem; } .person__name {} .person__position {} |
.person { display: flex; align-items: center; gap: 1rem; } .person__photo { width: 50px; height: 50px; border-radius: 50%; flex-shrink: 0; } .person__wrapper { display: grid; gap: 0.25rem; } .person__name {} .person__position {}
Ответы:
Добавьте к блоку .name position: relative и отступ от края на ширину аватарки и расстояния до имени. А к псевдоэлементу ::before position: absolute и сместите влево на значения отступа. Таким образом, через свойства top left сможете спозиционировать как вам угодно относительно имени. Пример ниже:
snippet
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос



Проблема с использованием свойства `content` с изображением в псевдоэлементе `:before` возникает из-за того, что в CSS контент в псевдоэлементах не поддерживает свойство `url()` для загрузки изображений. Вместо этого, нужно использовать специальный код Юникода для вставки изображения.
Для того чтобы добавить изображение в псевдоэлемент `:before`, можно воспользоваться следующим способом:
```html
.element:before {
content: "\1F4F7"; /* Unicode символ для изображения */
font-size: 30px; /* Размер изображения */
}
```
В данном примере мы используем Unicode-символ `"\1F4F7"`, который представляет изображение камеры. Вы можете использовать другие Unicode-символы для различных изображений.
Если вы все же хотите использовать изображение в формате `.png`, `.jpg`, `.svg` и т.д., то можно воспользоваться другим способом, загружая изображение как фон в псевдоэлементе:
```html
.element:before {
content: "";
display: block;
width: 100px;
height: 100px;
background: url('path/to/image.png') no-repeat;
}
```
В этом примере мы устанавливаем изображение как фон псевдоэлемента, указав путь к файлу изображения в свойстве `background`. Помните, что указанный путь должен быть правильным и доступным для загрузки.
Используя вышеперечисленные методы, вы сможете добавить изображения в псевдоэлементы и стилизовать их по своему усмотрению.