在Markdown中,链接到页面片段的最佳方式是什么,即#some_id?

Chr*_*ris 118 html markdown

我正试图找出如何使用Markdown引用页面的另一个区域.如果我添加一个,我可以使它工作

<div id="mylink" /> 
Run Code Online (Sandbox Code Playgroud)

并为链接做:

[My link](#mylink)
Run Code Online (Sandbox Code Playgroud)

但我的猜测是,还有一些其他方法可以在Markdown中执行不涉及直接div标记的页内链接.

有任何想法吗?

Ste*_*ell 156

看到这个答案.

总结一下目的地

<a name="sometext"></a>
Run Code Online (Sandbox Code Playgroud)

插入降价标记中的任何位置(例如在标题中:

## heading<a name="headin"></a>
Run Code Online (Sandbox Code Playgroud)

并使用降价链接链接到它:

[This is the link text](#headin)
Run Code Online (Sandbox Code Playgroud)

要么

[some text](#sometext)
Run Code Online (Sandbox Code Playgroud)

不要使用<div>- 这会弄乱许多渲染器的布局.

(我已经改变id=name=上面,见这个答案的繁琐的解释.)

  • +1,谢谢.很遗憾它没有自动执行此操作.非常湿恕我直言. (6认同)
  • 定义旧式锚点 `&lt;a name="..." /&gt;` 是 [*过时但符合*](https://www.w3.org/TR/html5/obsolete.html#obsolete-but-conforming-特性)在以后的 HTML 规范中。如果 `&lt;div&gt;` 可能被渲染为一个破坏性的块(也许是因为未公开的原因 CSS 给出了一个大小)也许 `&lt;span&gt;`(一个内联元素)可能会起作用? (2认同)

小智 21

我想这取决于你用什么从你的降价生成html.我注意到,jekyll(默认情况下由gihub.io页面使用)会自动将id =""属性添加到它生成的html中的标题中.

例如,如果你是降价的话

My header
---------
Run Code Online (Sandbox Code Playgroud)

生成的html将如下所示:

<h2 id="my-header">My header</h2>
Run Code Online (Sandbox Code Playgroud)

所以你可以简单地链接到它 [My link](#my-header)


Klo*_*kie 15

使用MarkdownPHP版本,您还可以使用如下所示的语法将标题链接到页面中的片段标识符,如此处所述

Header 1            {#header1}
========

## Header 2 ##      {#header2}
Run Code Online (Sandbox Code Playgroud)

然后

[Link back to header 1](#header1)
[Link back to header 2](#header2)
Run Code Online (Sandbox Code Playgroud)

不幸的是,这种语法目前仅支持头文件,但至少它可用于构建目录.


Mik*_*ike 4

HTML 页面中链接的目标锚点可以是具有id属性的任何元素。请参阅W3C 站点上的链接。这是相关部分的引用:

HTML 文档中的目标锚点可以由 A 元素(使用 name 属性命名)或任何其他元素(使用 id 属性命名)指定。

Markdown 将 HTML 视为 HTML(请参阅内联 HTML),因此您可以从任何您喜欢的元素创建片段标识符。例如,如果您想链接到一个段落,只需将该段落包装在段落标记中,并包含一个 id:

<p id="mylink">Lorem ipsum dolor sit amet...</p>
Run Code Online (Sandbox Code Playgroud)

然后使用标准 Markdown[My link](#mylink)创建片段锚点的链接。这将有助于保持 HTML 干净,因为不需要额外的标记。