博客园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 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语法扩展相关推荐
- markdown mysql高亮_修改博客园markdown编辑器代码高亮风格的方法
作为一个工程师,追求极致与艺术也应当成为我们生活中的一部分,作为自己的心爱之物--博客,当然也得装扮一下,我对代码高亮有自己所喜欢的风格~还好程序员的世界总是共通的,已经有前辈开发了一些代码高亮的样式 ...
- 改进博客园Markdown显示功能(加代码行号、显示代码所用编程语言)
博客园的markdown模式下的代码高亮功能使用的是highlight.js,没有行号和显示相应编程语言的功能,只好自己将其改造了一下(将这两种功能一并实现了)~ 先看一下效果,再详细介绍方法~ 查看 ...
- 博客园Markdown模式的MATLAB代码高亮方案
前言 博客园随笔写作可以使用 Markdown 进行编辑,当展示代码时,可以使用下面的语法来对代码块进行展示: ```language code-content ``` 一般来说,指明了 lang ...
- 博客园Markdown排版技巧
最近看很多别人的博客,排版什么的都特别漂亮,但是又感觉写博客时花太多时间排版不是很必要.希望将注意力更多的放到写作内容上面.如何更好更快地排版呢?可以看看我发现的一些技巧和工具. 目录 需求分析 工具 ...
- GFM与博客园markdown测试
博客园流程图 st=>start: Start e=>end op=>operation: My Operation cond=>condition: Yes or No?st ...
- 博客园markdown公式
博客园插入公式有以下要点: $formula$表示行内公式 $$formula$$表示块级公式 使用图片表示公式,知乎也是使用图片表示公式,虽然有一种mathML的标记语言能够表示公式,但是不同浏览器 ...
- 入门写博客之markdown语法
目录 1. 快捷键 2. 基本语法 2.1 字体设置斜体.粗体.删除线 2.2 分级标题 2.3 链接 2.4 分割线 2.5 代码块 2.6 引用 2.7 列表 2.8 表格 3. 常用技巧 3.1 ...
- activiti高亮显示图片_第 09 篇:让博客支持 Markdown 语法和代码高亮
作者:HelloGitHub-追梦人物 文中涉及的示例代码,已同步更新到HelloGitHub-Team 仓库[1] 为了让博客文章具有良好的排版,显示更加丰富的格式,我们使用 Markdown 语法 ...
- Django博客--5.让博客支持 Markdown 语法和代码高亮
文章目录 0.前言 1.安装 Python Markdown 2.在 detail 视图中解析 Markdown 3.safe 标签 4.代码高亮 5.效果展示 0.前言 Markdown 是一种 H ...
最新文章
- 如何在调试页面的时候清除页面的缓存?
- 中国程序员开发的远程桌面火了!Mac 可用,只有 9MB,支持自建中继器
- CSP认证201809-2	买菜[C++题解]:区间覆盖、pair、交集长度、右端点的min-左端点的max
- Python入门100题 | 第021题
- Dubbo 入门介绍
- Go Web:HttpRouter路由(一)
- Java:comp/env/讲解与JNDI
- PL/0语言编译器扩展 编译原理课程实践(1)
- Hadoop HBase
- java部分_java基础部分
- jsf初学解决faces 中文输入乱码问题
- Qt 中Socket编程实例
- oracle获取日期所在周,ORACLE 获取某一日期所在周的周一
- 许鹏-Spark源代码阅读经验和C++经典书籍资料推荐
- mysql 修改 frm_高性能MySQL:只修改.frm 文件
- SQL计算月环比、月同比
- Jepg转DICOM
- 全网最新PHP教程大全,PHP进阶自学教程大全!
- DBC文件的编辑方法
- 红轴和茶轴哪个适合游戏 红轴和茶轴哪个手感好
热门文章
- mysql学_MySQL学习(一)
- 网络营销推广软件浅析外链怎么做才更“香”,才能促进网站自然有首页排名?...
- 企业网络推广方法之网站内容链接SEO该怎么做?
- 网站排名好却没流量到底是什么环节出了问题?
- 外贸网站建设需要考虑的五大层面
- window 桌面开发_C#桌面开发的未来WebWindow
- Java基础-我所理解的泛型
- DDos游戏行业受攻击最多
- go语言笔记——go是有虚拟机runtime的,不然谁来做GC呢,总不会让用户自己来new和delete进行内存管理吧,还有反射!Go 的 runtime 嵌入到了每一个可执行文件当中...
- Cassandra 数据模型设计,根据你的查询来制定设计——反范式设计本质:空间换时间...