deepseek v3-0324 Markdown 編輯器 HTML

Markdown 編輯器 HTML

以下是一個美觀的 Markdown 編輯器 HTML 頁面,支持多種主題切換和實時預覽功能:
在這里插入圖片描述

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>多功能 Markdown 編輯器</title><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/github.min.css"><script src="https://cdnjs.cloudflare.com/ajax/libs/marked/4.2.12/marked.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/highlight.min.js"></script><style>:root {--primary-color: #3498db;--secondary-color: #2980b9;--background-color: #f9f9f9;--text-color: #333;--sidebar-color: #2c3e50;--sidebar-text: #ecf0f1;--editor-bg: #fff;--preview-bg: #fff;--border-color: #ddd;}* {margin: 0;padding: 0;box-sizing: border-box;}body {font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;line-height: 1.6;color: var(--text-color);background-color: var(--background-color);transition: all 0.3s ease;}.container {display: flex;min-height: 100vh;}.sidebar {width: 250px;background-color: var(--sidebar-color);color: var(--sidebar-text);padding: 20px;transition: all 0.3s ease;}.sidebar-header {display: flex;justify-content: space-between;align-items: center;margin-bottom: 30px;}.sidebar-title {font-size: 1.5rem;font-weight: bold;}.theme-selector {margin-bottom: 30px;}.theme-selector h3 {margin-bottom: 15px;font-size: 1.1rem;}.theme-options {display: grid;grid-template-columns: repeat(3, 1fr);gap: 10px;}.theme-option {width: 100%;height: 30px;border-radius: 4px;cursor: pointer;border: 2px solid transparent;}.theme-option:hover {opacity: 0.9;}.theme-option.active {border-color: var(--sidebar-text);}.default-theme { background: linear-gradient(135deg, #3498db 50%, #2980b9 50%); }.dark-theme { background: linear-gradient(135deg, #34495e 50%, #2c3e50 50%); }.solarized-theme { background: linear-gradient(135deg, #268bd2 50%, #073642 50%); }.monokai-theme { background: linear-gradient(135deg, #a6e22e 50%, #272822 50%); }.dracula-theme { background: linear-gradient(135deg, #bd93f9 50%, #282a36 50%); }.github-theme { background: linear-gradient(135deg, #24292e 50%, #f6f8fa 50%); }.main-content {flex: 1;display: flex;flex-direction: column;}.toolbar {background-color: var(--primary-color);color: white;padding: 10px 20px;display: flex;justify-content: space-between;align-items: center;}.toolbar-title {font-size: 1.2rem;font-weight: bold;}.toolbar-actions button {background-color: var(--secondary-color);color: white;border: none;padding: 8px 15px;border-radius: 4px;cursor: pointer;margin-left: 10px;transition: background-color 0.2s;}.toolbar-actions button:hover {background-color: #1a6ea0;}.editor-container {display: flex;flex: 1;overflow: hidden;}.editor-section, .preview-section {flex: 1;padding: 20px;overflow-y: auto;position: relative;}.editor-section {background-color: var(--editor-bg);border-right: 1px solid var(--border-color);}.preview-section {background-color: var(--preview-bg);}.section-title {font-size: 1rem;margin-bottom: 15px;color: var(--primary-color);display: flex;align-items: center;}.section-title i {margin-right: 8px;}#markdown-editor {width: 100%;height: calc(100% - 30px);border: 1px solid var(--border-color);border-radius: 4px;padding: 15px;font-family: 'Consolas', 'Monaco', monospace;font-size: 14px;line-height: 1.5;resize: none;background-color: var(--editor-bg);color: var(--text-color);}#markdown-preview {height: calc(100% - 30px);overflow-y: auto;padding: 15px;border: 1px solid var(--border-color);border-radius: 4px;background-color: var(--preview-bg);}#markdown-preview pre {background-color: #f5f5f5;padding: 10px;border-radius: 4px;overflow-x: auto;}#markdown-preview code {font-family: 'Consolas', 'Monaco', monospace;}#markdown-preview blockquote {border-left: 4px solid var(--primary-color);padding-left: 15px;color: #666;margin: 15px 0;}#markdown-preview table {border-collapse: collapse;width: 100%;margin: 15px 0;}#markdown-preview table, #markdown-preview th, #markdown-preview td {border: 1px solid var(--border-color);}#markdown-preview th, #markdown-preview td {padding: 8px 12px;}#markdown-preview img {max-width: 100%;height: auto;}.status-bar {background-color: var(--primary-color);color: white;padding: 8px 20px;font-size: 0.8rem;display: flex;justify-content: space-between;}@media (max-width: 768px) {.container {flex-direction: column;}.sidebar {width: 100%;padding: 15px;}.editor-container {flex-direction: column;}.editor-section, .preview-section {flex: none;height: 50vh;}.editor-section {border-right: none;border-bottom: 1px solid var(--border-color);}}</style>
</head>
<body><div class="container"><div class="sidebar"><div class="sidebar-header"><div class="sidebar-title">MD Editor</div><i class="fas fa-cog"></i></div><div class="theme-selector"><h3>選擇主題</h3><div class="theme-options"><div class="theme-option default-theme active" data-theme="default"></div><div class="theme-option dark-theme" data-theme="dark"></div><div class="theme-option solarized-theme" data-theme="solarized"></div><div class="theme-option monokai-theme" data-theme="monokai"></div><div class="theme-option dracula-theme" data-theme="dracula"></div><div class="theme-option github-theme" data-theme="github"></div></div></div><div class="shortcuts"><h3>Markdown 快捷參考</h3><ul style="margin-top: 10px; padding-left: 20px;"><li><code># 標題</code></li><li><code>**粗體**</code></li><li><code>*斜體*</code></li><li><code>`代碼`</code></li><li><code>- 列表項</code></li><li><code>[鏈接](URL)</code></li><li><code>![圖片](URL)</code></li></ul></div></div><div class="main-content"><div class="toolbar"><div class="toolbar-title"><i class="fas fa-file-alt"></i> 未命名文檔.md</div><div class="toolbar-actions"><button id="export-html"><i class="fas fa-file-export"></i> 導出HTML</button><button id="download-md"><i class="fas fa-download"></i> 下載MD</button></div></div><div class="editor-container"><div class="editor-section"><div class="section-title"><i class="fas fa-edit"></i> 編輯</div><textarea id="markdown-editor" placeholder="在此輸入Markdown文本..."># Markdown 編輯器這是一個**多功能**的Markdown編輯器,支持*實時預覽*和多種主題。## 功能特性- 實時預覽
- 多種主題選擇
- 代碼高亮
- 響應式設計
- 導出功能### 代碼示例```javascript
function helloWorld() {console.log("Hello, Markdown Editor!");
}

