多年經驗總結,寫出最驚豔的 Markdown 高階用法

依揚說發表於2021-01-11

點贊再看,養成習慣,微信搜尋【高階前端進階】關注我。

本文 GitHub https://github.com/yygmind 已收錄,有一線大廠面試完整考點和系列文章,歡迎 Star。

最近在學習的時候看到了 Markdown 程式碼 diff 高亮的效果,感覺挺有意思的。突然發現還有這麼一個好玩的用法,然後我就想著整理一波 Markdown 的高階用法,下面是我整理的一些內容,如果還沒用過 Markdown 這些技巧,快來試試吧。

程式碼diff

如果你做過程式碼 Code Review,對下面這種效果肯定很熟悉

// 陣列去重
const unique = (arr)=>{
-	 return Array.from(new Set(arr))
+  return [...new Set(arr)]
}

這種程式碼的增刪對比效果就是通過 diff 來做的,原始程式碼如下

​```diff
// 陣列去重
const unique = (arr)=>{
-	 return Array.from(new Set(arr))
+  return [...new Set(arr)]
}
​```

在 Markdown 中,``` 用來表示程式碼塊,跟在後面的是語言型別,比如 js、java 和 diff 等

上面的 diff 程式碼最終在 html 中會轉換成下面這段(不過在不同轉化器中轉換效果會有所差異),最終通過修改樣式達到上面的效果。

<pre>
	<code>
		"//&nbsp;陣列去重"
		<br>
		"const unique = (arr)=>{"
		<br>
		<span class="deletion">"-  return Array.from(new Set(arr))"</span>
		<br>
		<span class="addition">"+  return [...new Set(arr)]"</span>
		<br>
		"}"
		<br>
	</code>
</pre>

待辦事項

很多 Demo 程式碼都會實現一個 TodoList,我們用 Markdown 來做一個,實現下面這種 Todo 效果

  • [ ] 待完成
  • [x] 已完成
  • [ ] 未完成

原始寫法是下面這樣

-空格[空格]空格待完成

-空格[x]空格已完成

-空格[空格]空格~~未完成~~

圖片設定寬高

圖片描述

插入圖片方式比較簡單,上面這張圖片原始寫法如下,只要有 ![]() 就行了

![圖片描述](https://i.iter01.com/images/cddafb43802c3b666bb4b24c8ff0d00f992f4cf48a837909d6a38667706f5c88.png)

但是這時候的圖片寬高是不受限制的,如何生成給定寬高的圖片,我們先來看下效果。

多年經驗總結,寫出最驚豔的 Markdown 高階用法

這時候我們可以使用 img 標籤,原始寫法如下

<img src='https://i.iter01.com/images/cddafb43802c3b666bb4b24c8ff0d00f992f4cf48a837909d6a38667706f5c88.png' width=300px height=200px />

// 寫法二,自動縮放
<img src='https://i.iter01.com/images/cddafb43802c3b666bb4b24c8ff0d00f992f4cf48a837909d6a38667706f5c88.png' width=40%/>

原理也很簡單,因為 ![]() 轉化成 html 後就會變成 img 標籤,所以我們直接在 Markdown 中寫 img 標籤並且加上寬高就可以了。

// 原始 markdown 語法
![圖片描述](https://i.iter01.com/images/cddafb43802c3b666bb4b24c8ff0d00f992f4cf48a837909d6a38667706f5c88.png)

// 轉化成 html 後語法
<img src="https://i.iter01.com/images/cddafb43802c3b666bb4b24c8ff0d00f992f4cf48a837909d6a38667706f5c88.png" alt="圖片描述">

摺疊

之前寫過一篇 Array 原型方法原始碼實現大解密 的文章,裡面就用到了這一能力。點選下面例子的「展開檢視規範」後,就會展開更多內容。

展開檢視規範 這是展開後的內容1

原始寫法比較簡單,用到了 <details><summary> 標籤

<details>
<summary>展開檢視規範</summary>
這是展開後的內容1
</details>

錨點連結

錨點是網頁製作中的一種,又叫命名錨記。命名錨記就像一個迅速定位器一樣,它是一種頁面內的超級連結。

錨點連結就是點選後會跳轉到對應的錨點位置,想到連結跳轉就能想到 <a></a> 標籤

在這裡我們有 2 種方式實現這個效果

  • Markdown 原始寫法 [名稱](#id)

  • HTML 語法 <a href="#id">名稱</a>

點選我跳轉到目錄樹

名稱

原始寫法就是下面這種了

[點選我跳轉到目錄樹](#目錄樹)

<a href="#目錄樹">名稱</a>

目錄樹

這種直接在文章中使用 [TOC] 就可以,會轉化成下面這種格式

<div class="table-of-contents">
	<ul>
		<li><a href="">程式碼diff</a></li>
		<li><a href="">待辦事項</a></li>
		...
	</ul>
</div>

不過這樣也存在相容性問題,Github 中並不支援,可以使用 github-markdown-toc 這個庫自動生成,其實它的原理就是自動生成錨標記,然後就可以頁面內跳轉了。

換行

最後來介紹下怎麼換行,比如最長使用的 Markdown 工具是 Typora,換行後發到 github 發現並沒有什麼卵用,其實這時候使用 CSS 的 <br> 標籤就可以了。


上面這一行就是換行效果了

文章持續更新,可以微信搜尋「高階前端進階 」第一時間閱讀,回覆【資料】【面試】【簡歷】有我準備的一線大廠面試資料,本文 GitHub https://github.com/yygmind 已收錄,有一線大廠面試完整考點和系列文章,歡迎 Star。

有任何問題都可以來問我

相關文章