如何将CSS应用到第一个字母后:内容之前?

swa*_*i16 8 css pseudo-element

<!DOCTYPE html>
<html lang="en">
<head>
<style type="text/css">
p:before {  
    content:"Former - "; 
    color:red;
    font-family:"Tahoma" ,Times New Roman;
    font-size:70%;
}

p.normal:first-letter {
    font-size:40px;
    color:blue;
}
</style>
</head>
<body>
  <p class="normal">First character of this paragraph will
  be normal and will have font size 40px;</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这里,在内容:before伪元素显示为红色,但我也想式"的字符"F" ˚F蓝色这段IRST字符".但相反,我看到" F ormer - " 的" F "为蓝色.

我想要的是将内容之后的两个:before和第一个字母应用于同一段落.这可能吗?如果是这样,怎么样?.normal :before

Bol*_*ock 6

通常你会使用:first-letter伪元素执行此操作,但看到你有:before内容,它段落的实际内容之前插入文本,而不是实际内容:first-letter的第一个字母,:before而是匹配内容的第一个字母.

这意味着,而不是这样:

<p class="normal">
  <p:before>Former - </p:before>
  <p.normal:first-letter>F</p.normal:first-letter>irst character of this paragraph will
  be normal and will have font size 40px;
</p>
Run Code Online (Sandbox Code Playgroud)

你真的得到这个:

<p class="normal">
  <p:before>
    <p.normal:first-letter>F</p.normal:first-letter>ormer - 
  </p:before>
  First character of this paragraph will
  be normal and will have font size 40px;
</p>
Run Code Online (Sandbox Code Playgroud)

由于CSS生成的内容的工作原理,我认为只有在插入内容之前,纯CSS中的解决方案才能达到实际内容的第一个字母.

作为替代方案,你可以使用一个span替代的:first-letter伪元素,对此您就可以申请蓝颜色,但是这意味着你必须插入额外的元素:

  <p class="normal"><span>F</span>irst character of this paragraph will
  be normal and will have font size 40px;</p>
Run Code Online (Sandbox Code Playgroud)
p.normal span {
    font-size:40px;
    color:blue;
}
Run Code Online (Sandbox Code Playgroud)


小智 1

例如,如果您无法在没有 JavaScript 的情况下编辑 HTML,则可以使用纯 CSS,只要您设计“块级”元素的 :before 或 :after 内容即可。

p:before {
  content: 'Wisdom'
}

p:first-letter {
  font-size: 7vw;
}
Run Code Online (Sandbox Code Playgroud)
<p></p>
Run Code Online (Sandbox Code Playgroud)

请注意:::first-letterCSS 伪元素将样式应用于块级元素第一行的第一个字母,但前提是前面没有其他内容(例如图像或内联表格)。

归属: https: //developer.mozilla.org/en-US/docs/Web/CSS/:: first-letter