博客园markdown语法扩展

Posted gshang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了博客园markdown语法扩展相关的知识,希望对你有一定的参考价值。

从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 video_str1 = '<div class="video"><iframe src="';
var video_str2 = '" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe></div>';
// 音乐
var music_str1 = '<div class="music"><iframe src="';
var music_str2 = '" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe></div>';


function mymd() 
    // 视频语法:video(不带http:或https:的链接)
    document.body.innerHTML = document.body.innerHTML.replace(/\<p\>\video\\(([^()]+)\)\<\/p\>/g, function(match, $1) 
        return video_str1 + $1 + video_str2
    );
    // 音乐语法:music(不带http:或https:的链接)
    document.body.innerHTML = document.body.innerHTML.replace(/\<p\>\music\\(([^()]+)\)\<\/p\>/g, function(match, $1) 
        return music_str1 + $1 + music_str2
    );

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

<!-- 自定义渲染语法-->
<script src="https://gitee.com/j-x/home/raw/master/md.js"> </script>
<script> mymd() </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%;

展望

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

以上是关于博客园markdown语法扩展的主要内容,如果未能解决你的问题,请参考以下文章

博客园不支持Markdown语法,新博客将发在简书...

MarkDown语法-使用博客园的markDown编辑

Markdown 语法

博客园 Markdown编辑器简要教程

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

考研结束-开启新生活---markdown语法