自己写一个网页版的Markdown实时编辑器

这几天忙着使用Python+Django+sqlite 搭建自己的博客系统,但是单纯的使用H5的TextArea,简直太挫了有木有。所以,就想模仿一下人家内嵌到网页上的Markdown编辑器,从而让自己的博客系统更加美观一点。


准备

需要什么

  • Markdown“解释器”:便于处理文本输入以及实时预览
  • Bootstrap模板 :建议的H5界面看起来并不好看,所以使用这个框架美化一下。
  • Sublime Text:当然也可以是记事本或者其他的文本编辑器,这就是我们编写处理逻辑的工具而已。

下载及安装

简单版

我们可以在桌面上创建一个文件夹,方便我们进行管理。

然后将刚才下载的那个markdown-js/releases解压咯,把里面的js文件放到这个文件夹下面即可。

然后在创建一个html文件即可,大致可以如下:

<!DOCTYPE html>
<html>
  <body>
    <textarea id="text-input" oninput="this.editor.update()"
              rows="6" cols="60">Type **Markdown** here.</textarea>
    <div id="preview"> </div>
    <script src="markdown.js"></script>
    <script>
      function Editor(input, preview) {
        this.update = function () {
          preview.innerHTML = markdown.toHTML(input.value);
        };
        input.editor = this;
        this.update();
      }
      var $ = function (id) { return document.getElementById(id); };
      new Editor($("text-input"), $("preview"));
    </script>
  </body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

效果如下:

美化版

这个界面确实是不好看,所以加点美化效果。这里使用的是Bootstrap。

<!DOCTYPE html>
<html>
<head>
<link href="http://cdn.bootcss.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet">
</head>
  <body style="padding:30px">
    <textarea id="text-input" oninput="this.editor.update()"
              rows="6" cols="60">Type **Markdown** here.</textarea>
    <div id="preview"> </div>
    <script src="markdown.js"></script>
    <script>
      function Editor(input, preview) {
        this.update = function () {
          preview.innerHTML = markdown.toHTML(input.value);
        };
        input.editor = this;
        this.update();
      }
      var $ = function (id) { return document.getElementById(id); };
      new Editor($("text-input"), $("preview"));
    </script>
  </body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

效果如下图:

增强版

这样看着布局什么的也不够好看,所以我就多加了点元素。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Markdown本地练习</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
     <link rel="stylesheet" href="http://apps.bdimg.com/libs/bootstrap/3.3.0/css/bootstrap.min.css">
     <script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script>
     <script src="http://apps.bdimg.com/libs/bootstrap/3.3.0/js/bootstrap.min.js"></script>
</head>
<body style="padding:30px;background:#e6e6e6;">
<div style="width:100%;padding:7px;">
<button type="button" align="center" class="btn btn-primary btn-lg" style="font-size:30px;">
  <span class="glyphicon glyphicon-user"></span> 嗨,左边输入markdown语句,右边实时预览
</button>
</div>
<textarea id="text-input" oninput="this.editer.update()" style="width:50%;height:768px; background:#CBEFD9;font-size:22px;">
</textarea>
<div id="preview" style="float:right;width:50%;height:100%; border:0.5px solid #315;background:#e6e6e6;"></div>
<script src=‘markdown.js‘></script>
<script type="text/javascript">
    function Editor(input , preview){
        this.update = function(){
            preview.innerHTML = markdown.toHTML(input.value);
        };
        input.editer = this
        this.update()
    }

    var $ = function(id) {
        return document.getElementById(id)
    }
    new Editor($("text-input"),$("preview"))
</script>
<!-- jQuery (necessary for Bootstrap‘s JavaScript plugins) -->
    <script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="js/bootstrap.min.js"></script>
</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

效果如下:

总结

相信大家也看出来了,虽然已经是增强版了,但是这并不是这个小程序的极限。我们可以利用JavaScript以及Bootstrap实现更好看的页面效果。

我们可以在本地练习Markdown的语法,同时也可以将这个代码放到我们的博客系统上,来提升用户体验!

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

原文地址:https://www.cnblogs.com/djuwcnhwbx/p/10323137.html

时间: 2024-11-09 12:00:40

自己写一个网页版的Markdown实时编辑器的相关文章

转---写一个网页进度loading

