如何将文本缩进一个字符宽度

发布于 2025-01-08 19:02:46 字数 1163 浏览 1 评论 0原文

前提是我使用 monospace 作为我的 font-family,但它似乎不能正常工作,我尝试了一些解决方案,但其中一些都有效,我的HTML结构如下:

<!DOCTYPE html>
<style>
  body {
    font-family: monospace;
    letter-spacing: 0;
    word-spacing: 0;
    font-size: 32px; /* large enough to see the effect */
  }
  div:last-of-type {
    padding-left: 1em; /* what's the value? */
  }
</style>
<div>123456</div>
<div>abcdef</div>
  1. 使用em

    em 应等于计算的字体大小值,但 padding-left: 1em; 不起作用:

    em

  2. 使用px

    padding-left: 32px; 的输出与 padding-left: 1em; 相同。

  3. 使用ex

    ex 应该是计算出的字母“x”的高度,但它也不起作用:

    ex

  4. 使用ch

    好吧,webkit 不支持 ch 作为 CSS 单元。

那么我该如何编写css来精确缩进第二个div一个字符宽度,即第一个'0'应该与字母'b'左对齐,没有任何偏差。

The precondition is that I use monospace as my font-family, but it doesn't seem to work properly, I've tried some solution but neight of them work, my HTML structure is as below:

<!DOCTYPE html>
<style>
  body {
    font-family: monospace;
    letter-spacing: 0;
    word-spacing: 0;
    font-size: 32px; /* large enough to see the effect */
  }
  div:last-of-type {
    padding-left: 1em; /* what's the value? */
  }
</style>
<div>123456</div>
<div>abcdef</div>
  1. use em

    em should be equals to the computed font-size value, but padding-left: 1em; doesn't work:

    em

  2. use px

    padding-left: 32px; makes the same output as padding-left: 1em;.

  3. use ex

    ex should be the computed height of the letter 'x', and it doesn't work either:

    ex

  4. use ch

    OK, webkit doesn't support ch as a css unit.

So how can I write the css to exactly indent the second div one character width, that is, the first '0' should be left-aligned to the letter 'b', without any deviation.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

薯片软お妹 2025-01-15 19:02:46

一种可能的方法,虽然有点 hacky,是使用 :before 伪选择器和 content 在行前插入一个空格:

div:last-of-type:before {
    content: " ";
    white-space: pre;
}

我不知道哪些浏览器支持这个,但我假设所有现代浏览器都会。

http://jsfiddle.net/cavqM/

One possible way, although a bit hacky, would be to insert a space before the row using the :before pseudo selector with content:

div:last-of-type:before {
    content: " ";
    white-space: pre;
}

I have no idea as to which browsers support this, but I'd assume all modern browsers would.

http://jsfiddle.net/cavqM/

北城半夏 2025-01-15 19:02:46

基于 Tatu 的方法,您可以使用不可破坏空间的 unicode 表示,例如  

div:last-of-type:before {
   content: "\00a0"; /* this is   */
}

Based on the Tatu's approach you can use a unicode representation of a none breakable space like  

div:last-of-type:before {
   content: "\00a0"; /* this is   */
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文