表格示例

功能支持
標題?
列表?
代碼塊?
表格?

提示:左側邊欄可以切換主題

            <div class="preview-section"><div class="section-title"><i class="fas fa-eye"></i> 預覽</div><div id="markdown-preview"></div></div></div><div class="status-bar"><div class="status-info">行: 1, 列: 1</div><div class="status-mode">Markdown</div></div></div>
</div><script>// 初始化 marked 和 highlight.jsmarked.setOptions({breaks: true,highlight: function(code, lang) {if (hljs.getLanguage(lang)) {return hljs.highlight(lang, code).value;}return hljs.highlightAuto(code).value;}});// 獲取DOM元素const editor = document.getElementById('markdown-editor');const preview = document.getElementById('markdown-preview');const themeOptions = document.querySelectorAll('.theme-option');const exportHtmlBtn = document.getElementById('export-html');const downloadMdBtn = document.getElementById('download-md');// 初始渲染function updatePreview() {preview.innerHTML = marked.parse(editor.value);}// 實時更新預覽editor.addEventListener('input', updatePreview);// 初始化預覽updatePreview();// 主題切換themeOptions.forEach(option => {option.addEventListener('click', function() {// 移除所有active類themeOptions.forEach(opt => opt.classList.remove('active'));// 添加active類到當前選項this.classList.add('active');// 根據選擇的主題更新CSS變量const theme = this.dataset.theme;changeTheme(theme);});});// 主題配置function changeTheme(theme) {const root = document.documentElement;switch(theme) {case 'dark':root.style.setProperty('--primary-color', '#34495e');root.style.setProperty('--secondary-color', '#2c3e50');root.style.setProperty('--background-color', '#1a1a1a');root.style.setProperty('--text-color', '#ecf0f1');root.style.setProperty('--sidebar-color', '#2c3e50');root.style.setProperty('--sidebar-text', '#ecf0f1');root.style.setProperty('--editor-bg', '#2c3e50');root.style.setProperty('--preview-bg', '#34495e');root.style.setProperty('--border-color', '#444');break;case 'solarized':root.style.setProperty('--primary-color', '#268bd2');root.style.setProperty('--secondary-color', '#073642');root.style.setProperty('--background-color', '#fdf6e3');root.style.setProperty('--text-color', '#586e75');root.style.setProperty('--sidebar-color', '#073642');root.style.setProperty('--sidebar-text', '#93a1a1');root.style.setProperty('--editor-bg', '#eee8d5');root.style.setProperty('--preview-bg', '#fdf6e3');root.style.setProperty('--border-color', '#93a1a1');break;case 'monokai':root.style.setProperty('--primary-color', '#a6e22e');root.style.setProperty('--secondary-color', '#272822');root.style.setProperty('--background-color', '#272822');root.style.setProperty('--text-color', '#f8f8f2');root.style.setProperty('--sidebar-color', '#272822');root.style.setProperty('--sidebar-text', '#f8f8f2');root.style.setProperty('--editor-bg', '#272822');root.style.setProperty('--preview-bg', '#272822');root.style.setProperty('--border-color', '#49483e');break;case 'dracula':root.style.setProperty('--primary-color', '#bd93f9');root.style.setProperty('--secondary-color', '#282a36');root.style.setProperty('--background-color', '#282a36');root.style.setProperty('--text-color', '#f8f8f2');root.style.setProperty('--sidebar-color', '#44475a');root.style.setProperty('--sidebar-text', '#f8f8f2');root.style.setProperty('--editor-bg', '#282a36');root.style.setProperty('--preview-bg', '#282a36');root.style.setProperty('--border-color', '#6272a4');break;case 'github':root.style.setProperty('--primary-color', '#24292e');root.style.setProperty('--secondary-color', '#f6f8fa');root.style.setProperty('--background-color', '#ffffff');root.style.setProperty('--text-color', '#24292e');root.style.setProperty('--sidebar-color', '#24292e');root.style.setProperty('--sidebar-text', '#f6f8fa');root.style.setProperty('--editor-bg', '#ffffff');root.style.setProperty('--preview-bg', '#f6f8fa');root.style.setProperty('--border-color', '#e1e4e8');break;default: // default themeroot.style.setProperty('--primary-color', '#3498db');root.style.setProperty('--secondary-color', '#2980b9');root.style.setProperty('--background-color', '#f9f9f9');root.style.setProperty('--text-color', '#333');root.style.setProperty('--sidebar-color', '#2c3e50');root.style.setProperty('--sidebar-text', '#ecf0f1');root.style.setProperty('--editor-bg', '#ffffff');root.style.setProperty('--preview-bg', '#ffffff');root.style.setProperty('--border-color', '#ddd');}}// 導出HTMLexportHtmlBtn.addEventListener('click', function() {const htmlContent = `
Markdown導出 ${marked.parse(editor.value)} `;
        const blob = new Blob([htmlContent], { type: 'text/html' });const url = URL.createObjectURL(blob);const a = document.createElement('a');a.href = url;a.download = 'markdown-export.html';document.body.appendChild(a);a.click();document.body.removeChild(a);URL.revokeObjectURL(url);});// 下載MarkdowndownloadMdBtn.addEventListener('click', function() {const blob = new Blob([editor.value], { type: 'text/markdown' });const url = URL.createObjectURL(blob);const a = document.createElement('a');a.href = url;a.download = 'markdown-document.md';document.body.appendChild(a);a.click();document.body.removeChild(a);URL.revokeObjectURL(url);});// 更新光標位置editor.addEventListener('keyup', updateCursorPosition);editor.addEventListener('click', updateCursorPosition);function updateCursorPosition() {const cursorPos = editor.selectionStart;const text = editor.value.substr(0, cursorPos);const lines = text.split('\n');const line = lines.length;const column = lines[lines.length - 1].length + 1;document.querySelector('.status-info').textContent = `行: ${line}, 列: ${column}`;}// 初始化光標位置updateCursorPosition();
</script>
```

