博客园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%;
}

展望

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

原文地址:https://www.cnblogs.com/gshang/p/11505646.html

时间: 2024-08-02 03:30:48

博客园markdown语法扩展的相关文章

博客园 Markdown 编辑器指南

标题 只要前面加 # 号即可,一共六级标题 列表 无序列表 无序列表前面加* 无序列表前面加* 无序列表前面加* 有序列表 前面加列号序号1 前面加列号序号2 前面加列号序号3 引用 只需要在前面加>符号 粗体于斜体 打两个**就是粗体 打一个*就是斜体 代码框 这是代码框,有包起来的 使用\`\`\`py更加好一点, 可以包含多行代码 分割线 分割线的语法只需要三个 * 号 在此处分割 在此处分割 博客园 Markdown 编辑器指南 原文地址:https://www.cnblogs.com/

博客园 Markdown编辑器简要教程

简介 ?? 在刚才的导语里提到,Markdown 是一种用来写作的轻量级「标记语言」,它用简洁的语法代替排版,而不像一般我们用的字处理软件 Word 或 Pages 有大量的排版.字体设置.它使我们专心于码字,用「标记」语法,来代替常见的排版格式.例如此文从内容到格式,甚至插图,键盘就可以通通搞定了.?? 目前来看,支持 Markdown 语法的编辑器有很多,包括很多网站(例如简书)也支持了 Markdown 的文字录入.Markdown 从写作到完成,导出格式随心所欲,你可以导出 HTML 格

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

???????作为一个工程师,追求极致与艺术也应当成为我们生活中的一部分,作为自己的心爱之物--博客,当然也得装扮一下,我对代码高亮有自己所喜欢的风格~还好程序员的世界总是共通的,已经有前辈开发了一些代码高亮的样式可供我们开箱即用.Highlightjs就是这样一款产品. ???????下面介绍一下我是如何将这款产品应用于博客园markdown编辑器中的. 第一步,找到你所喜欢的高亮主题 ???????打开Hightlightjs的demo页面 选择你所喜欢的高亮主题.我选择的是Atom One

博客园 markdown测试

##1.是否能用markdown呢 这是个问题 似乎不可以的 ======================= 这是怎么回事呢 来自为知笔记(Wiz) 博客园 markdown测试

博客写作——Markdown语法(1)

杂谈 Markdown 最近注册了博客,肯定得趁热打铁一波.这不,作为博客小白,就先来研究研究Markdown语法. 1.标题 标题的语法比较简单,且最多嵌套6层标题. 语法规则: "#"*n + " " + "标题内容" 其中,n为该标题的层数. 我们来看看效果吧: # 一层标题 ## 二层标题 ### 三层标题 #### 四层标题 ##### 五层标题 ###### 六层标题 输出显示: 一层标题 二层标题 三层标题 四层标题 五层标题 六层

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

前言 博客园随笔写作可以使用 Markdown 进行编辑,当展示代码时,可以使用下面的语法来对代码块进行展示: ?```language code-content ?``` 一般来说,指明了 language 后,应该是可以是实现语法高亮的.其基本原理就是将代码中的 关键字 .变量 .函数 等待字符做正则化匹配,将纯文本的代码内容分块,与固定语法内容的着色方案(css样式)对应上. 然鹅!!大部分编程语言都能实现较好的高亮,而 Matlab 效果却很差,语法样式是错误的!看着很不舒服. 就像下面

公开求助:博客园Markdown编辑器的改进(太简陋)

本人学生党,学业繁重,对JavaScript等一无所知,同时无法忍受博客园默认的markdown编辑器--它太丑.太简陋了. 然后,我看到一个网站:这大概是"所见即所得"Markdown吧_V2EX 上也能用 发现这个项目 HyperMD HyperMD是一个在线的能够"实时预览"的markdown编辑器. HyperMD 是一组 [CodeMirror][] 插件.模式.主题.编辑器命令(Commands)和按键绑定(KeyMap)等. 你可以在一个页面上同时使用

博客园markdown编辑器下上传图片

先对图片进行base64转码 再写语法,eg: ![picture](base64密钥) 为不影响编辑,可将密钥内容放到文章最后,eg: ![picture][img] [img]:base64密钥 转码链接:link 原文地址:https://www.cnblogs.com/junecode/p/11829717.html

博客园 Markdown 示例

标题1 标题2 标题3 标题4 标题5 标题6 百度链接 列1 列2 内容1 内容2 原文地址:https://www.cnblogs.com/cag2050/p/9921792.html