代码之家  ›  专栏  ›  技术社区  ›  gsamaras a Data Head

如何防止Markdown的列表在吃东西的地方?

  •  0
  • gsamaras a Data Head  · 技术社区  · 7 年前

    我有:

    - `foo`: some text                       Default: false
    - `barThatIsTooLong`: again some text    Default: true
    

    但是在bitback自述文件中,空白将自动被吃掉,并显示为:

    • foo :某些文本默认值:假
    • barThatIsTooLong :再次显示一些文本默认值:真

    我希望将默认值垂直对齐。

    如何告诉Bitbacke的降价不吃我的空间?有可能吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Waylan    7 年前

    除非使用表而不是列表,否则您可能不能。

    | Variable           | Description     | Default |
    | -------------------|---------------- | ------- |
    | `foo`              | some text       | false   |
    | `barThatIsTooLong` | again some text | true    |
    

    如果您使用的站点没有去掉原始HTML和/或样式属性,那么内联浮动可能工作:

    - `foo`: some text                    <span style="float:right; width:10em;">Default: false</span>
    - `barThatIsTooLong`: again some text <span style="float:right; width:10em;">Default: true</span>
    

    答案很长

    折叠空白是HTML的一个“特性”,其中降价是它的一个子集。“功能”通常被称为“无关紧要的空白”,其概念是所有空白(空格、制表符、换行符等)都折叠成一个空格(参见 summary of whitespace behavior options )。请注意,这种空白的折叠是由您的浏览器完成的,而不是由降价解析器完成的。如果使用浏览器的“检查”功能的“查看源代码”,您将看到HTML列表保留空白:

    <ul>
    <li><code>foo</code>: some text                       Default: false</li>
    <li><code>barThatIsTooLong</code>: again some text    Default: true</li>
    </ul>
    

    换言之,降价并没有吞噬你的空白,你的浏览器是。所以下一个问题是如何在HTML中保留空白,以及如何将其合并到标记中。有许多不同的方法可以做到这一点,但最终,它们不会像你所希望的那样工作。

    1. 这个 <pre> 标记保留空白,但是块级标记,不用于内联。因为您只希望保留一些内联空白,而不是整个文本块,所以这是不有用的。

    2. 这个 whitespace:pre CSS规则可以用来获得这种效果,但在你的降价中看起来很难看。另外,Bitback可能会剥去你的 style 出于安全原因的标签(也是如此)。

      - `foo`: some text<span style="white-space:pre">                       </span>Default: false
      - `barThatIsTooLong`: again some text<span style="white-space:pre">    </span>Default: true
      
    3. 由于不间断空间不会折叠,因此可以使用它们而不是常规空间。实际上,您只需要其他所有空间都是不间断的空间。但是,它又是丑陋的。更糟糕的是,由于非分隔空格是作为HTML实体输入的,因此在标记中显示的一个字符长6个字符,因此源文档中的列没有正确对齐。

      - `foo`: some text &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Default: false
      - `barThatIsTooLong`: again some text &nbsp; &nbsp;Default: true
      

    但是,即使您让上面的其中一个工作,浏览器可能仍然不会显示您想要的列表。像大多数网站一样,bitback也不为其网站使用单空间字体(代码块除外)。因此,一行中每个字母的宽度不相等,您的列仍然不会对齐。注意,同样的情况也存在于此。上面的最后一个示例呈现如下:

    • foo :某些文本默认值:假
    • barThatIsTooLong :同样,某些文本默认值:真

    您可以在编辑器中看到相同的效果。如果将字体从单空间字体更改为比例字体,您会注意到列将不对齐。这种偏差会随着不同比例字体的不同而变化。因此,简单地调整空间的数量并不能保证正确的对齐。甚至可能导致半宽错位。

    当然,网站总是有专栏。但这些列并不是用内联文本“伪造”的。每列都包装在自己的块级元素中,CSS规则对包含框进行适当的位置和大小调整,如中所示。 this answer . 但同样,这需要原始的HTML和CSS,而出于安全原因,BitBucket可能不允许这样做。

    另一个选项可能是使用内联浮动:

    -` foo`:一些文本<span style=“float:right;width:10em;”>默认值:false</span>
    -` barthatistolong`:再次显示一些文本<span style=“float:right;width:10em;”>默认值:true</span>
    

    这导致了 <span> 浮动到包含块(列表项)的最右边缘。为了避免浮动项显示为右对齐,我们将 width 确保每个 <跨度> 宽度相同。实际宽度必须至少与 span . 但是,由于安全原因,BitBucket可能会去掉原始HTML。

    然而,BitBucket的降价实现支持简单的 tables .因此,如果您真的想要列,可以将它们实现为表。当然,除了列标题之外,您还需要表行而不是列表项,这是您可能需要的,也可能不需要。

    |变量描述默认值|
    |————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————--|
    |` foo`某些文本错误|
    |` Barthatistolong又是一些文本真的|
    
    推荐文章