MVC开发Markdown编辑器(2)

MVC Markdown


实时预览

我希望实现一个在线实时预览的Markdown编辑器,左边是编辑处,右边是实时预览界面。

准备工作

引入相关js和css

  • 这里我需要引入bootstrap的css 用来做基本的布局
  • jquery以及之前提到过的mdd的js和css
  1. <link href="~/Scripts/mdd_styles.css" rel="stylesheet" />
  2. <script src="~/Scripts/jquery-1.10.2.min.js"></script>
  3. <script src="~/Scripts/MarkdownDeepLib.min.js"></script>

由于bootstrap默认在Layout中已经引入,这里就不需要引入了

View代码

  1. <div id="markdownDiv" class="row">
  2. <div id="editDiv" class="mdd_modal_frame mdd_editor_wrap col-lg-6">
  3. @Html.TextArea("OrignalText", new { @class = "mdd_modal_content mdd_editor textarea" })
  4. </div>
  5. <div id="renderDiv" class="mdd_modal_frame col-lg-6 ">
  6. <div id="renderContent" class="mdd_modal_content"></div>
  7. </div>
  8. </div>

这里结构很简单最外层一个div 里面2个div一个显示在左,一个显示在右,

因此最外层Div我们设置Class为row让它占满整行,里面两个div都设置为col-lg-6,这样基本的布局就出来了,同时再添加mdd_modal_frame到里面2个子div,这个样式是在mdd_styles.css写好的,它是的div有基本的外框样式

JavaScript代码

  1. function markdown(content) {
  2. //Set required options:
  3. // Set options
  4. md.ExtraMode = true;
  5. md.SafeMode = true;
  6. md.MarkdownInHtml = true;
  7. //Transform your text:
  8. var output = md.Transform(content);
  9. return output;
  10. };
  11. function Transform() {
  12. var content = $("#OrignalText").val();
  13. var html = markdown(content);
  14. $("#renderContent").html(html);
  15. }

通过Transform函数找到需要解析的文本框,将其内容解析并添加到renderContentdiv中

  1. var enterOrignal = false;//鼠标是否在OrigbanText的上
  2. var enterRender = false;//鼠标是否在RenderText的上
  3. $(function() {
  4. $("#OrignalText").click(function() {
  5. this.focus();
  6. });
  7. //本文点击是获取焦点
  8. $("#OrignalText").keyup(Transform);
  9. $("#OrignalText").scroll(function () {
  10. if (enterOrignal){//只有进入OrignalText了才滚动renderContent,
  11. var height = ($("#renderContent").height() * 1.0 / $("#OrignalText").height()) * $("#OrignalText").scrollTop();
  12. $("#renderContent").scrollTop(height);
  13. }
  14. });
  15. $("#renderContent").scroll(function () {
  16. if (enterRender){//只有进入renderContent了才滚动orignal,
  17. var height = ($("#OrignalText").height() * 1.0 / $("#renderContent").height()) * $("#renderContent").scrollTop();
  18. $("#OrignalText").scrollTop(height);
  19. }
  20. });
  21. $("#OrignalText").mouseenter(function () {
  22. enterOrignal = true;//鼠标进入则设置为true
  23. });
  24. $("#OrignalText").mouseleave(function () {
  25. enterOrignal = false;//鼠标离开则设置为false
  26. });
  27. $("#renderContent").mouseenter(function () {
  28. enterRender = true;
  29. });
  30. $("#renderContent").mouseleave(function () {
  31. enterRender = false;
  32. });
  33. });
  34. //滚动条同步滚动
  35. });

在页面加载时绑定事件



双向滚动就完成了

