MarkDown中頁面內跳轉經常用于目錄跳轉,為了解決在MarkDown中實現頁面內跳轉,我特意研究了以下實現方式;
備注: 簡書中的MarkDown好像不支持頁面內跳轉;
目錄
一. 鏈接的定義
1. 行內式鏈接
2. 參考式鏈接
二. 標題的定義
1. 類Setex形式的標題
2. 類Atx形式的標題
三. 頁面內跳轉
1. 錨點的定義
2. 錨點目標的定義
四. 總結
五. 示例
內容
在MarkDown中是通過 鏈接
和 標題
來實現頁面內跳轉的,所以先講下MarkDown中 鏈接
和 標題
的語法,然后再講 MarkDown 中實現頁面內跳轉的方法;
一. 鏈接的定義
Markdown 支持兩種形式的鏈接語法: 行內式 和 參考式 兩種形式。
1. 行內式鏈接
語法:
行內式鏈接 = [內容](地址 "標題")
說明:
-
標題
是可選的,可以用單引號 或 雙引號;
轉換成HTML后,會生成如下標簽:
<a href="地址" title="標題">內容</a>
示例:
[我的博客](http://www.lxweimin.com/u/7ecaba2d594c "郭斌勇的主頁")
渲染成HTML后,會生成如下標簽:
<a href="http://www.lxweimin.com/u/7ecaba2d594c" title="郭斌勇的主頁">我的博客</a>
效果如下:
2. 參考式鏈接
語法:
參考式鏈接 = [內容][參考標識符]
參考標識符 = [標識符]: 地址 "標題"
說明:
-
參考式鏈接
和參考標識符
的定義沒有先后順序; -
[內容]
和[參考標識符]
之間可以有一個空格,也可以沒有空格; - 如果
內容
和參考標識符
一樣,也可簡寫成[參考標識符][]
; -
標題
是可選的,可以用單引號、雙引號或是圓括弧包著;
轉換成HTML后,會生成如下標簽:
<a href="地址" title="標題">內容</a>
示例:
[博客]: http://www.lxweimin.com/u/7ecaba2d594c "郭斌勇的主頁"
[我的博客][博客]
[博客][]
渲染成HTML后,會生成如下標簽:
<a href="http://www.lxweimin.com/u/7ecaba2d594c" title="郭斌勇的主頁">我的博客</a>
<a href="http://www.lxweimin.com/u/7ecaba2d594c" title="郭斌勇的主頁">博客</a>
效果如下:
二. 標題的定義
Markdown 支持兩種標題的語法:類Setext形式 和 類atx形式;
1. 類Setex形式的標題
類Setext形式標題的定義是用底線的形式,可以利用任何個數的符號 =
(最高級標題)和 -
(第2級標題)來做底線,格式為:
標題內容
====
或
標題內容
----
說明:
- 底線的符號個數為大于或等于1
示例:
這是一級標題
====
這是二級標題
----
效果如下:
這是一級標題
這是二級標題
2. 類Atx形式的標題
類 Atx 形式標題的定義則是在行首插入 1 到 6 個 # ,對應到標題 1 到 6 階,格式為:
# 1級標題內容
## 2級標題內容
### 3級標題內容
#### 4級標題內容
##### 5級標題內容
###### 6級標題內容
示例:
# 這是1級標題
## 這是2級標題
### 這是3級標題
#### 這是4級標題
##### 這是5級標題
###### 這是6級標題
效果如下:
這是1級標題
這是2級標題
這是3級標題
這是4級標題
這是5級標題
這是6級標題
三. 頁面內跳轉
MarkDown中是通過定義鏈接的方式來定義跳轉的,在這里,跳轉也稱為錨點
,跳轉的目標稱為錨點目標
;
所以,在 MarkDown 中實現頁面內跳轉的方法就是:定義一個 錨點目標
和 對應的 錨點
,用戶點擊 錨點
便可跳轉到對應的 錨點目標
位置處;
錨點
和 錨點目標
的定義格式如下:
1. 錨點的定義
錨點就是一個鏈接,另外,由于在MarkDown中可以直接寫HTML,所以在MarkDown中實現錨點有兩種方式:MarkDown方式 和 HTML方式;
1.1 MarkDown錨點
MarkDown錨點本質上就是一個MarkDown鏈接,只是鏈接地址的格式為:
鏈接地址 = #目標內容
所以 MarkDown錨點 的定義也有兩種方式
行內式
語法:
錨點 = [內容](#目標內容 "標題")
說明:
-
標題
是可選的,可以用單引號 或 雙引號;
轉換成HTML后,會生成如下標簽:
<a href="#目標內容" title="標題">內容</a>
示例:
[MarkDown方式的錨點](#MarkDown錨點)
渲染成HTML后,會生成如下標簽:
<a href="#MarkDown錨點" >MarkDown方式的錨點</a>
效果如下:點擊下面的錨點
參考式
語法:
錨點 = [內容][參考標識符]
參考標識符 = [標識符]: #目標內容 "標題"
說明:
-
錨點
和參考標識符
的定義沒有先后順序; -
[內容]
和[參考標識符]
之間可以有一個空格,也可以沒有空格; - 如果
內容
和參考標識符
一樣,也可簡寫成[參考標識符][]
; -
標題
是可選的,可以用單引號、雙引號或是圓括弧包著;
轉換成HTML后,會生成如下標簽:
<a href="#目標內容" title="標題">內容</a>
示例:
[MarkDown方式的錨點]: #MarkDown錨點
[MD錨點][MarkDown方式的錨點]
[MarkDown方式的錨點][]
渲染成HTML后,會生成如下標簽:
<a href="#MarkDown錨點">MD錨點</a>
<a href="#MarkDown錨點">MarkDown方式的錨點</a>
效果如下:
1.2 HTML錨點
HTML錨點本質上就是一個a鏈接,格式為:
<a href="#目標內容">內容</a>
注意:
-
HTML錨點
的目標錨點只能是 標簽形式的錨點目標
示例:
<a href="#html錨點">HTML方式的錨點</a>
效果如下:點擊下面的錨點
<a href="#html錨點">HTML方式的錨點</a>
2. 錨點目標的定義
錨點目標有2種定義方式:MarkDown形式 和 標簽形式;
MarkDown形式的錨點目標
MarkDown形式的錨點目標的定義其實就是標題的定義,即:任何級別的標題可以直接作為錨點目標;
標題內容 = 目標內容
所以,類Setext形式 和 類atx形式 的標題都可作為 錨點目標
;
錨點目標定義的示例:
這是一個錨點目標
====
這是一個錨點目標
---
# 這是一個錨點目標
## 這是一個錨點目標
### 這是一個錨點目標
#### 這是一個錨點目標
##### 這是一個錨點目標
###### 這是一個錨點目標
注意:
-
錨點的
目標內容
中不能有大家字母和空格,所以如果錨點目標的目標內容
中有大寫字母或空格,則需要在定義錨點中的目標內容
時,把大寫字母改成小寫字母,把空格改成-
; -
錨點的
目標內容
中不能含有以下字符:- 半角點(即英文中的句號)
.
- 半角點(即英文中的句號)
標簽形式的錨點目標
因為MarkDown鏈接會被轉成a標簽,并且MarkDown中也可以寫標簽,所以可以利用HTML的錨點機制直接定義一個帶 id
特性的任意標簽 或 帶 name
特性的 a 標簽(注意:在HTML5中,a標簽已經不再支持 name 特性)作為錨點目標,然后把MarkDown中的錨點地址的目標內容設置為 id
或 name
特性的值;這樣便可以實現頁面內跳轉;
這種形式的錨點目標的定義格式為:
<標簽名 id="目標內容">元素內容</標簽名>
或
<a name="目標內容">元素內容</a>
注意:
- 標簽形式的錨點目標的id特性值中是不能含有中文字符;
-
name
特性只能應用在 a 標簽上; - HTML5不支持通過a標簽的
name
特性來定義錨點目標;
示例:
<div id="這是錨點目標">跳轉到這里</div>
或
<a name="這是錨點目標">跳轉到這里</a>
四. 總結
MarkDown中實現頁面跳轉的方法如下:
- 定義錨點目標;錨點目標的定義方式有4種:類Setext形式的標題、類atx形式的標題、帶id特性的HTML標簽(id特性的值為
目標內容
)、帶name特性的a標簽(name特性的值為目標內容
); - 定義錨點;錨點的定義方式有3種:行內式鏈接、參考式鏈接、HTML的a鏈接;
說明:
- 錨點 和 錨點目標 的定義不分先后順序;
注意:
-
錨點的
目標內容
中不能有大家字母和空格,所以如果錨點目標的目標內容
中有大寫字母或空格,則需要在定義錨點中的目標內容
時,把大寫字母改成小寫字母,把空格改成-
; -
錨點的
目標內容
中不能含有以下字符:- 半角點(即英文中的句號)
.
- 半角點(即英文中的句號)
- 標簽形式的錨點目標的id特性值中是不能含有中文字符;
-
name
特性只能應用在 a 標簽上; - HTML5不支持通過a標簽的
name
特性來定義錨點目標; -
HTML錨點
的目標錨點只能是 標簽形式的錨點目標
五. 示例
示例1
錨點:
[跳轉到個人簡介](#個人簡介)
錨點目標:
# 個人簡介
示例2
錨點:
[跳轉到個人簡介]: #個人簡介
[跳轉到個人簡介][]
錨點目標:
個人簡介
=====
示例3
錨點:
[跳轉到個人簡介](#個人簡介)
錨點目標:
<p id="個人簡介">這是個人簡介</p>
示例4
錨點:
[跳轉到個人簡介](#個人簡介)
錨點目標:
<a name="個人簡介">這是個人簡介</a>
示例5
錨點:
<a href="#個人簡介">跳轉到個人簡介</a>
錨點目標:
個人簡介
----
示例6
錨點:
<a href="#個人簡介">跳轉到個人簡介</a>
錨點目標:
<h1 id="個人簡介">這是個人簡介</h1>
示例7
錨點:
<a href="#個人簡介">跳轉到個人簡介</a>
錨點目標:
<a name="個人簡介">這是個人簡介</a>