coded28868a308312a26.png

从Markdown语法解析说起

Markdown作为一种非常轻便的标记语言,非常适合博客的写作。其语法十分简单,一般都是一些特殊的字符组合来实现特定的语法,比如一级标题、二级标题,插图、插表等等。这些语法和HTML之间存在一种转换关系,或者说映射。其中担当这个转化工作的就是 js 脚本文件,其术语称之为解析

查阅相关资料后得知,目前来说,对于Markdown这门语言,标准语法很有限,所以后面不断发展出了许多扩展语法,但是仍然十分有限,并且不太好自定义扩展语法(教程太复杂,不适合新手),为此我折腾了许久,摸索出了自定义语法的实现方式。

自定义语法

在这里我自己自定义了如下语法:

{video}(//player.bilibili.com/player.html?aid=54874176&cid=95969626&page=1)插入视频
{music}(//music.163.com/outchain/player?type=2&id=32102187&auto=0) 插入网易云音乐

其中url是去除 http:https: 这样的前缀后的网址。

调用后效果

插入音乐

{music}(//music.163.com/outchain/player?type=2&id=32102187&auto=0)

插入视频

{video}(//player.bilibili.com/player.html?aid=54874176&cid=95969626&page=1)

实现方法

实现上述自定义Markdown语法功能,需要引入js脚本和对应的CSS样式

JS脚本

var d = document;
var html = d.getElementById('cnblogs_post_body').innerHTML;
html = md2video(html);
html = md2music(html);
d.getElementById('cnblogs_post_body').innerHTML = html;function md2video(str) {var video_str1 = '<div class="video"><iframe src="';var video_str2 ='" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe></div>';return str.replace(/\<p\>\{video\}\(([^{}()]+)\)\<\/p\>/g, function(match, $1) {return video_str1 + $1 + video_str2});
}function md2music(str) {var music_str1 = '<div class="music"><iframe src="';var music_str2 ='" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe></div>';return str.replace(/\<p\>\{music\}\(([^{}()]+)\)\<\/p\>/g, function(match, $1) {return music_str1 + $1 + music_str2});
}

注意:上面的脚本一定要写成js脚本文件,在后台调用,否则有些标签会被原来的网页解析成其他的,或者直接解析没了。
调用方法如下:

<!-- 自定义渲染语法-->
<script src="https://blog-static.cnblogs.com/files/gshang/mymd4.js"></script>

CSS样式

/****视频*****/
#cnblogs_post_body .video {height: 0;padding-bottom: 56.25%;/* 16:9 */position: relative;width: 100%;
}#cnblogs_post_body .video iframe {position: absolute;left: 0;top: 0;width: 100%;height: 100%;
}/****音乐*****/
#cnblogs_post_body .music {height: 140px;/*padding-bottom: 14.39%;*//* 16:9 */position: relative;width: 100%;
}#cnblogs_post_body .music iframe {position: absolute;left: 0;top: 0;width: 100%;height: 100%;
}

展望

其实基于上面的实现过程,后续可以自行开发出更多的自定义语法,这样写作时,就非常方便了。

转载于:https://www.cnblogs.com/gshang/p/11505646.html

