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


127

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

<div id="mylink" /> 

对于链接,请执行以下操作:

[My link](#mylink)

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

有任何想法吗?


我一直按照您在这里所做的方式来完成它们。
乔·马丁内斯

1
<div/>可能会使页面其余部分的格式化程序烦恼。使用<a id="ident"/>。看我的答案。
史蒂夫·鲍威尔


考虑改用MultiMarkdown。它提供了[anchor][]执行此操作的语法。github.com/fletcher/MultiMarkdown/wiki/…–
jwpfox

Answers:


165

看到这个答案

总而言之

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

插入到您的markdown标记中的任何位置(例如,标头中:

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

并使用markdown链接链接到它:

[This is the link text](#headin)

要么

[some text](#sometext)

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

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


7
+1,谢谢。令人遗憾的是它不会自动执行此操作。恕我直言,很湿。
马克·安德烈

当您必须在文本编辑器中阅读它时,这很丑陋,但是它确实起作用。不知道为什么这不是公认的答案。
kayleeFrye_onDeck

定义旧样式锚点<a name="..." />过时,但符合更高版本的HTML规范。如果<div>可能将其渲染成一个破坏性的块(可能是出于未公开的原因,而CSS给出了一个尺寸)<span>(内联元素)可能会解决问题?
哈维尔

25

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

例如,如果您降价是

My header
---------

生成的html将如下所示:

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

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


这是最好和干净的答案。Markdown真的很棒。确实有助于快速博客。^ _ ^
Ashok MA,

16

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

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

## Header 2 ##      {#header2}

然后

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

不幸的是,该语法当前仅支持标题,但至少对于构建目录来说可能有用。


3

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

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

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

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

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


以我<p>在Markdown中使用标记的经验,可以剥离常规段落的CSS。我要谨慎使用,我是Markdown的新手,但有一些怪癖。
2rs2ts 2011年

@ user691859我不确定“ <p>在Markdown中使用标记可以剥离常规段落的CSS ”是什么意思。Markdown将段落包装在<p>标记中,并忽略那些已经具有<p>标记的段落。我看不到这会如何影响CSS ...
Mike

这个行为对我来说是不稳定的。在tumblr上,使用<p>可以(并非总是)剥离除我指定的特定行为以外的所有行为。我不知道为什么。<div>总是一样。
2rs2ts 2011年

3

对于使用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中的扩展名和其他预览扩展名),或删除表情符号:

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

后一个版本可以在TFS Visual Studio的降价预览中在线运行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.