본문 바로가기
Others

자바스크립트로 계산기를 만들어보자!

by yeonise 2022. 8. 5.

HTML과 CSS 그리고 JavaScript를 사용하여 간단한 계산기를 만들어보자. 계산기에 구현할 기능은 아래와 같다.

 

숫자 입력 / 더하기 / 빼기 / 곱하기 / 나누기 / 소수점 계산 / 전부 지우기 / 한 글자씩 지우기 / 계산하기

 

완성한 계산기는 글 맨 아래에서 확인할 수 있다.

 


1. HTML 작성하기

.html 파일의 <body> 태그 안에 아래의 코드를 작성해주었다.

"container" 안에 "calculator" 가 있고,

"calculator" 는 "display" 와 "buttons" 를 갖고 있는 구조이다.

버튼에서 숫자는 number, 연산자는 operator, 계산하기는 enter 등으로 구분하여 class로 그룹화했다.

그리고 각각의 버튼에 "onclick"을 사용하여 클릭 이벤트 발생 시 수행할 함수들을 지정했다.

함수들은 자바스크립트 파일에서 작성한다.

<body>
    <h3>Calculator for you!</h3>
    <div class="container">
      <div class="calculator">
        <input id="display" type="text" readonly />
        <div class="buttons">
          <button class="clear" onclick="reset()">Clear</button>
          <button class="delete" onclick="back()">Back</button>
          <button class="enter" onclick="calculate()">Enter</button>

          <button class="number" onclick="addOutput(7)">7</button>
          <button class="number" onclick="addOutput(8)">8</button>
          <button class="number" onclick="addOutput(9)">9</button>
          <button class="operator" onclick="addOutput('+')">+</button>

          <button class="number" onclick="addOutput(4)">4</button>
          <button class="number" onclick="addOutput(5)">5</button>
          <button class="number" onclick="addOutput(6)">6</button>
          <button class="operator" onclick="addOutput('-')">-</button>

          <button class="number" onclick="addOutput(1)">1</button>
          <button class="number" onclick="addOutput(2)">2</button>
          <button class="number" onclick="addOutput(3)">3</button>
          <button class="operator" onclick="addOutput('*')">*</button>

          <button class="number" onclick="addOutput(0)">0</button>
          <button class="decimal" onclick="addOutput('.')">.</button>
          <button class="operator" onclick="addOutput('/')">/</button>
        </div>
      </div>
    </div>
  </body>

2. CSS 작성하기

계산기의 버튼은 .html 파일에서 <table> 태그를 사용하는 대신 .css 파일에서 display : grid 를 이용하여 정렬하였다. 그리고 버튼에 마우스를 올렸을 때, 포인터 모양이 바뀌고 버튼의 투명도를 흐리게 하여 선택하고자 하는 버튼이 잘 보이도록 해주었다. 자세한 코드는 아래와 같다.

input {
  width: 334px;
  height: 80px;
  padding-right: 16px;
  border: none;
  border-radius: 6px;
  background-color: white;
  font-family: "Poppins", sans-serif;
  text-align: right;
  color: #92b4ec;
  font-size: x-large;
  font-weight: bold;
}

.container {
  height: 100%;
  justify-content: center;
  align-items: center;
}

.calculator {
  background-color: #ffe69a;
  width: 352px;
  height: 480px;
  border-radius: 16px;
  padding: 45px 25px 30px 25px;
  margin: 15px 25px;
  border: solid 6px white;
}

.buttons {
  background-color: aliceblue;
  width: 304px;
  height: 330px;
  margin-top: 20px;
  padding: 24px;
  border: none;
  border-radius: 12px;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-template-rows: repeat(5, 1fr);
  gap: 10px;
}

.buttons > button {
  border-radius: 12px;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  background-color: #92b4ec;
  color: white;
  cursor: pointer;
  outline: none;
  border: none;
  font-family: "Poppins", sans-serif;
  font-size: medium;
}

.enter {
  grid-column: 3 / span 2;
}

.decimal {
  grid-column: 2 / span 2;
}

button:hover {
  opacity: 0.5;
}

3. JavaScript 작성하기

클릭 이벤트 발생 시 수행할 함수들을 .js 파일에 정리했다.

계산하기 동작은 문자로 표현된 자바스크립트 코드를 실행하는 함수인 eval()을 사용했다.

코드는 아래와 같다.

const display = document.getElementById("display");

function addOutput(num) {
  display.value = display.value + num;
}

function calculate() {
  let result = eval(display.value);
  display.value = result;
}

function reset() {
  display.value = "";
}

function back() {
  display.value = display.value.substring(0, display.value.length - 1);
}

완성한 계산기 이미지
완성한 계산기

디자인은 개인의 취향에 맞게 자유롭게 변경하면 된다. 이렇게 계산기를 만들어 보았다! 뿌듯해 😊

'Others' 카테고리의 다른 글

HTML <form> 으로 주문서 양식을 만들어보자!  (0) 2022.08.05

댓글