博客园markdown语法扩展相关推荐

  1. markdown mysql高亮_修改博客园markdown编辑器代码高亮风格的方法

    作为一个工程师,追求极致与艺术也应当成为我们生活中的一部分,作为自己的心爱之物--博客,当然也得装扮一下,我对代码高亮有自己所喜欢的风格~还好程序员的世界总是共通的,已经有前辈开发了一些代码高亮的样式 ...

  2. 改进博客园Markdown显示功能(加代码行号、显示代码所用编程语言)

    博客园的markdown模式下的代码高亮功能使用的是highlight.js,没有行号和显示相应编程语言的功能,只好自己将其改造了一下(将这两种功能一并实现了)~ 先看一下效果,再详细介绍方法~ 查看 ...

  3. 博客园Markdown模式的MATLAB代码高亮方案

    前言 博客园随笔写作可以使用 Markdown 进行编辑,当展示代码时,可以使用下面的语法来对代码块进行展示: ​```language code-content ​``` 一般来说,指明了 lang ...

  4. 博客园Markdown排版技巧

    最近看很多别人的博客,排版什么的都特别漂亮,但是又感觉写博客时花太多时间排版不是很必要.希望将注意力更多的放到写作内容上面.如何更好更快地排版呢?可以看看我发现的一些技巧和工具. 目录 需求分析 工具 ...

  5. GFM与博客园markdown测试

    博客园流程图 st=>start: Start e=>end op=>operation: My Operation cond=>condition: Yes or No?st ...

  6. 博客园markdown公式

    博客园插入公式有以下要点: $formula$表示行内公式 $$formula$$表示块级公式 使用图片表示公式,知乎也是使用图片表示公式,虽然有一种mathML的标记语言能够表示公式,但是不同浏览器 ...

  7. 入门写博客之markdown语法

    目录 1. 快捷键 2. 基本语法 2.1 字体设置斜体.粗体.删除线 2.2 分级标题 2.3 链接 2.4 分割线 2.5 代码块 2.6 引用 2.7 列表 2.8 表格 3. 常用技巧 3.1 ...

  8. activiti高亮显示图片_第 09 篇:让博客支持 Markdown 语法和代码高亮

    作者:HelloGitHub-追梦人物 文中涉及的示例代码,已同步更新到HelloGitHub-Team 仓库[1] 为了让博客文章具有良好的排版,显示更加丰富的格式,我们使用 Markdown 语法 ...

  9. Django博客--5.让博客支持 Markdown 语法和代码高亮

    文章目录 0.前言 1.安装 Python Markdown 2.在 detail 视图中解析 Markdown 3.safe 标签 4.代码高亮 5.效果展示 0.前言 Markdown 是一种 H ...

最新文章

  1. 如何在调试页面的时候清除页面的缓存?
  2. 中国程序员开发的远程桌面火了!Mac 可用,只有 9MB,支持自建中继器
  3. CSP认证201809-2 买菜[C++题解]:区间覆盖、pair、交集长度、右端点的min-左端点的max
  4. Python入门100题 | 第021题
  5. Dubbo 入门介绍
  6. Go Web:HttpRouter路由(一)
  7. Java:comp/env/讲解与JNDI
  8. PL/0语言编译器扩展 编译原理课程实践(1)
  9. Hadoop HBase
  10. java部分_java基础部分
  11. jsf初学解决faces 中文输入乱码问题
  12. Qt 中Socket编程实例
  13. oracle获取日期所在周,ORACLE 获取某一日期所在周的周一
  14. 许鹏-Spark源代码阅读经验和C++经典书籍资料推荐
  15. mysql 修改 frm_高性能MySQL:只修改.frm 文件
  16. SQL计算月环比、月同比
  17. Jepg转DICOM
  18. 全网最新PHP教程大全,PHP进阶自学教程大全!
  19. DBC文件的编辑方法
  20. 红轴和茶轴哪个适合游戏 红轴和茶轴哪个手感好

热门文章

  1. mysql学_MySQL学习(一)
  2. 网络营销推广软件浅析外链怎么做才更“香”,才能促进网站自然有首页排名?...
  3. 企业网络推广方法之网站内容链接SEO该怎么做?
  4. 网站排名好却没流量到底是什么环节出了问题?
  5. 外贸网站建设需要考虑的五大层面
  6. window 桌面开发_C#桌面开发的未来WebWindow
  7. Java基础-我所理解的泛型
  8. DDos游戏行业受攻击最多
  9. go语言笔记——go是有虚拟机runtime的,不然谁来做GC呢,总不会让用户自己来new和delete进行内存管理吧,还有反射!Go 的 runtime 嵌入到了每一个可执行文件当中...
  10. Cassandra 数据模型设计,根据你的查询来制定设计——反范式设计本质:空间换时间...