【问题标题】:Is it possible to count lines of text in CSS是否可以计算 CSS 中的文本行数
【发布时间】:2020-11-15 21:45:30
【问题描述】:

我正在寻找一种可能的方法,仅使用 CSS 可以允许为 DOM 元素中的每一行文本增加一个 CSS 计数器。

这个问题类似,但和this SO question不一样。

以此为例:

<p>Here is a basic "hello world" program, written in Rust:</p>
<code>
fn main() {
    println!("Hello, world!");
}
</code>

保留空白:

code {
    white-space: pre-wrap;
}

我正在寻找一种方法,可以在每行文本之前(或在每个换行符之前)显示一个行号。

1. | fn main() {
2. |    println!("Hello, world!");
3. | }

我在想我可以使用伪选择器、CSS 计数器、contents: 和其他一些想法来实现它,但我无法选择每一行。

我知道有 ::first-letter::first-line 伪元素,但是在到处寻找之后我找不到像 nth-line()::line 选择器这样的东西。

有没有人知道任何晦涩难懂的 CSS 技巧可以使这成为可能?

【问题讨论】:

    标签: css css-counter


    【解决方案1】:

    如果行数有限,你可以试试下面的方法:

    code {
        white-space: pre-wrap;
        position: relative;
        padding-left: 5ch; /* the space for the numbers */
        display: block;
        overflow: hidden; /* hide the non needed numbers */
        border: 1px solid;
    }
    code::before,
    code::after {
      content: "1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14."; /* and so on*/
      position: absolute;
      width: 0; /* force a line break */
      top: 0;
      left: 0;
    }
    
    code::after {
      content: "| | | | | | | | | | | | | | | | | |"; /* and so on*/
      left: 3ch; /* a small offset to not overlap the numbers */
    }
    <p>Here is a basic "hello world" program, written in Rust:</p>
    <code>
    fn main() {
        println!("Hello, world!");
    }
    </code>
    Another code block:
    <code>
    fn main() {
        let mut a = 0;
        let mut b = 2;
    
        println!("Hello, world!");
    
        for i in 0..5) {
            a += b;
        }
    
        println!("{}", a);
    }
    </code>

    【讨论】:

    • 哇,这看起来不错,但您能否详细说明一下这些数字是如何出现的,以及这实际上是如何工作的!?
    • @xxh width:0 是诀窍。它将强制换行,因此每个数字都在一行上,然后我只需使用 absolute 将其放在左侧
    • 我一定会马上试试这个,如果有什么奇怪的事情我会报告的。
    • 我猜你每天都会学到新东西;永远不会想到这一点。干得好,谢谢!
    • 但不适用于换行。换行仍然会增加计数器。
    猜你喜欢
    • 2020-05-17
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 2017-09-30
    • 2012-03-08
    • 2021-05-28
    • 1970-01-01
    • 2013-02-18
    相关资源
    最近更新 更多