点赞再看,养成习惯,微信搜索【高级前端进阶】关注我。

本文 GitHub https://github.com/yygmind 已收录,有一线大厂面试完整考点和系列文章,欢迎 Star。

最近在学习的时候看到了 Markdown 代码 diff 高亮的效果,感觉挺有意思的。突然发现还有这么一个好玩的用法,然后我就想着整理一波 Markdown 的高级用法,下面是我整理的一些内容,如果还没用过 Markdown 这些技巧,快来试试吧。

如果你做过代码 Code Review,对下面这种效果肯定很熟悉

  1. // 数组去重
  2. const unique = (arr)=>{
  3. - return Array.from(new Set(arr))
  4. + return [...new Set(arr)]
  5. }

这种代码的增删对比效果就是通过 diff 来做的,原始代码如下

  1. ```diff
  2. // 数组去重
  3. const unique = (arr)=>{
  4. - return Array.from(new Set(arr))
  5. + return [...new Set(arr)]
  6. }
  7. ​```

在 Markdown 中,“` 用来表示代码块,跟在后面的是语言类型,比如 js、java 和 diff 等

上面的 diff 代码最终在 html 中会转换成下面这段(不过在不同转化器中转换效果会有所差异),最终通过修改样式达到上面的效果。

  1. <pre>
  2. <code>
  3. "//&nbsp;数组去重"
  4. <br>
  5. "const unique = (arr)=>{"
  6. <br>
  7. <span class="deletion">"- return Array.from(new Set(arr))"</span>
  8. <br>
  9. <span class="addition">"+ return [...new Set(arr)]"</span>
  10. <br>
  11. "}"
  12. <br>
  13. </code>
  14. </pre>

很多 Demo 代码都会实现一个 TodoList,我们用 Markdown 来做一个,实现下面这种 Todo 效果

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

原始写法是下面这样

  1. -空格[空格]空格待完成
  2. -空格[x]空格已完成
  3. -空格[空格]空格~~未完成~~

图片描述

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

  1. ![图片描述](https://img2020.cnblogs.com/other/1550214/202101/1550214-20210110223328926-796332276.png)

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

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

  1. <img src='https://img2020.cnblogs.com/other/1550214/202101/1550214-20210110223328926-796332276.png' width=300px height=200px />
  2. // 写法二,自动缩放
  3. <img src='https://img2020.cnblogs.com/other/1550214/202101/1550214-20210110223328926-796332276.png' width=40%/>

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

  1. // 原始 markdown 语法
  2. ![图片描述](https://img2020.cnblogs.com/other/1550214/202101/1550214-20210110223328926-796332276.png)
  3. // 转化成 html 后语法
  4. <img src="https://img2020.cnblogs.com/other/1550214/202101/1550214-20210110223328926-796332276.png" alt="图片描述">

之前写过一篇 Array 原型方法源码实现大解密 的文章,里面就用到了这一能力。点击下面例子的「展开查看规范」后,就会展开更多内容。

展开查看规范

这是展开后的内容1

原始写法比较简单,用到了 <details><summary> 标签

  1. <details>
  2. <summary>展开查看规范</summary>
  3. 这是展开后的内容1
  4. </details>

锚点是网页制作中的一种,又叫命名锚记。命名锚记就像一个迅速定位器一样,它是一种页面内的超级链接。

锚点链接就是点击后会跳转到对应的锚点位置,想到链接跳转就能想到 <a></a> 标签

在这里我们有 2 种方式实现这个效果

  • Markdown 原始写法 [名称](#id)

  • HTML 语法 <a href="#id">名称</a>

点击我跳转到目录树

名称

原始写法就是下面这种了

  1. [点击我跳转到目录树](#目录树)
  2. <a href="#目录树">名称</a>

这种直接在文章中使用 [TOC] 就可以,会转化成下面这种格式

  1. <div class="table-of-contents">
  2. <ul>
  3. <li><a href="">代码diff</a></li>
  4. <li><a href="">待办事项</a></li>
  5. ...
  6. </ul>
  7. </div>

不过这样也存在兼容性问题,Github 中并不支持,可以使用 github-markdown-toc 这个库自动生成,其实它的原理就是自动生成锚标记,然后就可以页面内跳转了。

最后来介绍下怎么换行,比如最长使用的 Markdown 工具是 Typora,换行后发到 github 发现并没有什么卵用,其实这时候使用 CSS 的 <br> 标签就可以了。

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

文章持续更新,可以微信搜索「高级前端进阶 」第一时间阅读,回复【资料】【面试】【简历】有我准备的一线大厂面试资料,本文 GitHub https://github.com/yygmind 已收录,有一线大厂面试完整考点和系列文章,欢迎 Star。

有任何问题都可以来问我

版权声明:本文为yygmind原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/yygmind/p/14259973.html