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

时间:2010-07-20 18:02:39

标签: html markdown

我正试图弄清楚如何使用Markdown引用页面的另一个区域。如果我添加

,我可以使它工作
<div id="mylink" /> 

并为链接执行:

[My link](#mylink)

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

有什么想法吗?

5 个答案:

答案 0 :(得分:146)

请参阅this answer

总结使用

制作目的地
<a name="sometext"></a>

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

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

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

[This is the link text](#headin)

[some text](#sometext)

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

(我已将id=更改为name=以上。请参阅this answer了解繁琐的解释。)

答案 1 :(得分:18)

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

例如,如果你是降价是

My header
---------

生成的html将如下所示:

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

因此,您只需[My link](#my-header)

即可链接到该链接

答案 2 :(得分:13)

使用PHP version of Markdown,您还可以使用以下任一语法将标题链接到页面中的片段标识符,如文档所述here

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

## Header 2 ##      {#header2}

然后

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

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

答案 3 :(得分:3)

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

  

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

Markdown将HTML视为HTML(请参阅Inline HTML),因此您可以根据自己喜欢的元素创建片段标识符。例如,如果要链接到段落,只需将段落包装在段落标记中,并包含一个id:

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

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

答案 4 :(得分:1)

对于使用Visual Studio Team Foundation Server(TFS)2015的任何人,至少在标头中,它实际上都不喜欢嵌入的<a><div>元素。它也不喜欢标题中的表情符号:

###  Configuration 

Lorem ipsum problem fixem.

翻译为:

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

因此,链接应使用id(在Visual Studio中破坏this和其他预览扩展名),或删除表情符号:

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

后一版本在TFS和Visual Studio的降价预览中可以在线工作。