html页面前端展示数学公式+vue项目前端展示数学公式——亲测可行
最近有同事在弄前端展示数学公式的功能,我也是头一次接触这个需求。所以也找了一些资料来找找答案。
网上提供的展示数学公式:都是用到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
时,需要注意的几点汇总如下:
- 需要在打包后的
index.html
文件中引入MathJax.js
文件 - 需要在
src
文件夹中存放一个MathJax.js
配置文件 - 需要在
main.js
中全局引入MathJax.js
配置文件并挂载到vue
原型上 - 需要在使用
MathJax
的地方,通过vue
原型上的方法进行处理,并且需要注意数学公式的结构
完成!!!
补充:对比html
页面的数学公式的展示与vue
项目中的数学公式的展示,会发现有区别,前者除法公式是上下的布局,后者除法公式是直接横向展示。如果从容易理解的角度看,还是第一种会比较好。通过vue
项目中的公式比对,发现如果要使得除法公式能够上下布局,则需要修改内容如下:
左右布局的除法公式写法
'$$i=A/(t+b)^n$$',
上下布局的除法公式写法
'$$i=\\frac{A}{(t+b)^n}$$',
如果需要将左右布局的除法公式写法改为上下布局的除法公式写法,则需要进行下面的改动:
- 在公式前面添加
\\
两个反斜杠 - 在分子部分前面添加
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项目前端展示数学公式——亲测可行相关推荐
- 在vue项目前端如何实现展示动态小程序二维码
在vue项目前端如何实现展示动态小程序二维码 (就是根据所对应的商家数据展示一个动态的二维码) 首先,主要的工作还是后端和小程序前端的工作,我们vue项目的前端主要是根据他们给出的url一级所对应的参 ...
- vue 动态添加class_前端开发:Vue项目实战-Music
大家好,我来了,本期为大家带来的前端开发知识是"前端开发:Vue项目实战-Music",有兴趣做前端的朋友,和我一起来看看吧! 主要内容 项目环境搭建 路由导航实现 ListVie ...
- vue 将字符串最后一个字符给替换_前端开发:Vue项目实战-Music
大家好,我来了,本期为大家带来的前端开发知识是"前端开发:Vue项目实战-Music",有兴趣做前端的朋友,和我一起来看看吧! 主要内容 项目环境搭建 路由导航实现 ListVie ...
- Vue 项目前端响应式布局及框架搭建
Vue 项目前端响应式布局及框架搭建 一.flexible 插件 1.引用 flexible 插件 2.修改 flexible 默认配置 3.展示效果 二.cssrem 插件 (px -> re ...
- 尚硅谷VUE项目-前端项目问题总结07--产品详情页【vuex-排他操作foreach-放大镜-轮播图-兄弟组件通信$bus-购物车-路由跳转传参-路由传参+会话存储】-游客身份-节流
尚硅谷VUE项目-前端项目问题总结07---产品详情页 1.静态组件(详情页还未注册为路由组件) 2.发请求 3.vuex-获取产品详情信息 3.1放大镜 3.2 属性值[排他操作] 3.3轮播图[j ...
- 【Vue】Vue 项目前端响应式布局及框架搭建
文章目录 Vue 项目前端响应式布局及框架搭建 一.项目基本结构 二.项目分辨率响应式创建 1.flexible.js 2.引用 flexible 插件 3.修改 flexible 默认配置 4.cs ...
- 前端压缩图片 -- vue项目使用localResizeIMG插件 -- 实例
前端压缩图片 -- vue项目使用localResizeIMG插件 -- 实例 本博没有新的东西, 都是东拼西凑的. 但是, 组合出了个宝贝, 包括: 文件类型/宽高/大小的校验, 还有展示图片 参照 ...
- 结合 服务器+后端+前端,完成 vue项目 后台管理系统
目录 以上是项目的服务器php.后端.前端.已经可以正常运行 一 登录: 登录页进度条:戳这里Vue项目电商后台管理系统 nprogress--进度条_活在风浪里的博客-CSDN博客 二 侧导航 三 ...
- 【前端部署】vue项目打包并部署到Linux服务器
文章目录 一.打包vue前端项目 二.安装nginx 1.下载及安装 2.启动程序 3.其他命令 三.利用WinSCP传输文件 四.配置nginx 1.修改服务器端口 2.修改dist存放路径 3.完 ...
- 前端开发:Vue项目中解决Emitted value instead of an instance of Error问题
分享一个在刚接触前端开发的开发者常遇到的一个经典错误,那就是在Vue项目运行中遇到Emitted value instead of an instance of Error的问题,附带解决该问题的方法 ...
最新文章
- Windows server2008 搭建ASP接口访问连接oracle数据库全过程记录--备用
- twemproxy 简介
- 未发现数据源名称并且未指定默认驱动程序_10个有用的HTML5功能,您可能未使用
- MySQL存储引擎之InnoDB
- java父进程获取子进程异常_如何在perl的父进程中获取死亡的子进程的PID?
- IIS7启动gzip压缩
- 线程安全的CopyOnWriteArrayList介绍
- std::thread参数传递包含引用时的注意事项
- 高等数学(第七版)同济大学 习题3-1 个人解答
- 2021年5大最佳3D动画软件
- 腾讯天龙八部手游服务器账号上线,天龙八部手游服务器的注册已达到上限 服务器注册上限怎么解决...
- 还搞不懂JVM?这一篇教你JVM从入门到入魔,全篇干货满满!
- 学习笔记——计组—流水线
- Excel操作:制作to do list
- nginx配置和优化详解
- 网络聊天室(Java)
- JS之before的实现
- JVM参数 之 -XX:MaxGCPauseMillis 与 -XX:GCTimeRatio
- linux常用命令_【Linux分享】Linux常用命令+教程分享
- 使用 Spark GraphX 实现 PageRank 算法
热门文章
- 银行卡号返回银行信息
- [渝粤教育] 西北农林科技大学 食品安全概论 参考 资料
- 【Git可视化工具】Sourcetree的初始化与使用
- sci期刊投稿指南 计算机科学 人工智能方向 145本sci期刊目录 从一区到四区(2022年 最新影响因子更新了)
- 联考事业单位计算机类面试,2018年5.26事业单位联考E类常见面试题(上)
- 手顺解决 Foxmail7.2 无法搜索“主题”和“全文”,只能搜“发件人”和“收件人” 问题
- 区块链隐私保护:技术和相关项目
- 传奇源码分析-客户端(WindHorn简述和传奇文件格式分析)
- 黑群晖 DSM 6.2 3617 成功安装教程
- LightTools.v5.1_完整好用版本\