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

我想知道如何使用 Markdown 来引用页面的另一个区域。我可以让它工作,如果我添加一个

<div id="mylink" />

对于这个链接来说:

[My link](#mylink)

但是我猜测在 Markdown 中还有其他方法可以做页内链接,而不需要直接使用 div标签。

有什么想法吗?

109170 次浏览

HTML 页面中链接的目标锚可以是具有 id属性的任何元素。请参阅 W3C 站点上的 连结。下面是相关章节中的一段话:

HTML 文档中的目标锚 可由甲方指定 元素(使用名称命名它 属性) ,或任何其他元素 (使用 id 属性命名)。

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

<p id="mylink">Lorem ipsum dolor sit amet...</p>

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

使用 标价的 PHP 版本,您还可以使用如下所示的语法将页眉链接到页面中的片段标识符,如文档中的 给你所示

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


## Header 2 ##      {#header2}

然后

[Link back to header 1](#header1)
[Link back to header 2](#header2)

不幸的是,这种语法目前只支持头部,但至少可以用于构建目录。

参见 这个答案

总的来说,用... ... 作为目的地

<a name="sometext"></a>

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

## heading<a name="headin"></a>

并以减价联系方式与其联系起来:

[This is the link text](#headin)

或者

[some text](#sometext)

不要使用 <div>——这会破坏许多渲染器的布局。

(我已经把 id=改成了上面的 name=,详情请参阅 这个答案。)

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

例如,如果你的降价是

My header
---------

生成的 html 如下所示:

<h2 id="my-header">My header</h2>

因此,您可以通过 [My link](#my-header)简单地链接到它

对于任何使用 VisualStudioTeamFoundationServer (TFS)2015的人来说,它确实不喜欢嵌入式 <a><div>元素,至少在标题中不喜欢。它也不喜欢标题中的表情符号:

### 🔧 Configuration 🔧


Lorem ipsum problem fixem.

翻译成:

<h3 id="-configuration-">🔧 Configuration 🔧</h3>
<p>Lorem ipsum problem fixem.</p>

因此,链接要么使用 id(在 Visual Studio 中破坏了 这个和其他预览扩展) ,要么删除表情符号:

Here's [how to setup](#-configuration-) //🔧 Configuration 🔧
Here's [how to setup](#configuration) //Configuration

在 VisualStudio 的标记预览版中,后一个版本可以在 TFS 还有中在线工作。

在 Pandoc Markdown,你可以使用语法 [span]{#anchor}在段落的任意跨度上设置锚点,例如:

Paragraph, containing [arbitrary text]{#mylink}.

然后像往常一样引用它: [My link](#mylink)

如果你想引用整个段落,那么最直接的方法就是在段落的开头添加一个 空荡荡的跨度:

[]{#mylink}
Paragraph text.