28

多年经验,教你写出最惊艳的 Markdown 高级用法

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzA4Nzg0MDM5Nw%3D%3D&%3Bmid=2247489826&%3Bidx=1&%3Bsn=96324ed9c9ed11bb7b17132ee3458c39
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

最近在学习的时候看到了 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>
"// 数组去重"
<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]空格已完成

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

图片设置宽高

2QNveeU.png!mobile

插入图片方式比较简单,上面这张图片原始写法如下,只要有 ![]() 就行了

![图片描述](https://resource.muyiy.cn/image/20201209093632.png)

但是这时候的图片宽高是不受限制的,如何生成给定宽高的图片,我们先来看下效果。

2QNveeU.png!mobile

这时候我们可以使用 img 标签,原始写法如下

<img src='https://resource.muyiy.cn/image/20201209093632.png' width=300px height=200px />

// 写法二,自动缩放
<img src='https://resource.muyiy.cn/image/20201209093632.png' width=40%/>

原理也很简单,因为 ![]() 转化成 html 后就会变成 img 标签,所以我们直接在 Markdown 中写 img 标签并且加上宽高就可以了。

// 原始 markdown 语法
![图片描述](https://resource.muyiy.cn/image/20201209093632.png)

// 转化成 html 后语法
<img src="https://resource.muyiy.cn/image/20201209093632.png" alt="图片描述">

折叠

之前写过一篇 Array 原型方法源码实现大解密 的文章,里面就用到了这一能力。点击下面例子的「展开查看规范」后,就会展开更多内容(公众号不支持,移步到 https://muyiy.cn 查看)。

展开查看规范

这是展开后的内容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> 标签就可以了。

上面这一行就是换行效果了

The End

如果你觉得这篇内容对你挺有启发,我想请你帮我三个小忙:

1、点个  「在看」 ,让更多的人也能看到这篇内容

2、关注官网  https://muyiy.cn ,让我们成为长期关系

3、关注公众号「高级前端进阶」,公众号后台回复  「加群」 ,加入我们一起学习并送你精心整理的高级前端面试题。 mQzEb2b.jpg!mobile 》》面试官都在用的题库,快来看看《《

“在看”吗?在看就点一下吧

IZZNZ3R.gif!mobile

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK