Vditor 使用 Markdown 语法,在 Markdown 标准里,并没有定义图片的尺寸,这里给出如何自定义图片的尺寸。
扩展 markdown 语法:
![图片](a.jpg){width=100px}
约定图片地址后紧跟着{} 之间为图片的尺寸,中间不能有空格。这是我在 https://kmath.cn 使用的代码
在页面渲染时,(如果使用 jquery 可以使用 $(document).ready() 或者使用 vditor 的 preview 渲染完成时间来操作。)
基本思路:就是遍历 img 标签,同时使用 nextSibling 获取紧挨着图片的文字,如果该文字后面第一个字符是{ 并且包含了 } 则提取 其中的文本。
如果修改源代码可以在 \src\ts\markdown\mediaRender.ts 修改
/* markdown 增加图片尺寸,只支持 width */
/* 情况①图片尺寸后跟的是文本 :
输入: ![图片](a.jpg){width=100px} markdown很好用 <br>
输出: <img src=a.jpg width=100px> markdown很好用
*/
/*情况②图片尺寸后跟的是HTML标签 :
输入: ![图片](a.jpg){width=100px} <p>标题</p>
输出: <img src=a.jpg width=100px> <p>标题</p>
*/
element.querySelectorAll("img").forEach((imgElement) => {
let next= imgElement.nextSibling ;
if(next!=null)
{
let hello=next.textContent;
var start = hello.indexOf("{")
var end = hello.indexOf("}")
var width = "0";
if (start == 0 && end > 0) {
var sub = hello.substring(start + 1, end);
width=sub.split('=')[1].trim();
imgElement.setAttribute("width",width);
//REMOVE START
let next2 = next.nextSibling;
if (next2 != null) {
next.remove();
} else {
next.remove();
var remain = hello.substring(end + 1);
imgElement.after(remain);
}
// REMOVE END
}
}
});
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于