最近一直在做网页版的公式编辑器,现在进度过半,我来总结一下这段时间开发网页公式编辑器的经验。

开始开发之前,我在网上搜集了大量网页公式方面的资料,现在比较流行的网页公式都是用MathML:数学置标语言(Mathematical Markup Language,MathML),是一种基于XML的标准,用来在互联网上书写数学符号和公式的置标语言。JsMath:是一种在网页中显示数学公式的方法,通过解析 TeX 代码,结合 JavaScript 和 CSS 以及 unicode 字体 来显示数学公式,支持多浏览器和平台,无需 MathML 支持。诸如此类的技术还有,在此就不一一列举。

经过分析这些公式方法,发现他们各有优缺点,譬如有的方法最后公式生成为一张图片,虽然图片不大可以忽略网络传输的压力,但是一张数学试卷上面得有多少这样的小图片,而且修改也不方便。虽然有的方法可以加载一个第三方的CSS来达到网页显示编辑的目的,但是跨浏览器的表现也不尽如人意。有的还需要安装插件才能正常显示。

Html+Css+ JavaScript实现非图片的、在线网页编辑器理念应运而生。这样实现的网页编辑器屏蔽的图片实现的缺点,方便修改。于是,便开始分析《运筹学》此书中用到的公式以及特点。

以下摘取同事在开发公式编辑器的时候的总结:“公式输入或者书写,都是由左向右由下向上的。整体结构在阅读时也是遵循这样的规律的。.但是对于特殊的字符还要区分手写和大写,在公式前面可能会有属性限定例如:Max Min …虽然不涉及运算但是不能缺少的一个前缀。不同运算符各个项的比例不一样。括号输入的同时也需要独立一个项可以在括号外附加上下标。.为了不影响输入希望有插入设定能不在对整体改动的情况下对细节进行修改,方便输入答案的时候不因为修改细节而影响过多时间。”

吸取这位仁兄的总结,以及项目经理的建议,我把数学公式中分数、几次方、根号、积分等方法归为一个。

如图这九个方块就可以满足大部分的公式要求。我们把1号位置,叫做操作符,公式方法根据1号位置的符号来进行位置移动。例如:分数,1号位置为分数线,2号位置为分子,4号位置为分母。这样分数的大致形态就出来了,然后在进行位置的微调便可达到。积分:1号位置为积分符号,3、6、7分别为数值,这样实现了积分。

在html中,我们选用了span来表示方块。我们参考了MathML中的语法:

如:MathML中显示一个

的代码如下:

1

2

3 x

4 =

5

6

7

8 -

9 b

10

11 ±

12

13

14

15 b

16 2

17

18 -

19

20 4

21 ⁢

22 a

23 ⁢

24 c

25

26

27

28

29

30 2

31 ⁢

32 a

33

34

35

36

我们实现刚才那个分数和积分的代码如下:

1 分数:2

3   

4   2

5   4

6

7

8 积分:9

10   

11   3

12   6

13   7

14

由此可以发现,我们的html代码十分简洁,只有开头span中表示它是一个数学公式和它是一个什么公式,浏览器便可以识别出它来。

下面是这两个方法在浏览器中的样子(比例有所放大):

分别在IE8,Chrome19,Safari5.1.7测试…

今天稀里糊涂说了一大堆,各位看官可能发现最重点的JS实现没有说出来,说实话,鄙人的JS知识浅薄,需要整理一下思路,欲知后文如何,各位看官且听下回分解...

PS:自己看了一遍,发现这一篇废话连篇,就是一个设计思路,重点如何实现思路大体说出来了,但是在具体一些还未涉及,后面如何写还有待深思熟虑啊...小生今年刚刚毕业参加工作,是一个90后的程序员,还需要前辈们多多拍砖啊...