MVC开发Markdown编辑器(2)的更多相关文章

  1. MVC开发Markdown编辑器(1)

    MVC markdown MVC开发Markdown编辑器(1) 前言 安装 解析 结束语 前言 想在近段时间通过mvc开发个人博客,编辑器希望是markdown风格的,这样写文字会很方便.首先先解决 ...

  2. 用nw.js开发markdown编辑器-已完成功能介绍

    这里文章都是从个人的github博客直接复制过来的,排版可能有点乱. 原始地址 http://benq.im/2015/10/29/hexomd-introduction   文章目录 1. 功能列表 ...

  3. Markdown编辑器开发记录(二):Markdown编辑器的使用与开发入门

    Markdown编辑器的使用与开发入门 在部门做技术分享的时候简单整理了一下手里的资料 1 是什么 1.1 Markdown是一种轻量级标记语言 Markdown是一种轻量级标记语言,创始人为约翰·格 ...

  4. Markdown编辑器开发记录(一):开发的初衷和初期踩的坑

    先说下选择Markdown编辑器的原因,我们进行平台开发,需要很多的操作手册和API文档,要在网站中展示出来就需要是HTML格式的文件,但是由于内容很多,不可能全部由技术人员进行文档的编写,如果是只有 ...

  5. 自己动手开发更好用的markdown编辑器-04(实时预览)

    这里文章都是从个人的github博客直接复制过来的,排版可能有点乱. 原始地址 http://benq.im/2015/04/25/hexomd-04/   程序打包   文章目录 1. 打开新窗口 ...

  6. 原创|我是如何从零学习开发一款跨平台桌面软件的(Markdown编辑器)

    原始冲动 最近一直在学习 Electron 开发桌面应用程序,目的是想做一个桌面编辑器,虽然一直在使用Typore这款神器,但无奈Typore太过国际化,在国内水土不服,无法满足我的一些需求. 比如实 ...

  7. 我是如何从零学习开发一款跨平台桌面软件的(Markdown编辑器)

    [本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 原始冲动 最近一 ...

  8. 自己动手开发更好用的markdown编辑器-07(扩展语法)

    这里文章都是从个人的github博客直接复制过来的,排版可能有点乱. 原始地址 http://benq.im/2015/05/19/hexomd-07/   文章目录 1. 准备工作 2. 目录语法 ...

  9. 好用的Markdown编辑器一览 readme.md 编辑查看

    https://github.com/pandao/editor.md https://pandao.github.io/editor.md/examples/index.html Editor.md ...

随机推荐

  1. ubuntu vi上下左右键无法使用?

    使用vm安装ubuntu出现vi上下左右键无法正常使用. 执行以下两句就可以了 $sudo apt-get remove vim-common    $sudo apt-get install vim

  2. Tornado

    Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过为了能有效 ...

  3. [原创博文] 用Python做统计分析 (Scipy.stats的文档)

    [转自] 用Python做统计分析 (Scipy.stats的文档) 对scipy.stats的详细介绍: 这个文档说了以下内容,对python如何做统计分析感兴趣的人可以看看,毕竟Python的库也 ...

  4. Excel常用函数大全

    1.ABS函数  函数名称:ABS  主要功能:求出相应数字的绝对值.  使用格式:ABS(number)  参数说明:number代表需要求绝对值的数值或引用的单元格.  应用举例:如果在B2单元格 ...

  5. 使用maven构建一个helloworld maven项目

    1.下载maven http://maven.apache.org/ 选择一个较新版本下下来 2.配置m2_home环境变量 先解压,新建用户变量m2_home,将bin目录添加到path变量中 3. ...

  6. Oracle中的单行函数

    Oracle中的单行函数 1 字符函数 UPPER()--将字符串转换为大写 SELECT UPPER('abc') FROM dual; LOWER()-将字符串转换为小写 SELECT LOWER ...

  7. 你可能不知道的 30 个 Python 语言的特点技巧

        列表按难度排序,常用的语言特征和技巧放在前面. 1.1   分拆 >>> a, b, c = 1, 2, 3>>> a, b, c(1, 2, 3)> ...

  8. HDU 5521 [图论][最短路][建图灵感]

    /* 思前想后 还是决定坚持写博客吧... 题意: n个点,m个集合.每个集合里边的点是联通的且任意两点之间有一条dis[i]的边(每个集合一个dis[i]) 求同时从第1个点和第n个点出发的两个人相 ...

  9. VS2010 Win32项目的源码位置设置

    在VS2010中,我们可以创建一个Win32项目用来编辑C或CPP代码,项目建好后我们向项目文件夹添加代码文件,并调试能正常运行. 有时候我们会发现项目目录下没有源文件,这种情况下,可以通过设置“输出 ...

  10. (转) C# textbox 限制输入问题

    原理:e.handled代表这次按键动作是否交由用户自己处理,如果为true代表由用户处理,系统不再过问,这里的应用是拦截,即通知系统我要处理这个数据,但又不处理(丢弃数据),从而实现拦截的效果. 在 ...