<!DOCTYPE html>
<html lang="en">
<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">
<title>Document</title>
<style>
*{margin: 0; padding: 0; list-style: none;}
body{
position: fixed;
top: 0;left:0;width:100%;height: 100%;
background-color: lightcyan;
}
#calc{
box-shadow: 5px 5px 7px rgba(0,0,0,0.35);
font-family: fantasy;
position: fixed;
top: 50%; left: 50%; transform: translate(-50%, -50%);
width: 400px; height: max-content;
border: 22px solid lightgoldenrodyellow;
border-style: outset;
border-radius: 10px;
padding: 20px;
background-color: beige;
}
.output:after{content: "_";}
.output{
color: lawngreen;
padding: 0 15px;
box-sizing: border-box;
text-align: right;
height: 104px; line-height: 80px;
font-size: 40px;
margin-bottom: 45px;
font-weight: bold;
background-color: #555;
border: 12px solid #888;
border-style: inset;
position: relative;
overflow: hidden;
}
.output:before{
width: 100%;
height: 100%;
content: '';
display: block;
background: linear-gradient(-60deg, rgba(255,255,255,0), rgba(255,255,255,0), rgba(255,255,255,0.25), rgba(255,255,255,0), rgba(255,255,255,0));
position: absolute;
top: 0%;
left: -100%;
animation: shinning 1.5s infinite;
}
@keyframes shinning {
0%{left: -200%;}
100%{left: 200%;}
}
ul{
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
ul li{
cursor: pointer;
color: #555;
user-select: none;
text-align: center;
padding: 10px 0;
margin-bottom: 15px;
width: calc((100% - 45px) / 4);
border: 1px solid #000;
box-sizing: border-box;
border: 7px solid #ccc;
border-style: outset;
background-color: #ccc;
border-radius: 5px;
box-shadow: 1px 1px 3.5px rgba(0,0,0,0.5);
}
ul li:active{
border-style: inset;
background-color: #bbb;
color: #444;
}
</style>
</head>
<body>
<div id="calc">
<div class="output"></div>
<ul class="btns">
<li class="num">7</li>
<li class="num">8</li>
<li class="num">9</li>
<li class="op" data-operator="dev">÷</li>
<li class="num">4</li>
<li class="num">5</li>
<li class="num">6</li>
<li class="op" data-operator="mul">×</li>
<li class="num">1</li>
<li class="num">2</li>
<li class="num">3</li>
<li class="op" data-operator="sub">-</li>
<li class="num">0</li>
<li class="dot">.</li>
<li class="equal">=</li>
<li class="op" data-operator="plus">+</li>
</ul>
</div>
<script src="js/jquery-3.6.0.min.js"></script>
<script>
var num;
var initNum;
var userOp;
$("ul li.num").on("click", function() {
num = $(this).text();
num = $(".output").text() + num;
$(".output").text(num);
});
$("ul li.op").on("click", function() {
initNum = num;
userOp = $(this).attr("data-operator");
$(".output").empty();
});
$("ul li.equal").on("click", function() {
num = Number(num);
initNum = Number(initNum);
var result;
switch(userOp){
case "plus": result = initNum + num;
break;
case "sub" : result = initNum - num;
break;
case "mul" : result = initNum * num
break;
case "dev" : result = initNum / num
break;
default : result = "NaN"
}
if(result){
$(".output").text(result);
}
})
</script>
</body>
</html>