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 相关文章推荐
js获取单选按钮的数据
Nov 27 Javascript
javascript jq 弹出层实例
Aug 25 Javascript
js处理表格对table进行修饰
May 26 Javascript
JavaScript数组Array对象增加和删除元素方法总结
Jan 20 Javascript
javascript跨域原因以及解决方案分享
Apr 08 Javascript
Jquery简单实现GridView行高亮的方法
Jun 15 Javascript
jQuery基于ajax操作json数据简单示例
Jan 05 Javascript
Angularjs处理页面闪烁的解决方法
Mar 09 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
Jun 08 Javascript
使用Angular CLI进行Build(构建)和Serve详解
Mar 24 Javascript
详解ES6 Promise对象then方法链式调用
Oct 20 Javascript
关于JS中的作用域中的问题思考分享
Apr 06 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
全国FM电台频率大全 - 22 重庆市
2020/03/11 无线电
php替换超长文本中的特殊字符的函数代码
2012/05/22 PHP
PHP输出XML到页面的3种方法详解
2013/06/06 PHP
PHP对接微信公众平台消息接口开发流程教程
2014/03/25 PHP
从零开始学YII2框架(四)扩展插件yii2-kartikgii
2014/08/20 PHP
Laravel 5框架学习之表单验证
2015/04/08 PHP
PHP获取毫秒级时间戳的方法
2015/04/15 PHP
浅谈PHP中foreach/in_array的使用
2015/11/02 PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
2016/07/25 PHP
PHP自定义函数获取URL中一级域名的方法
2016/08/23 PHP
php strftime函数的详细用法
2018/06/21 PHP
javascript 当前日期转化为中文的实现代码
2010/05/13 Javascript
基于replaceChild制作简单的吞噬特效
2015/09/21 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
AngularJs实现聊天列表实时刷新功能
2017/06/15 Javascript
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
2018/09/11 Javascript
搭建一个nodejs脚手架的方法步骤
2019/06/28 NodeJs
Layui Form 自定义验证的实例代码
2019/09/14 Javascript
使用kbone解决Vue项目同时支持小程序问题
2019/11/08 Javascript
vue transition 在子组件中失效的解决
2019/11/12 Javascript
Python中多线程thread与threading的实现方法
2014/08/18 Python
Python中的默认参数详解
2015/06/24 Python
python中 logging的使用详解
2017/10/25 Python
python爬取微信公众号文章的方法
2019/02/26 Python
python 检查数据中是否有缺失值,删除缺失值的方式
2019/12/02 Python
pycharm如何使用anaconda中的各种包(操作步骤)
2020/07/31 Python
CSS3 实现弹幕的示例代码
2017/08/07 HTML / CSS
html+js 实现markdown编辑器效果
2019/10/23 HTML / CSS
Kingsoft金山公司C/C++笔试题
2016/05/10 面试题
js正则匹配markdown里的图片标签的实现
2021/03/24 Javascript
数控技术应届生求职信
2013/11/13 职场文书
教师的实习自我鉴定
2013/12/17 职场文书
表扬信格式
2014/01/12 职场文书
运动会入场词200字
2014/02/15 职场文书
个人维稳承诺书
2015/05/04 职场文书