功能特點

  1. 實時預覽:左側編輯,右側實時顯示渲染結果
  2. 多種主題:提供6種美觀主題可供選擇
  3. 代碼高亮:使用highlight.js實現代碼語法高亮
  4. 導出功能
    • 導出為HTML文件(包含完整樣式)
    • 下載原始Markdown文件
  5. 響應式設計:適配不同屏幕尺寸
  6. 用戶友好
    • 光標位置顯示
    • Markdown快捷參考
    • 美觀的UI設計

使用方法

  1. 將上述代碼保存為HTML文件
  2. 在瀏覽器中打開該文件
  3. 在左側編輯區輸入Markdown文本
  4. 右側會自動顯示渲染結果
  5. 通過左側邊欄切換不同主題
  6. 使用頂部工具欄按鈕導出或下載內容

這個編輯器完全基于前端技術實現,無需服務器支持,可以直接在本地使用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/74606.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/74606.shtml
英文地址,請注明出處:http://en.pswp.cn/web/74606.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux make 檢查依賴文件更新的原理

1. 文件的時間戳 make 主要依靠文件的時間戳來判斷依賴文件是否有更新。每個文件在文件系統中都有一個時間戳&#xff0c;記錄了文件的三種重要時間&#xff1a; ??訪問時間&#xff08;Accesstime&#xff09;??&#xff1a;文件最后一次被訪問的時間。??修改時間&…

