马黑黑 发表于 2026-2-11 14:04

Markdown在线编辑器升级版

<style>
        .mnBox { margin: 20px 0; left: calc(50% - 81px); transform: translateX(-50%); padding: 0 16px; width: clamp(600px, 90vw, 1400px); height: 90vh; display: flex; gap: 20px; flex-wrap: wrap; box-shadow: 1px 1px 6px gray; background: linear-gradient(45deg, beige, aliceblue, beige); z-index: 1000; position: relative; }
        .mnBox * { box-sizing: border-box; }
        #txtEditor, #showDiv { height: 80%; flex: 1 1 calc(50% - 10px); padding: 18px; background: #fff; }
        #showDiv { overflow: auto; position: relative; }
        #showDiv:empty::before { content: '效果预览'; position: absolute; color: #aaa; }
        #showDiv { font-size: 16px; }
        #showDiv table { border-collapse: collapse; white-space: pre-wrap; box-sizing: border-box; }
        #showDiv th, #showDiv td { padding: 8px 10px; border: 1px solid #999; }
        #txtEditor { font-size: 18px; resize: none; tab-size: 4; }
        .barDiv { height: calc(10% - 20px); flex: 1 1 100%; padding: 8px; }
        .barDiv h1 { text-align: center; padding-top: 10px; margin: 0; }
        .barDiv button { margin: 0 4px; min-width: 100px; padding: 4px 8px; border-radius: 10px; background: none; border: none; cursor: pointer; }
        .barDiv button:hover { box-shadow: 1px 1px 2px gray; color: red; }
        .floatRight { float: right; }
</style>

<div class="mnBox">
        <div class="barDiv">
                <h1>Markdown在线编辑器</h1>
        </div>
        <textarea id="txtEditor" placeholder="输入Markdown文本"></textarea>
        <div id="showDiv"></div>
        <div class="barDiv">
                <button type="button" id="showSample">基本示例</button>
                <button type="button" id="copyMDContent">复制Markdown</button>
                <button type="button" id="copyHtml">复制HTML</button>
                <button type="button" id="clearContent" class="floatRight">重置</button>
        </div>
</div>

<script type="module">
        import { marked } from 'https://638183.freep.cn/638183/web/mod/marked.js';
        import { copy } from 'https://638183.freep.cn/638183/web/mod/copy.js';
        import { samples, cssCode } from 'https://638183.freep.cn/638183/web/mod/md.doc.js';

        let scheduled = false;
        let lastValue = '';

        txtEditor.oninput = () => {
                const value = txtEditor.value;
               
                if (!scheduled && value !== lastValue) {
                        scheduled = true;
                        requestAnimationFrame(() => {
                                showDiv.innerHTML = marked.parse(value);
                                lastValue = value;
                                scheduled = false;
                        });
                }
        };

        txtEditor.onkeydown = (e) => {
                if (e.key !== 'Tab') return;
                e.preventDefault();
                txtEditor.setRangeText('\t');
                txtEditor.selectionStart += 1;
        };

        showSample.onclick = () => {
                txtEditor.value = samples;
                showDiv.innerHTML = marked.parse(samples);
        }

        clearContent.onclick = () => txtEditor.value = showDiv.innerHTML = '';
        copyMDContent.onclick = () => copy(txtEditor.value);
        copyHtml.onclick = () => copy(cssCode + showDiv.outerHTML);
</script>

马黑黑 发表于 2026-2-11 14:12

主要更新:

(一)界面细节调整,UI友好性有所提升;
(二)重写基本语法示例,可能更为一目了然;
(三)给预览区增加表格等CSS样式,复制HTML代码时样式跟走;
(四)添加复制功能,壳复制纯Markdown代码和由其生成的HTML代码。

编辑器的设计主要基于PC段显示器环境,对移动段显示环境未作考虑。

梦江南 发表于 2026-2-11 15:45

谢谢黑黑老师辛苦,很好用!{:4_187:}

红影 发表于 2026-2-11 19:11

其实,还是没整明白这个怎么用,每次来看教案的时候都是喝完酒的时候{:4_173:}

马黑黑 发表于 2026-2-11 19:37

红影 发表于 2026-2-11 19:11
其实,还是没整明白这个怎么用,每次来看教案的时候都是喝完酒的时候
你可以假设你在写一篇学术论文。写这样的东东,Markdow 能让你轻松实现:你只需少量的语法规范,就可以轻松地进行创作,不必过多关心排版问题。然后,你写成的东东,可以让你或你的助手轻松地进行精细排版。换句话说,你用 Markdown 写出的东东,不论将来演变为Word文档还是博文,不论是Windows平台还是Linux系统还是Mac,它都可以轻松处理,借助相应编辑器,你还可以将你的文本转为 PPT、博文、HTML页面甚至是别的。

就是说,Markdown 简化了文档的排版,其语法规范下的内容在不同的层面都可以轻松适配。

马黑黑 发表于 2026-2-11 19:39

梦江南 发表于 2026-2-11 15:45
谢谢黑黑老师辛苦,很好用!

{:4_190:}

红影 发表于 2026-2-11 21:23

马黑黑 发表于 2026-2-11 19:37
你可以假设你在写一篇学术论文。写这样的东东,Markdow 能让你轻松实现:你只需少量的语法规范,就可以轻 ...

看到了黑黑后来发的那个,已经明白它的用途了,这个太好了。
黑黑辛苦了{:4_187:}

马黑黑 发表于 2026-2-11 22:38

红影 发表于 2026-2-11 21:23
看到了黑黑后来发的那个,已经明白它的用途了,这个太好了。
黑黑辛苦了

{:4_190:}

杨帆 发表于 2026-2-12 16:21

界面更友好,功能更完善,谢谢马老师将Markdown在线编辑器荣耀升级{:4_180:}

马黑黑 发表于 2026-2-12 18:45

杨帆 发表于 2026-2-12 16:21
界面更友好,功能更完善,谢谢马老师将Markdown在线编辑器荣耀升级

不过我这个知识基于基本Markdown语法,对于扩展语法和变体语法,它处理不来

杨帆 发表于 2026-2-12 19:28

马黑黑 发表于 2026-2-12 18:45
不过我这个知识基于基本Markdown语法,对于扩展语法和变体语法,它处理不来

最基础的也是最重要的,先学习基本Markdown语法,学习扩展语法和变体语法是更高要求了{:4_173:}

马黑黑 发表于 2026-2-12 22:28

杨帆 发表于 2026-2-12 19:28
最基础的也是最重要的,先学习基本Markdown语法,学习扩展语法和变体语法是更高要求了

那倒也是。对于一般的文档,基础的Markdown语法可以应付,也是Markdown设计的初衷,至于更精细的需求则是更为专业性的文档,用到时再说
页: [1]
查看完整版本: Markdown在线编辑器升级版