This is a JavaScript calculator that was made using Jade, Stylus, jQuery, and JavaScript. The look of the calculator is inspired by apple's calculator for mac.
A Pen by Adam Recvlohe on CodePen.
This is a JavaScript calculator that was made using Jade, Stylus, jQuery, and JavaScript. The look of the calculator is inspired by apple's calculator for mac.
A Pen by Adam Recvlohe on CodePen.
h1 FCC Calculator | |
.container | |
#output 0 | |
.button-container | |
.button.special#clear C | |
.button.special#pls-mns ± | |
.button.special#percent % | |
.button.operator#divide ÷ | |
.button.number#seven 7 | |
.button.number#eight 8 | |
.button.number#nine 9 | |
.button.operator#times × | |
.button.number#four 4 | |
.button.number#five 5 | |
.button.number#six 6 | |
.button.operator#minus - | |
.button.number#one 1 | |
.button.number#two 2 | |
.button.number#three 3 | |
.button.operator#plus + | |
.button.number#zero 0 | |
.button#decimal . | |
.button.operator#equals = |
($ => { | |
let equation = new Array(); | |
let num = ''; | |
let answer = ''; | |
const output = symbol => { | |
$('#output').html(symbol); | |
} | |
const pushNum = () => { | |
equation.push(num); | |
num = ''; | |
} | |
const addCalc = (operator, symbol) => { | |
equation.push(num); | |
num = ''; | |
equation.push(operator); | |
$('#output').html(symbol); | |
} | |
const calc = () => { | |
pushNum(); | |
answer = String(eval(equation.join(''))); | |
answer = +parseFloat(answer).toFixed(7); | |
if (answer === Infinity) | |
answer = '∞'; | |
if (answer === -Infinity) | |
answer = '-∞'; | |
if (answer === '3.14') | |
answer = 'π'; | |
equation = [String(answer)]; | |
output(answer); | |
} | |
$('.button').on('click', function() { | |
var val = $(this).text(); | |
if (isFinite(val) || val === '.') { | |
num += val; | |
output(num) | |
} else if (val === 'C') { | |
equation = []; | |
num = ''; | |
answer = ''; | |
output('0'); | |
} else if (val === '±') { | |
/-/.test(answer) ? | |
answer = equation[0].replace('-', '') : answer = '-' + answer; | |
equation = [String(answer)]; | |
output(answer); | |
} else if (val === '%') { | |
output(num + '%'); | |
num = num / 100 * equation[0]; | |
} else if (val === '+') | |
addCalc(val, 'plus'); | |
else if (val === '-') | |
addCalc(val, 'minus'); | |
else if (val === '÷') | |
addCalc('/', 'over'); | |
else if (val === '×') | |
addCalc('*', 'times'); | |
else if (val === '=') | |
calc(); | |
else | |
addCalc(val, num); | |
}); | |
})(jQuery); |
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> | |
<script src="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script> |
body | |
font-size 62.5% | |
font-family: Hack, monospace | |
color lighten(black, 13%) | |
box-sizing: border-box | |
h1 | |
text-align center | |
font-size 3em | |
.container | |
border .5px solid black | |
width 300px | |
margin 20px auto | |
#output | |
width auto | |
box-sizing border-box | |
border 1px solid black | |
height 65px | |
padding 2px | |
flex 1 1 auto | |
font-size 5em | |
overflow-x auto | |
overflow-y hidden | |
text-align right | |
white-space nowrap | |
.button-container | |
display flex | |
flex-wrap wrap | |
.button | |
border 1px solid grey | |
flex-basis 20% | |
flex-grow 1 | |
height 50px | |
display flex | |
align-items center | |
justify-content center | |
font-size 2.5em | |
user-select none | |
&:hover | |
cursor pointer | |
#zero | |
flex-grow 6.8 | |
.operator | |
background-color lighten(orange, 10%) | |
color white | |
font-size 2.5em | |
.special | |
background lighten(grey, 80%) | |