最近有同事在弄前端展示数学公式的功能,我也是头一次接触这个需求。所以也找了一些资料来找找答案。

网上提供的展示数学公式:都是用到MathJax这个

html页面展示数学公式——MathJax.js

最终效果如下:

使用方法如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=AM_HTMLorMML-full"></script>
</head>
<body><div class="formula"><label>暴雨强度公式:</label>`i=A/(t+b)^n`<br><label>峰前降雨强度公式:</label>`i(t_b)=A[(1-n)*t/r+b]/[(t_b/r)+b]^(n+1)`<br><label>峰后降雨强度公式:</label>`i(t_a)=A[(1-n)*t_a/(1-r)+b]/[(t_a/(1-r))+b]^(n+1)`<br><label>备注:</label>`A=[A_1(1+ClgP)]/167`<br><label for="">勾股定理:</label> `a^2+b^2=c^2`</div>
</body>
</html>

步骤解析:

1.引入MathJax.js文件

网上有很多资源是不能用的了,下面的这个是可以用的……
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=AM_HTMLorMML-full"></script>

2.html中使用MathJax.js

在页面中使用时,直接用``包裹公式即可。非常的简单。。。

vue项目展示数学公式——MathJax

最终效果如下:

使用步骤如下:

1.在vue项目打包后生成的index.js文件中添加如下内容

只要是运行过npm run build后,都会在文件夹中生成一个public文件夹,里面会有index.html文件,这也就是vue被被称为SPA单页面框架的原因。

index.html文件中的body标签下面引入MathJax.js文件
<script type="text/javascript" async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>

2.在src文件夹中新建一个MathJax.js文件

这个文件的路径任意,我是放在了src/utils中。

MathJax.js文件内容如下:

