【问题标题】:Text indent starting from 2nd paragraph从第 2 段开始的文本缩进
【发布时间】:2015-02-04 18:48:38
【问题描述】:

我有来自 DB ($row[text]) 的文本,它看起来像:

<p>First</p>
<p>Second</p>
<p>Third</p>

我想从第二段开始应用“文本缩进”。 我知道,它可以与以下类一起应用:

.a{text-indent: 20px}
<p>First</p>
<p class="a">Second</p>
<p class="a">Third</p>

但我不能这样做,因为我不能编辑数据库。 当我使用 p{文本缩进:20px} 它适用于所有段落

【问题讨论】:

  • p:nth-child(2) { ... } 但不能 100% 确定。你想从第 2 次开始,其余的都在后面吗?
  • @Fred-ii- 所说的可能有效,或者您可以尝试:p {text-indent:20px;} p:nth-child(1) {text-indent: 0;} 应该缩进除第一个以外的所有段落。
  • @Tom Yours 看起来更有希望。我对 CSS 有点脱节。我一直忙于专注于 SQL 大声笑
  • p:nth-child(1+n) { ... } 就是你要找的东西
  • @Tom 好像有人采纳了你的建议。

标签: html css text-indent


【解决方案1】:

这取决于p 元素的标记上下文和所需的排版实践。例如,如果p 元素在列表或表格之后,它应该缩进吗?意见不一。无论如何,一旦您决定了排版策略,您可能可以使用合适的上下文选择器来处理它(除非您需要担心相当旧的 IE 版本)。

在一个极端情况下,您只能在段落紧跟另一个段落时才可以缩进,因为这是真正需要缩进的上下文。由于您通常希望在使用缩进时防止段落之间的默认垂直间距,因此您可以使用

p + p { text-indent: 1em; }
p { margin: 0; }

(使用em单位优于px,因为它可以适应字体大小的变化。通常1em就足够了。)

【讨论】:

  • 谢谢。这对我有用,而其他解决方案没有。
【解决方案2】:

您可以通过将text-indent 应用于所有p 标记并在first-child 上删除它来实现:

p{text-indent: 20px}
p:first-child{text-indent:0}
<p>First</p>
<p>Second</p>
<p>Third</p>

【讨论】:

  • 这意味着例如紧跟在标题后面的 p 元素将被缩进(因为它不是其父元素的第一个子元素),这与排版惯例相反。
  • @JukkaK.Korpela 是的,这是真的。感谢您的添加。
【解决方案3】:

您可以使用 nth-child 伪类来实现这一点。它接受一个公式以及用 0 替换 n 等等,所以你的公式变成 2+n

p:nth-child(2+n){text-indent: 20px}

<p>First</p>
<p>Second</p>
<p>Third</p>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 2013-11-21
    • 2021-12-11
    • 2017-03-01
    • 1970-01-01
    相关资源
    最近更新 更多