После псевдоэлемента, не появляющегося в коде
Я пытаюсь использовать псевдоэлемент после добавления некоторых эффектов на сайт.
<div class="product-show style-show">
<ul>
<li>
....
<div class="...">
<div class="readMore less">...</div>
<a href="3" class="readMoreLink" onclick="return false;">Read More</a>
</div>
....
</li>
</ul>
</div>
И таблицы стилей:
.product-show .readMore.less {
max-height: 200px;
height: 100%;
overflow: hidden;
}
.product-show .readMore.less:after {
background: rgba(255, 255, 255, 0);
display: block;
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 30px;
}
Я вижу, что стиль .product-show.readMore.less применяется, но я не вижу знака:: после записи в блоках HTML, когда я просматриваю сайт из Chrome (последняя версия)/MacOS. Я читал, что иногда возникают проблемы со старыми браузерами, но я предположил, что я должен увидеть хотя бы нотацию:: после псевдоэлемента, если я правильно определяю стиль. Что я делаю не так?
Ответы
Ответ 1
Это потому, что псевдоэлемент не генерируется, если значение content
опущено (поскольку начальное/значение по умолчанию - none
).
Укажите значение content
, чтобы сгенерировать псевдоэлемент. Достаточно значение ''
.
.product-show .readMore.less:after {
content: '';
background: rgba(255, 255, 255, 0);
display: block;
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 30px;
}
Ответ 2
В соответствии с MDN:
Свойство CSS содержимого используется с:: before и:: after псевдоэлементы для генерации содержимого в элементе.
Это означает, что если вы не включаете свойство content
, элемент :after
или :before
не будет отображаться вообще.
Добавьте эту строку в свой код:
content: ""; // Leave this empty
И посмотрите, как это влияет на результат.
Как примечание, вы обычно добавляете текст в свойство content
, когда элемент :before
или :after
используется для отображения текста. Во многих случаях, однако, вы обнаружите, что вы просто оставляете его пустым.