如何在浮动后保留 space :first-letter 当第一个字母紧跟 space 时?

How to retain a space after floated :first-letter when the first letter is immediately followed by a space?

什么是优雅的解决方案(即不在文本中添加  ),当第一个单词是单个字母时,在首字母和第二个字母之间引入 space?

我正在尝试向段落的第一个字母添加首字母大写。我遇到的问题是,如果第一个单词是 1 个字母的单词,比如 I,它看起来很混乱,这会导致后面的 space 消失。

示例如下:

p::first-letter {
  font-size: 150%;
  float: left;
}
<p>Some text.</p>

<p>
    I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text.
</p>

解决方案必须保持行与行之间的行高相同,方法与 float: left 相同。

这有点难以理解,但请将您的 CSS 改成这个。

p::first-letter {
  font-size: 150%;
  vertical-align: text-top;
}

float: left; 属性删除了间距,因此如果您将其替换为 vertical-align,它会保留 space 并将文本与顶部对齐以达到预期效果。

编辑

这里是an example JSFiddle来展示它的工作。

以下解决方案保留第一个字符后的空白。

p {
  white-space: pre-wrap;
}

p::first-letter {
  font-size: 150%;
  float: left;
}
<p>Some text.</p>

<p>I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text. I am some long text.</p>

NB:这需要将 p 的内部 html 格式化为一行,其余部分的空格正确行,这样它就不会干扰其余的空白。