После псевдоэлемента, не появляющегося в коде

Я пытаюсь использовать псевдоэлемент после добавления некоторых эффектов на сайт.

<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 используется для отображения текста. Во многих случаях, однако, вы обнаружите, что вы просто оставляете его пустым.