使用CSS隐藏除第一个字母以外的所有文本?

Eva*_*nss 27 css css-selectors

是否可以用CSS隐藏第一个字母后面的所有字母?

dt:not(::first-letter) {
  display: none;
}
Run Code Online (Sandbox Code Playgroud)

Gol*_*rol 21

你可以,但你的CSS错了.以下版本有效(至少在Chrome中).它使dt隐形,并定义第一个字母的否定,使其再次可见.

我也尝试了同样的方法display,但是这不起作用,正如预期的那样.visibility: hidden隐藏内容,但保持元素就位,同时display: none将其从流中移除,并使子元素(在这种情况下的第一个字母)不可能再次可见.

我也添加了一个悬停,所以你可以将信件悬停在dt的其余部分.

dt {
  visibility: hidden;
}
dt::first-letter {
  visibility: visible;
}

/* Hover the first letter to see the rest */
dt:hover {
  visibility: visible;
}
Run Code Online (Sandbox Code Playgroud)
Hover to see the rest:
<dt>Lorum ipsum is a weird text</dt>
<dt>Foo bar</dt>
Run Code Online (Sandbox Code Playgroud)

副作用是仍然声称文本覆盖的区域.也许这不是问题,但如果是,你将需要一些其他的解决方案.一种可能性是制作字体大小dt 0.这样,文本很小,声称没有空间.当然,如果它还包含图像,也无济于事.

由于它似乎不起作用,这里是使用font-size的替代方法.不太理想,但希望它仍然可以解决你的问题.

dt {
  font-size: 0;
}
dt::first-letter {
  font-size: 1rem;
}

/* Hover the first letter to see the rest */
dt:hover {
  font-size: 1em;
}
Run Code Online (Sandbox Code Playgroud)
Hover to see the rest:
<dt>Lorum ipsum is a weird text</dt>
<dt>Foo bar</dt>
Run Code Online (Sandbox Code Playgroud)

  • 似乎不适用于Firefox.即使徘徊也没有透露任何东西. (12认同)
  • @OrangeDog`rem`不是拼写错误.这是根本的.您必须为第一个字母指定字体大小,因为它不能使用`dt`的`0`.我使用`rem`,它是文档的基本em-size,但你也可以使用一些px值.如果使用`em`,它相对于`dt`元素的字体大小.由于该字体大小为"0",因此"1em"也为0,因此字母不显示.这就是为什么这个解决方案不理想的原因:你必须在这里设置一些固定的字体大小.我不知道如何使用"原始"尺寸. (2认同)

Jai*_*nam 11

我想你可以试试这个:

.twitter{
      display: block;
      color: transparent;
    }

    .twitter:first-letter{
      color: #000;
    }
Run Code Online (Sandbox Code Playgroud)
 <div id="socialMedia">
    <a class="twitter">Twitter</a>
</div>
<div id="socialMedia">
    <a class="twitter">Google</a>
</div>
Run Code Online (Sandbox Code Playgroud)

另见这个小提琴


dz9*_*902 5

你不能使用:not伪元素选择器(见这个).

你能做的就是以另一种方式思考:透明化整个事物,然后用颜色::first-letter.因为后者具有更高的特异性,它将覆盖透明设置,从而实现您想要的结果.