HDEBits中組合邏輯類的部分題目練習

文章目錄 1. More logic gates2. Truth tables3. 256-to-1 4-bit multiplexer4. 3-bit binary adder5. Signed addition overflow6. 4-digit BCD adder7. Minimum SOP and POS8. Karnaugh map9. K-map implemented with a multiplexer總結 1. More logic gates 題目&#xff1…

Apache httpclient okhttp(2)

學習鏈接 Apache httpclient & okhttp&#xff08;1&#xff09; Apache httpclient & okhttp&#xff08;2&#xff09; okhttp github okhttp官方使用文檔 okhttp官方示例代碼 OkHttp使用介紹 OkHttp使用進階 譯自OkHttp Github官方教程 SpringBoot 整合okHttp…

【git項目管理】長話短說

目錄 主要分為三種使用情況 安裝git后第一次使用創建新倉庫并管理克隆倉庫并管理 初次使用git 首先確定電腦的用戶名是純英文&#xff0c;沒有中文和奇怪的符號&#xff0c;如果不滿足這個條件&#xff0c;參考這個 鏈接 修改用戶名 git config --global user.name "…

算法刷題記錄——LeetCode篇(3.2) [第211~212題](持續更新)

更新時間&#xff1a;2025-04-04 算法題解目錄匯總&#xff1a;算法刷題記錄——題解目錄匯總技術博客總目錄&#xff1a;計算機技術系列博客——目錄頁 優先整理熱門100及面試150&#xff0c;不定期持續更新&#xff0c;歡迎關注&#xff01; 215. 數組中的第K個最大元素 給…

【linux學習】linux系統調用編程