html页中加入数学公式,Html+Css+JavaScript实现网页公式编辑器(一)相关推荐

  1. HTML网页设计期末课程大作业 :汽车网页——宝马轿车 6页 带背景音乐 学生网页设计作业HTML+CSS+JavaScript学生网页课程设计期末作业下载

    HTML网页设计期末课程大作业 :汽车网页--宝马轿车 6页 带背景音乐 学生网页设计作业HTML+CSS+JavaScript学生网页课程设计期末作业下载 临近期末, 你还在为HTML网页设计结课作 ...

  2. 网页设计作业`京东网站设计——仿2016版京东首页(1页) HTML+CSS+JavaScript 大学生网页作品 电商网页设计作业模板 学生网页制作源代码下载

    HTML5期末大作业:京东网站设计--仿京东首页(1页) HTML+CSS+JavaScript 大学生网页作品 电商网页设计作业模板 学生网页制作源代码下载 文章目录 HTML5期末大作业:京东网站 ...

  3. HTML5期末大作业:宠物网站设计——布偶猫(7页)带留言板 HTML+CSS+JavaScript web结课作业的源码 web网页设计实例作业 html大学生网站开发实践作业...

    常见网页设计作业题材有 ​​个人. 美食. 公司. 学校. 旅游. 电商. 宠物. 电器. 茶叶. 家居. 酒店. 舞蹈. 动漫. 明星. 服装. 体育. 化妆品. 物流. 环保. 书籍. 婚纱. 军 ...

  4. HTML5期末大作业:我的家乡介绍网页设计——莆仙(6页) 代码质量好 HTML+CSS+JavaScript

    HTML5期末大作业:我的家乡网页设计--莆仙(6页) 代码质量好 HTML+CSS+JavaScript 期末作业HTML代码 学生网页课程设计期末作业下载 web网页设计制作成品 1.临近期末, ...

  5. HTML5期末大作业:动漫网站设计—— 动漫电影《你的名字》(7页)带音乐特效 HTML+CSS+JavaScript

    HTML5期末大作业:动漫网站设计-- 动漫电影<你的名字>(7页)带音乐特效 HTML+CSS+JavaScript 期末作业HTML代码 学生网页课程设计期末作业下载 web网页设计制 ...

  6. 食品商城网站设计—食品商城购物网站(8页) HTML+CSS+JavaScript 静态网页的制作

    HTML5期末大作业:食品商城网站设计--食品商城购物网站(8页) HTML+CSS+JavaScript 静态网页的制作 文章目录 HTML5期末大作业:食品商城网站设计--食品商城购物网站(8页) ...

  7. 静态HTML网页设计作品——火影忍者动漫(7页) HTML+CSS+JavaScript 漫画网页制作作业_电影网页设计

    HTML5期末大作业:动漫网站设计--火影忍者动漫(7页) HTML+CSS+JavaScript 漫画网页制作作业_电影网页设计- 文章目录 HTML5期末大作业:动漫网站设计--火影忍者动漫(7页 ...

  8. HTML网页设计期末课程大作业 :汽车网页——宝马轿车 6页 带背景音乐 学生网页设计作业HTML+CSS+JavaScript学生网页课程设计期末作业下载...

    HTML网页设计期末课程大作业 :汽车网页--宝马轿车 6页 带背景音乐 学生网页设计作业HTML+CSS+JavaScript学生网页课程设计期末作业下载 临近期末, 你还在为HTML网页设计结课作 ...

  9. HTML5期末大作业:鲜花超市网站设计——鲜花超市(4页) HTML+CSS+JavaScript HTML5网页设计成品_学生DW静态网页设计代做_web课程设计网页制作

    HTML5期末大作业:鲜花超市网站设计--鲜花超市(4页) HTML+CSS+JavaScript HTML5网页设计成品_学生DW静态网页设计代做_web课程设计网页制作 作品介绍 1.网页作品简介 ...

最新文章

  1. 聊一聊:你碰到过哪些操蛋的文档?
  2. python读取excelsheet-python实现读取excel文件中所有sheet操作示例
  3. Python列表对象的sort()方法排序
  4. Winform中设置ZedGraph鼠标焦点位置画出十字线并在鼠标移出时十字线消失
  5. html搜索框美化代码单词,CSS 漂亮搜索框美化代码
  6. 宠物狗图片分类之迁移学习代码笔记
  7. 类对象作为函数参数进行值传递
  8. oracle使用all关键字过滤,选择要进行过滤的抽样、线程、LWP 和 CPU
  9. linux iptables 防火墙
  10. 正则表达式过滤手机号
  11. POST注入-显错注入 ——合天网安实验室学习笔记
  12. URLError: urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify fai
  13. UniAPP 使用高德地图,打包后定位api不执行
  14. rtb中的win_广告:RTB
  15. 七夕送什么蓝牙耳机,经济实惠的蓝牙耳机盘点
  16. Cutting(思维)
  17. 小游戏开发怎么选游戏引擎
  18. Servlet处理GET和POST请求
  19. Swagger2 3.0的使用
  20. 利用隧道感受IPV6

热门文章

  1. 同花顺选股python开发_Funcat 将同花顺、通达信等的公式写法移植到了 Python 中
  2. 刘畊宏爆红,Keep巨亏,在线健身的冰与火
  3. Linux搭建Ngrok服务器详细过程
  4. Oracle定时任务(1)-DBMS_SCHEDULER
  5. linux搜索命令有哪些,linux 中的搜索命令
  6. MySQL定时任务删除数据
  7. Processing 模拟池塘生态系统
  8. ROS的代价地图与AMCL定位原理
  9. python 生成英文字母对应顺序字典
  10. 索尼u盘重装系统步骤