如何仅对换行的折行文本应用text-indent?CSS3能否实现?
可以用CSS 3实现这个需求!
根据你的描述,你想要的是仅对由换行符(手动换行,比如<br>或文本中的硬换行\n)产生的折行应用text-indent: 20px,而段落的第一行、以及窗口变窄时自动换行的行保持无缩进。纯CSS 3就能搞定,具体方案如下:
核心思路
利用CSS的::first-line伪元素重置第一行的缩进,同时通过white-space属性确保文本中的换行符被正确识别:
代码实现
.your-text-element { /* 确保文本中的硬换行\n被解析为换行,同时保留自动换行的能力 */ white-space: pre-line; /* 给所有行设置20px缩进 */ text-indent: 20px; } /* 重置第一行的缩进为0,不管第一行是自动换行还是原本的首行 */ .your-text-element::first-line { text-indent: 0; }
效果说明
- 段落的视觉第一行(包括因内容过长自动换行的部分)会被
::first-line选中,缩进被重置为0,和你想要的效果一致; - 所有由换行符(手动换行)产生的后续行,都会应用
text-indent: 20px,实现仅对换行符折行的文本缩进; - 如果你的手动换行是用
<br>标签,这个方案同样生效,因为<br>会触发新的视觉行,不属于::first-line的范围。
内容的提问来源于stack exchange,提问作者MrP01
相关产品推荐
相关产品推荐