let isMathjaxConfig = false; //用于标识是否配置
const initMathjaxConfig = () => {if (!window.MathJax) {return;}window.MathJax.Hub.Config({showProcessingMessages: false, //关闭js加载过程信息messageStyle: "none", //不显示信息jax: ["input/TeX", "output/HTML-CSS"],tex2jax: {inlineMath: [["$", "$"],["\\(", "\\)"]], //行内公式选择符displayMath: [["$$", "$$"],["\\[", "\\]"]], //段内公式选择符skipTags: ["script", "noscript", "style", "textarea", "pre", "code", "a"] //避开某些标签},"HTML-CSS": {availableFonts: ["STIX", "TeX"], //可选字体showMathMenu: false //关闭右击菜单显示}});isMathjaxConfig = true; //配置完成,改为true
};
const MathQueue = function(elementId) {if (!window.MathJax) {return;}window.MathJax.Hub.Queue(["Typeset", window.MathJax.Hub, document.getElementById(elementId)]);
};export default {isMathjaxConfig,initMathjaxConfig,MathQueue,
}

3.在main.js文件中引入MathJax.js文件

main.js文件中引入MathJax.js文件,并挂载到vue的原型上。这叫全局引入。

import MathJax from './utils/MathJax'
Vue.prototype.MathJax = MathJax;

4.在需要的地方使用MathJax.js

//1.在data中定义数学公式,注意数学公式需要用**$$**签后包裹,中间才是公式内容
data(){return{question1: '$$借款本金=\\sum _{nT}^{i=1}\\frac{第i期支付金额}{1+年化综合成本}$$',question2: '$$i=A/(t+b)^n$$',question3: '$$i(t_b)=A[(1-n)*t/r+b]/[(t_b/r)+b]^(n+1)$$',question4: '$$i(t_a)=A[(1-n)*t_a/(1-r)+b]/[(t_a/(1-r))+b]^(n+1)$$',question5: '$$A=[A_1(1+ClgP)]/167$$',question6: '$$a^2+b^2=c^2$$',}
},
//在页面创建的时候调用methods中的formatMath的方法
created(){this.formatMath();
},
methods:{formatMath(){setTimeout(()=>{this.$nextTick(()=>{if(this.MathJax.isMathjaxConfig){this.MathJax.initMathjaxConfig();}//这个地方的hello是对应要渲染数学公式的dom的classthis.MathJax.MathQueue('hello');})},500)},
}

html部分代码如下:

<div class="hello" style="margin:0 auto;text-align:center;">{{ question1 }}<br><span class="spanCls"><span>暴雨强度公式:</span>{{question2}}</span><br><span class="spanCls"><span>峰前降雨强度公式:</span>{{question3}}</span><br><span class="spanCls"><span>峰后降雨强度公式:</span>{{question4}}</span><br><span class="spanCls"><span>备注:</span>{{question5}}</span><br><span class="spanCls"><span>勾股定理:</span>{{question6}}</span>
</div>

渲染效果如下:

vue项目中使用MathJax时,需要注意的几点汇总如下:

  1. 需要在打包后的index.html文件中引入MathJax.js文件
  2. 需要在src文件夹中存放一个MathJax.js配置文件
  3. 需要在main.js中全局引入MathJax.js配置文件并挂载到vue原型上
  4. 需要在使用MathJax的地方,通过vue原型上的方法进行处理,并且需要注意数学公式的结构

完成!!!

补充:对比html页面的数学公式的展示与vue项目中的数学公式的展示,会发现有区别,前者除法公式是上下的布局,后者除法公式是直接横向展示。如果从容易理解的角度看,还是第一种会比较好。通过vue项目中的公式比对,发现如果要使得除法公式能够上下布局,则需要修改内容如下:

左右布局的除法公式写法
'$$i=A/(t+b)^n$$',
上下布局的除法公式写法
'$$i=\\frac{A}{(t+b)^n}$$',

如果需要将左右布局的除法公式写法改为上下布局的除法公式写法,则需要进行下面的改动:

  1. 在公式前面添加\\两个反斜杠
  2. 在分子部分前面添加frac并用{}包裹分子与分母部分

完成上面的操作后,公式就可以改变布局方式了
以上项目中的几个变量改动如下:

只要是需要改为上下布局的除法公式部分都需要进行上面的两步,哪怕公式中有多个除法,也是需要包裹多次\\frac{分子}{分母}

// question2: '$$i=\\frac{A}{(t+b)^n}$$',
question2: '$$i=A(t+b)^n$$',
// question3: '$$i(t_b)=A[(1-n)*t/r+b]/[(t_b/r)+b]^(n+1)$$',
question3: '$$i(t_b)=\\frac{A[(1-n)*\\frac{t}{r}+b]}{[(\\frac{t_b}{r})+b]^{n+1}}$$',
// question4: '$$i(t_a)=A[(1-n)*t_a/(1-r)+b]/[(t_a/(1-r))+b]^(n+1)$$',
question4: '$$i(t_a)=A\\frac{[(1-n)*\\frac{t_a}{(1-r)}+b]}{[(\\frac{t_a}{(1-r)})+b]^{n+1}}$$',
// question5: '$$A=[A_1(1+ClgP)]/167$$',
question5: '$$A=\\frac{[A_1(1+ClgP)]}{167}$$',
question6: '$$a^2+b^2=c^2$$',

最终效果如下:

html页面前端展示数学公式+vue项目前端展示数学公式——亲测可行相关推荐

  1. 在vue项目前端如何实现展示动态小程序二维码

    在vue项目前端如何实现展示动态小程序二维码 (就是根据所对应的商家数据展示一个动态的二维码) 首先,主要的工作还是后端和小程序前端的工作,我们vue项目的前端主要是根据他们给出的url一级所对应的参 ...

  2. vue 动态添加class_前端开发:Vue项目实战-Music

    大家好,我来了,本期为大家带来的前端开发知识是"前端开发:Vue项目实战-Music",有兴趣做前端的朋友,和我一起来看看吧! 主要内容 项目环境搭建 路由导航实现 ListVie ...

  3. vue 将字符串最后一个字符给替换_前端开发:Vue项目实战-Music

    大家好,我来了,本期为大家带来的前端开发知识是"前端开发:Vue项目实战-Music",有兴趣做前端的朋友,和我一起来看看吧! 主要内容 项目环境搭建 路由导航实现 ListVie ...

  4. Vue 项目前端响应式布局及框架搭建

    Vue 项目前端响应式布局及框架搭建 一.flexible 插件 1.引用 flexible 插件 2.修改 flexible 默认配置 3.展示效果 二.cssrem 插件 (px -> re ...

  5. 尚硅谷VUE项目-前端项目问题总结07--产品详情页【vuex-排他操作foreach-放大镜-轮播图-兄弟组件通信$bus-购物车-路由跳转传参-路由传参+会话存储】-游客身份-节流

    尚硅谷VUE项目-前端项目问题总结07---产品详情页 1.静态组件(详情页还未注册为路由组件) 2.发请求 3.vuex-获取产品详情信息 3.1放大镜 3.2 属性值[排他操作] 3.3轮播图[j ...

  6. 【Vue】Vue 项目前端响应式布局及框架搭建

    文章目录 Vue 项目前端响应式布局及框架搭建 一.项目基本结构 二.项目分辨率响应式创建 1.flexible.js 2.引用 flexible 插件 3.修改 flexible 默认配置 4.cs ...

  7. 前端压缩图片 -- vue项目使用localResizeIMG插件 -- 实例

    前端压缩图片 -- vue项目使用localResizeIMG插件 -- 实例 本博没有新的东西, 都是东拼西凑的. 但是, 组合出了个宝贝, 包括: 文件类型/宽高/大小的校验, 还有展示图片 参照 ...

  8. 结合 服务器+后端+前端,完成 vue项目 后台管理系统

    目录 以上是项目的服务器php.后端.前端.已经可以正常运行 一 登录: 登录页进度条:戳这里Vue项目电商后台管理系统 nprogress--进度条_活在风浪里的博客-CSDN博客 二 侧导航 三 ...

  9. 【前端部署】vue项目打包并部署到Linux服务器

    文章目录 一.打包vue前端项目 二.安装nginx 1.下载及安装 2.启动程序 3.其他命令 三.利用WinSCP传输文件 四.配置nginx 1.修改服务器端口 2.修改dist存放路径 3.完 ...

  10. 前端开发:Vue项目中解决Emitted value instead of an instance of Error问题

    分享一个在刚接触前端开发的开发者常遇到的一个经典错误,那就是在Vue项目运行中遇到Emitted value instead of an instance of Error的问题,附带解决该问题的方法 ...

最新文章

  1. Windows server2008 搭建ASP接口访问连接oracle数据库全过程记录--备用
  2. twemproxy 简介
  3. 未发现数据源名称并且未指定默认驱动程序_10个有用的HTML5功能,您可能未使用
  4. MySQL存储引擎之InnoDB
  5. java父进程获取子进程异常_如何在perl的父进程中获取死亡的子进程的PID?
  6. IIS7启动gzip压缩
  7. 线程安全的CopyOnWriteArrayList介绍
  8. std::thread参数传递包含引用时的注意事项
  9. 高等数学(第七版)同济大学 习题3-1 个人解答
  10. 2021年5大最佳3D动画软件
  11. 腾讯天龙八部手游服务器账号上线,天龙八部手游服务器的注册已达到上限 服务器注册上限怎么解决...
  12. 还搞不懂JVM?这一篇教你JVM从入门到入魔,全篇干货满满!
  13. 学习笔记——计组—流水线
  14. Excel操作:制作to do list
  15. nginx配置和优化详解
  16. 网络聊天室(Java)
  17. JS之before的实现
  18. JVM参数 之 -XX:MaxGCPauseMillis 与 -XX:GCTimeRatio
  19. linux常用命令_【Linux分享】Linux常用命令+教程分享
  20. 使用 Spark GraphX 实现 PageRank 算法

热门文章

  1. 银行卡号返回银行信息
  2. [渝粤教育] 西北农林科技大学 食品安全概论 参考 资料
  3. 【Git可视化工具】Sourcetree的初始化与使用
  4. sci期刊投稿指南 计算机科学 人工智能方向 145本sci期刊目录 从一区到四区(2022年 最新影响因子更新了)
  5. 联考事业单位计算机类面试,2018年5.26事业单位联考E类常见面试题(上)
  6. 手顺解决 Foxmail7.2 无法搜索“主题”和“全文”,只能搜“发件人”和“收件人” 问题
  7. 区块链隐私保护:技术和相关项目
  8. 传奇源码分析-客户端(WindHorn简述和传奇文件格式分析)
  9. 黑群晖 DSM 6.2 3617 成功安装教程
  10. LightTools.v5.1_完整好用版本\