Vue实现计算器计算效果


Posted in Javascript onAugust 17, 2020

本文实例为大家分享了Vue实现计算器计算效果的具体代码,供大家参考,具体内容如下

Vue实现计算器计算效果

<!DOCTYPE html>
<html>
 <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">
 <script src="../js/vue.js"></script>
 <title>compare</title>
 <style type="text/css">
 *{
 padding: 0;
 margin: 0;
 box-sizing: border-box;
 }
 body{
 background-color: #000000;
 }
 .panle{
 border: 1px solid #5f5f5f;
 width: 100vw;
 height: 29vh;
 font-size: 3.8125rem;
 color: #FFFFFF;
 text-align: right;
 position: relative;
 }
 .curr{
 display: block;
 position: absolute;
 width: inherit;
 bottom: 0;
 font-size: 3.5rem;
 }
 .operation{
 display: block;
 position: absolute;
 width: inherit;
 bottom: 80px;
 font-size: 2.875rem;
 }
 .prev{
 font-size: 2.875rem;
 display: block;
 position: absolute;
 width: inherit;
 bottom: 8rem;
 }
 .keyboad{
 display: flex;
 flex-flow: row wrap;
 margin: 0 calc((8vw - 16px) / 2);
 }
 .key{
 display: inline-block;
 border: 1px solid #333;
 width: 23vw;
 height: 23vw;
 border-radius: 50%;
 text-align: center;
 font-size: 30px;
 line-height: 23vw;
 margin: 2px;
 background-color: #616161;
 color: #ffffff;
 cursor: pointer;
 outline: none;
 border: none;
 box-shadow: 0 9px #999;
 }
 .key:active {
 box-shadow: 0 5px #666;
 transform: translateY(4px);
 }
 .key:last-child{
 border-radius: 30%;
 flex-grow: 1;
 margin: 0;
 }
 .highlight{
 background-color: #e77919;
 }
 
 </style>
 </head>
 <body>
 <div id="app">
 <div class="panle">
 <span class="prev">{{prevNum}}</span>
 <span class="operation">{{operation}}</span>
 <span class="curr">{{currNum}}</span>
 </div>
 <div class="keyboad">
 <div class="key highlight" @click="clear">AC</div>
 <div class="key highlight" @click="back"><-</div>
 <div class="key highlight">#</div>
 <div class="key highlight" @click="except">/</div>
 <div class="key">7</div>
 <div class="key">8</div>
 <div class="key">9</div>
 <div class="key highlight" @click="ride">*</div>
 <div class="key">4</div>
 <div class="key">5</div>
 <div class="key">6</div>
 <div class="key highlight" @click="reduce">-</div>
 <div class="key">1</div>
 <div class="key">2</div>
 <div class="key">3</div>
 <div class="key highlight" @click="add">+</div>
 <div class="key">0</div>
 <div class="key">.</div>
 <div class="key highlight" @click="result">=</div>
 </div>
 </div>
 <script type="text/javascript">
 let vm = new Vue({
 el:"#app",
 data(){
 return{
 operation:'',
 prevNum:'',
 currNum:'',
 keyboard:[],
 arr:[],
 res:''
 }
 },
 mounted() {
 this.keyboard = document.querySelectorAll('div[class=key]');
 Array.from(this.keyboard, key => key.addEventListener('click',this.getVal))
 },
 methods:{
 getVal(e){
 this.currNum += e.target.innerHTML;
 this.arr.push(e.target.innerHTML);
 },
 clear(){
 this.prevNum = this.operation = this.currNum = '';
 },
 back(){
 this.arr.splice(-1,1)
 this.currNum = this.arr.join('')
 },
 add(){
 this.prevNum = this.currNum;
 this.currNum = '';
 this.operation = '+';
 },
 reduce(){
 this.prevNum = this.currNum;
 this.currNum = '';
 this.operation = '-';
 },
 ride(){
 this.prevNum = this.currNum;
 this.currNum = '';
 this.operation = '*';
 },
 except(){
 this.prevNum = this.currNum;
 this.currNum = '';
 this.operation = '/';
 },
 result(){
 switch(this.operation){
 case'+':
 this.res = Number(this.currNum) + Number(this.prevNum);
 break;
 case'-':
 this.res = Number(this.prevNum) - Number(this.currNum);
 break;
 case'*':
 this.res = Number(this.prevNum) * Number(this.currNum);
 break;
 case'/':
 this.res = Number(this.prevNum) / Number(this.currNum);
 break;
 }
 this.clear();
 this.currNum = this.res; 
 this.arr = [];
 }
 }
 })
 </script>
 </body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
