Подтвердить что ты не робот

Ширина и высота не работают: перед псевдоэлементом

Здесь - скрипка.

<p>foo <a class="infolink" href="#">bar</a> baz</p>

и

a.infolink::before
{
    content: '?';
    background: blue;
    color: white;
    width: 20ex;
    height: 20ex;
}

"?" но явно не имеет размера 20ex. Почему нет? Протестировано в Firefox и Chrome.

4b9b3361

Ответ 1

Примечание: ::before и ::after псевдо-элементы фактически заложены display: inline; по умолчанию.

Измените отображаемое значение на inline-block чтобы ширина и высота вступили в силу при сохранении контекста встроенного форматирования.

a.infolink::before {
    content: '?';
    display: inline-block;
    background: blue;
    color: white;
    width: 20px;
    height: 20px;
}

http://jsfiddle.net/C7rSa/3/

Ответ 2

::before и ::after по умолчанию строятся псевдоэлементы, поэтому width и height не вступят в силу.

Установите значение display: inline-block и он должен работать.

Ответ 3

добавить display:block;

демо

p > a.infolink::before {
    display:block;
    content:'?';
    background: blue;
    color: white;
    width: 20ex;
    height: 20ex;
    border:1px solid #000;
}

Ответ 4

Я могу заставить его работать, но не используя процент по ширине. Пиксели прекрасно работают

visibility: visible;
content: "stuff";
min-width: 29px;
width: 100%;
float: left;
position: relative;
top: -15px;
left: 0;

Ответ 5

Используйте это, если у вас есть изображение в контейнере или пустое пространство CSS : nowrap; имущество

body::before{ 
    content:url(https://i.imgur.com/LJvMTyw.png);
    transform: scale(.3);
}