目錄 一、任務、進程和線程 1.1任務 1.2進程 1.3線程 1.4線程和進程的關系 1.5 在linux系統下進程操作 二、Linux虛擬內存管理與stm32的真實物理內存區別 2.1 Linux虛擬內存管理 2.2 STM32的真實物理內存映射 2.3區別 三、 Linux系統調用函數 fork()、wait()、exec(…

react redux的學習,多個reducer

redux系列文章目錄 第一章 簡單學習redux,單個reducer 前言 前面我們學習到的是單reducer的使用&#xff1b;要知道redux是個很強大的狀態存儲庫&#xff0c;可以支持多個reducer的使用。 combineReducers ?combineReducers?是Redux中的一個輔助函數&#xff0c;主要用于…

Oracle數據庫數據編程SQL<3.5 PL/SQL 存儲過程(Procedure)>

存儲過程(Stored Procedure)是 Oracle 數據庫中一組預編譯的 PL/SQL 語句集合,存儲在數據庫中并可通過名稱調用執行。它們是企業級數據庫應用開發的核心組件。 目錄 一、存儲過程基礎 1. 存儲過程特點 2. 創建基本語法 3. 存儲過程優點 4. 簡單示例 二、沒有參數的存儲…

手撕AVL樹

引入&#xff1a;為何要有AVL樹&#xff0c;二次搜索樹有什么不足&#xff1f; 二叉搜索樹有其自身的缺陷&#xff0c;假如往樹中插入的元素有序或者接近有序&#xff0c;二叉搜索樹就會退化成單支樹&#xff0c;時間復雜度會退化成O(N)&#xff0c;因此產生了AVL樹&#xff0c…

《 C語言中的變長數組:靈活而強大的特性》

&#x1f680;個人主頁&#xff1a;BabyZZの秘密日記 &#x1f4d6;收入專欄&#xff1a;C語言 &#x1f30d;文章目入 一、變長數組的定義二、變長數組的優勢三、變長數組的使用示例示例1&#xff1a;動態輸入數組大小示例2&#xff1a;變長數組在函數中的應用 四、變長數組的…

【微服務】基礎概念

1.什么是微服務 微服務其實就是一種架構風格&#xff0c;他提倡我們在開發的時候&#xff0c;一個應用應該是一組小型服務而組成的&#xff0c;每一個服務都運行在自己的進程中&#xff0c;每一個小服務都通過HTTP的方式進行互通。他更加強調服務的徹底拆分。他并不是僅局限于…

Linux make與makefile 項目自動化構建工具

本文章將對make與makefile進行一些基礎的講解。 假設我們要建造一座房子&#xff0c;建造過程涉及很多步驟&#xff0c;比如打地基、砌墻、安裝門窗、粉刷墻壁等。每個步驟都有先后順序&#xff0c;并且有些步驟可能依賴于其他步驟的完成。比如&#xff0c;你必須先打好地基才…

如何判斷多個點組成的3維面不是平的,如果不是平的,如何拆分成多個平面

判斷和拆分三維非平面為多個平面 要判斷多個三維點組成的面是否為平面&#xff0c;以及如何將非平面拆分為多個平面&#xff0c;可以按照以下步驟進行&#xff1a; 判斷是否為平面 平面方程法&#xff1a; 選擇三個不共線的點計算平面方程&#xff1a;Ax By Cz D 0檢查其…

多layout 布局適配

安卓多布局文件適配方案操作流程 以下為通過多套布局文件適配不同屏幕尺寸/密度的詳細步驟&#xff0c;結合主流適配策略及最佳實踐總結&#xff1a; 一、?創建多套布局資源目錄? ?按屏幕尺寸劃分? 在 res 目錄下創建以下文件夾&#xff08;根據設備特性自動匹配&#xff…

Java 大視界 -- Java 大數據在智能農業無人機植保作業路徑規劃與藥效評估中的應用(165)

&#x1f496;親愛的朋友們&#xff0c;熱烈歡迎來到 青云交的博客&#xff01;能與諸位在此相逢&#xff0c;我倍感榮幸。在這飛速更迭的時代&#xff0c;我們都渴望一方心靈凈土&#xff0c;而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識&#xff0c;也…

美關稅加征下,Odoo免費開源ERP如何助企業破局?

近期&#xff0c;美國特朗普政府推行的關稅政策對全球供應鏈和進出口企業造成巨大沖擊&#xff0c;尤其是依賴中美貿易的企業面臨成本激增、利潤壓縮和合規風險。在此背景下&#xff0c;如何通過數字化轉型優化管理效率、降低運營成本成為企業生存的關鍵。本文以免費開源ERP系統…

go游戲后端開發25:紅中麻將規則介紹

一、游戲基礎規則介紹 在開發紅中麻將游戲之前&#xff0c;我們需要先了解其基礎規則。紅中麻將的牌面由 a、b、c、d 四種花色組成&#xff0c;其中 a、b、c 分別代表萬、條、筒&#xff0c;每種花色都有 1 - 9 的九種牌&#xff0c;每種牌各有四張&#xff0c;總計 36 張 4 …

Unity:平滑輸入(Input.GetAxis)

目錄 1.為什么需要Input.GetAxis&#xff1f; 2. Input.GetAxis的基本功能 3. Input.GetAxis的工作原理 4. 常用參數和設置 5. 代碼示例&#xff1a;用GetAxis控制角色移動 6. 與Input.GetAxisRaw的區別 7.如何優化GetAxis&#xff1f; 1.為什么需要Input.GetAxis&…

OpenCV:計算機視覺的強大開源庫

文章目錄 引言一、什么是OpenCV&#xff1f;1.OpenCV的核心特點 二、OpenCV的主要功能模塊1. 核心功能&#xff08;Core Functionality&#xff09;2. 圖像處理&#xff08;Image Processing&#xff09;3. 特征檢測與描述&#xff08;Features2D&#xff09;4. 目標檢測&#…

AI浪潮下的IT職業轉型:醫藥流通行業傳統IT顧問的深度思考

AI浪潮下的IT職業轉型&#xff1a;醫藥流通行業傳統IT顧問的深度思考 一、AI重構IT行業的技術邏輯與實踐路徑 1.1 醫藥流通領域的智能辦公革命 在醫藥批發企業的日常運營中&#xff0c;傳統IT工具正經歷顛覆性變革。以訂單處理系統為例&#xff0c;某醫藥集團引入AI智能客服…