作者:jack_lo www.jianshu.com/p/4c93f5bd9861 如有好文章投稿,请点击 → 这里了解详情 loading随处可见,比如一个app经常会有下拉刷新,上拉加载的功能,在刷新和加载的过程中为了让用户感知到 load 的过程,我们会使用一些过渡动画来表达.最常见的比如"转圈圈","省略号"等等. 网页loading有很多用处,比如页面的加载进度,数据的加载过程等等,数据的加载loading很好做,只需要在加载数据之前(before aja

如何写一个网页标题title的闪动提示

通过网页title来提示用户有新消息这个功能很常见,比如现在的微博,还有一些邮箱,这个功能都很常见.如何实现则个功能呢? 思路是:通过ajax访问后台,若有新消息,则将网页的title替换为 提示信息 ,并与空格来回切换.例:[你有新消息]与[ ]切换.提示内容弄是动态的,所以替换文字的空格数目也是算出的.这里用全角的空格.但是如果提示消息中有‘数字’等半角字符的话就会出现问题.全角的空格比半角的1的宽度要宽的多.这样的话,闪动起来看着就不是很舒服:解决方法就是用全角的空格替换全角的字符,半角的

手写一个简易版Tomcat

前言 Tomcat Write MyTomcat Tomcat是非常流行的Web Server,它还是一个满足Servlet规范的容器.那么想一想,Tomcat和我们的Web应用是什么关系? 从感性上来说,我们一般需要把Web应用打成WAR包部署到Tomcat中,在我们的Web应用中,我们要指明URL被哪个类的哪个方法所处理(不论是原始的Servlet开发,还是现在流行的Spring MVC都必须指明). 由于我们的Web应用是运行在Tomcat中,那么显然,请求必定是先到达Tomcat的.To

12款实用免费批量图片体积优化压缩工具!网页设计必备 (在线网页版+桌面工具下载)(转)

转载 楼主我用的第一个图片优化,效果非常好,推荐! 我们都知道,漂亮的图片可以让一个网页看起来更加高端大气上档次.然而,一般高分辨率的高清图片/照片的体积都比较巨大,如果网页里包含很多图片,那网页加载的速度就会变得很慢. 不仅如此,如果网页的访问量较大,其中图片消耗的流量带宽也会成倍增加!因此,如能在不损失图片质量或在肉眼不易辨别的情况下优化压缩图片,尽可能减小图片体积,那么一来可以加快网页显示速度,二来减轻服务器负担,三来还能大大减少带宽流量的成本支出,实乃好处多多.因此今天整理了这些实用的图

网页版批量提取目录下特定文件类型

功能: 这是一个网页版的文件批量提取特定目录下的某种类型的文件的功能. 初始化页面文本框中值为空,当输入完成确认后,文本框中数据不会发生变化,撤销也不会发生变化,点击清空按钮则全部清空. 主要思路: 1.文本框中的值用(String)session.getAttribute()来填充,第一次打开界面,用if语句来判断,显示空,跳转过来的就显示第一次输入的值. 2.ReceiveStartServlet.java,RevokeServlet.java,ClearServlet.java都跳转到起始

javascript实现移动端网页版阅读器

现在手机上的文本阅读app已经非常丰富,良好的阅读体验与海量的书库常常令我感到无比兴奋. 我想到8年前用一点几寸屏幕的mp3看电子书的情景,顿生一种淡淡的温馨.再久远一些,小的时候,我也经常和小伙伴们组团去书店看白书,也就是白看书.古老的木质书架上那一叠叠厚重的黄皮小说书,在年幼的我们眼里仿佛是比盘子里的午餐肉更加美味可口的东西. 而在当今这个信息化的时代,看书变得空前的便利,可是儿时那种期待和兴奋的感受却消失在了时间的长河. 岁月在流逝,时代在进步. 愿放下所有的浮躁,在新的时代愉快地生活,无

网页版电子表格控件tmlxSpreadsheet免费下载地址

tmlxSpreadsheet 是一个由JavaScript 和 PHP 写成的电子表格控件(包含WP插件, Joomla插件等等).. 程序员可以容易的添加一个类似Excel功能的,可编辑的表格功能到自己的Web应用中. 目前有一些在线的电子表格应用,例如谷歌的google docs, 但是这些应用不能用在内网或将数据存储到自己的服务器中.你的需求往往是需要在企业内部网络和应用中使用这种功能. 利用dhtmlxSpreadsheet,  你可以非常容易的实现一个网页版的电子表格功能(在线编辑或

网页版批量文件重命名

功能:这是一个网页版的文件批量重命名 操作步骤: 输入文件所在的绝对路径, 输入你想要替换的关键字, 输入你想要用什么字符来替换他(可为空), 点击确定,文件将会批量被重命名, 点击撤回就会还原出起初的文件名字, 点击清空主要是一键清除文本框里面的内容. 总的有1个jsp,四个Java程序共同完成这个功能: start.jsp(显示界面)   CodeFilter.java(过滤器,主要负责编码)   ReceiveStartServlet.java(接受启动,进行文件操作) RevokeSer

Vue+Element实现网页版个人简历系统

这篇文章介绍一个使用Vue+Element实现的个人简历系统,主要用到的技术有:vue.element.css3.css定位. 作者在window10进行开发,目前只在chrome上进行过测试,没有大的毛病.但是还有很多小功能还不完善,代码也未进行优化,后续会继续完善功能,优化代码. 声明:项目相对来说就是一个纯静态页面,代码都比较简单,大佬可闭眼绕过,或者看一眼留下宝贵意见也可 一.项目介绍 本项目是一个网页版的个人简历系统,主要使用的技术为vue2+element进行实现. 个人简历系统主要