Vue實(shí)現(xiàn)計算器計算效果
本文實(shí)例為大家分享了Vue實(shí)現(xiàn)計算器計算效果的具體代碼,供大家參考,具體內(nèi)容如下

<!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>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue彈窗組件的使用(傳值),以及彈窗只能觸發(fā)一次的問題
這篇文章主要介紹了vue彈窗組件的使用(傳值),以及彈窗只能觸發(fā)一次的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05
在Vue中實(shí)現(xiàn)隨hash改變響應(yīng)菜單高亮
這篇文章主要介紹了在Vue中實(shí)現(xiàn)隨hash改變響應(yīng)菜單高亮的方法,文中還通過實(shí)例代碼給大家介紹了vue關(guān)于點(diǎn)擊菜單高亮與組件切換的相關(guān)知識,需要的朋友可以參考下2020-03-03
詳解vue數(shù)組遍歷方法forEach和map的原理解析和實(shí)際應(yīng)用
這篇文章主要介紹了詳解vue數(shù)組遍歷方法forEach和map的原理解析和實(shí)際應(yīng)用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11
vueJs實(shí)現(xiàn)DOM加載完之后自動下拉到底部的實(shí)例代碼
這篇文章主要介紹了vueJs實(shí)現(xiàn)DOM加載完成之后自動下拉到底部的實(shí)例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-08-08
Vue.js中使用iView日期選擇器并設(shè)置開始時間結(jié)束時間校驗(yàn)功能
本文通過實(shí)例代碼給大家介紹了Vue.js中使用iView日期選擇器并設(shè)置開始時間結(jié)束時間校驗(yàn)功能,需要的朋友可以參考下2018-08-08
Vue中v-for的數(shù)據(jù)分組實(shí)例
下面小編就為大家分享一篇Vue中v-for的數(shù)據(jù)分組實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03
開發(fā)一個Parcel-vue腳手架工具(詳細(xì)步驟)
這篇文章主要介紹了開發(fā)一個Parcel-vue腳手架工具(詳細(xì)步驟),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09

