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 相关文章推荐
for 循环性能比较 提高for循环的效率
Mar 19 Javascript
javascript 写类方式之二
Jul 05 Javascript
javascript 事件处理、鼠标拖动效果实现方法详解
May 11 Javascript
引用 js在IE与FF之间的区别详细解析
Nov 20 Javascript
JavaScript入门基础
Aug 12 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
May 20 Javascript
javaScript中定义类或对象的五种方式总结
Dec 04 Javascript
JavaScript中this的用法实例分析
Dec 19 Javascript
jQuery EasyUI之验证框validatebox实例详解
Apr 10 jQuery
yarn的使用与升级Node.js的方法详解
Jun 04 Javascript
原生js 封装get ,post, delete 请求的实例
Aug 11 Javascript
vue-cli项目中怎么使用mock数据
Sep 27 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 数组遍历的差异(array_diff 的实现)
2008/03/23 PHP
一个PHP二维数组排序的函数分享
2014/01/17 PHP
php实现的漂亮分页方法
2014/04/17 PHP
ZendFramework框架实现连接两个或多个数据库的方法
2016/12/08 PHP
php如何修改SESSION的生存存储时间的实例代码
2017/07/05 PHP
Javascript中克隆一个数组的实现代码
2013/12/06 Javascript
JavaScript 对象深入学习总结(经典)
2015/09/29 Javascript
基于javascript实现动态显示当前系统时间
2016/01/28 Javascript
浅析js绑定事件的常用方法
2016/05/15 Javascript
Vue.JS入门教程之处理表单
2016/12/01 Javascript
jQuery无缝轮播图代码
2016/12/22 Javascript
微信端开发--登录小程序步骤
2017/01/11 Javascript
js判断是否是手机页面
2017/03/17 Javascript
Vue.js常用指令的使用小结
2017/06/23 Javascript
jQuery实现简单的计时器功能实例分析
2017/08/29 jQuery
React Router v4 入坑指南(小结)
2018/04/08 Javascript
mock.js模拟前后台交互
2019/07/25 Javascript
vue下canvas裁剪图片实例讲解
2020/04/16 Javascript
JS数组Reduce方法功能与用法实例详解
2020/04/29 Javascript
JS判断浏览器类型与操作系统的方法分析
2020/04/30 Javascript
Vue实现随机验证码功能
2020/12/29 Vue.js
Python中Continue语句的用法的举例详解
2015/05/14 Python
Python 文件管理实例详解
2015/11/10 Python
Python基于列表list实现的CRUD操作功能示例
2018/01/05 Python
利用pyinstaller将py文件打包为exe的方法
2018/05/14 Python
基于python实现蓝牙通信代码实例
2019/11/19 Python
python add_argument()用法解析
2020/01/29 Python
HTML5 canvas画图并保存成图片的jcanvas插件
2014/01/17 HTML / CSS
巴西本土电商平台:Americanas
2020/06/21 全球购物
拓展培训心得体会
2014/01/04 职场文书
高中历史教学反思
2014/02/08 职场文书
师德师风个人总结
2015/02/06 职场文书
2015年保险业务员工作总结
2015/05/27 职场文书
毕业论文指导老师意见
2015/06/04 职场文书
python控制台打印log输出重复的解决方法
2021/05/14 Python
Flutter Navigator 实现路由传递参数
2022/04/22 Java/Android