IE6,IE7下js动态加载图片不显示错误
Jul 17 Javascript
JavaScript 设计模式 安全沙箱模式
Sep 24 Javascript
JQuery通过Ajax提交表单并返回结果
Jul 31 Javascript
js如何取消事件冒泡
Sep 23 Javascript
关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器
Feb 11 Javascript
JavaScript中数组的合并以及排序实现示例
Oct 24 Javascript
分享10个优化代码的CSS和JavaScript工具
May 11 Javascript
JavaScript知识点总结(四)之逻辑OR运算符详解
May 31 Javascript
jQuery子元素过滤选择器用法示例
Sep 09 Javascript
JavaScript Date 知识浅析
Jan 29 Javascript
javascript之分片上传,断点续传的实际项目实现详解
Sep 05 Javascript
原生JS实现汇率转换功能代码实例
May 13 Javascript
vue-model实现简易计算器
Aug 17 #Javascript
Vue实现手机计算器
Aug 17 #Javascript
Vuex实现购物车小功能
Aug 17 #Javascript
jquery+ajax实现异步上传文件显示进度条
Aug 17 #jQuery
jQuery实现异步上传一个或多个文件
Aug 17 #jQuery
vue项目里面引用svg文件并给svg里面的元素赋值
Aug 17 #Javascript
vue动态加载SVG文件并修改节点数据的操作代码
Aug 17 #Javascript
You might like
php 动态执行带有参数的类方法
2009/04/10 PHP
基于Windows下Apache PHP5.3.1安装教程
2010/01/08 PHP
PHP实现的json类实例
2015/07/28 PHP
PHP的文件操作与算法实现的面试题示例
2015/08/10 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
2019/09/30 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
2020/05/15 PHP
js版本A*寻路算法
2006/12/22 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
2012/12/11 Javascript
jquery如何把参数列严格转换成数组实现思路
2013/04/01 Javascript
将nodejs打包工具整合到鼠标右键的方法
2013/05/11 NodeJs
30个经典的jQuery代码开发技巧
2014/12/15 Javascript
Underscore.js常用方法总结
2015/02/28 Javascript
JavaScript数据结构之二叉树的查找算法示例
2017/04/13 Javascript
bootstrap table表格客户端分页实例
2017/08/07 Javascript
vue 标签属性数据绑定和拼接的实现方法
2018/05/17 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
2018/09/25 Javascript
scrapyd schedule.json setting 传入多个值问题
2019/08/07 Javascript
jquery实现的放大镜效果示例
2020/02/24 jQuery
jQuery 隐藏/显示效果函数用法实例分析
2020/05/20 jQuery
mpvue 项目初始化及实现授权登录的实现方法
2020/07/20 Javascript
Python中的random()方法的使用介绍
2015/05/15 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
python 同时运行多个程序的实例
2019/01/07 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
2019/04/17 Python
python实现信号时域统计特征提取代码
2020/02/26 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
杭州SQL浙江浙大网新恩普软件有限公司
2013/07/27 面试题
计算机通信工程专业毕业生推荐信
2013/12/24 职场文书
百日安全活动总结
2014/05/04 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
举起手来观后感
2015/06/09 职场文书
公司人事管理制度
2015/08/05 职场文书
Python超简单容易上手的画图工具库推荐
2021/05/10 Python
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL
电频谱管理的原则是什么
2022/02/18 无线电
以下牛机,你有几个
2022/04/05 无线电