在伪元素没有出现在代码中之后

Ji *_*Mun 14 html css pseudo-element css-content

我正在尝试使用after伪元素为网站添加一些效果.

<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>
Run Code Online (Sandbox Code Playgroud)

和样式表:

.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;
 }
Run Code Online (Sandbox Code Playgroud)

我看到.product-show .readMore.less的样式正在应用,但是当我从Chrome(最新版本)/ MacOS检查网站时,我在HTML块中没有看到::.我读过老浏览器有时会出现问题,但我认为如果我正确定义了样式,我应该能够至少看到:: after伪元素表示法.我究竟做错了什么?

Jos*_*ier 19

这是因为如果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;
}
Run Code Online (Sandbox Code Playgroud)

  • 我认为值得注意的是 :after/:before 不适用于 &lt;input&gt; 标签,因为该标签没有内容。这是一个问题的链接。/sf/ask/305890791/ /sf/ask/181136861/ -输入字段上的元素 (2认同)

Luc*_*emy 8

根据MDN:

内容CSS属性与:: before和:: after伪元素一起使用,以在元素中生成内容.

这意味着,如果你不包括content财产时,:after:before元素不会完全显示.

将此行添加到您的代码中:

content: ""; // Leave this empty
Run Code Online (Sandbox Code Playgroud)

并看看它如何影响结果.

就像注释一样,content当使用:beforeor :after元素显示文本时,通常会在属性中添加文本.但在许多情况下,你会发现你只是把它留空.