ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Act Ⅳ] 모멘텀 클론코딩 (바닐라 JS)
    보스 (프로젝트)/액트 Ⅳ - Momentum-Clone (바닐라 JS) 2021. 10. 30. 22:29
    728x90

    노마드코더 강의를 들으며 모멘텀 클론코딩을 진행하였다.

    결과물은 아래 주소에서 🚀

    https://reload1bronze.github.io/

     

    ⚔️ 주요 포인트

    1. JS에서 HTML 요소 불러오기

    const loginInput = document.querySelector("#login-form input");
    const toDoForm = document.getElementById("todo-form");

    2. localStrorage를 이용한 데이터 저장 및 불러오기

    const savedUsername = localStorage.getItem(USERNAME_KEY);
    
    function foo(e) {
      ...
      localStorage.setItem(USERNAME_KEY, username);
      ...
    }

    3. classList를 활용한 콘텐츠 숨기기/보이기

    .hidden {
      display: none;
    }
    const HIDDEN_CLASSNAME = "hidden";
    
    val.classList.add(HIDDEN_CLASSNAME);
    val.classList.remove(HIDDEN_CLASSNAME);
    
    // 간단한 on/off 기능은 toggle 메소드를 통해 구현가능
    val.classList.toggle(HIDDEN_CLASSNAME);

    4. Date 객체 및 setInterval 함수 활용

    function getClock() {
      // Date 객체를 통해 현재 시간을 불러옴
      const date = new Date();
      // String 객체의 padStart 메소드를 활용해 01, 02, 03 ... 를 표현
      const hours = String(date.getHours()).padStart(2, "0");
      const minutes = String(date.getMinutes()).padStart(2, "0");
    }
    
    // setInterval 적용시 지정된 시간이후 지정된 간격으로 
    // 함수를 호출하므로 최초 호출은 별도로 해주어야 함
    getClock();
    setInterval(getClock, 1000);

    5. Math 객체의 메소드 활용 (random, floor, round, ceil)

    - Math.random() => 0 이상 1 미만의 랜덤한 값을 반환

    - Math.floor() => 괄호 안의 값에서 버림 처리

    - Math.round() => 괄호 안의 값에서 반올림 처리

    - Math.ceil() => 괄호 안의 값에서 올림 처리

    6. JS에서 HTML 요소 생성 및 적용

    function foo(newTodo) {
      const li = document.createElement("li");
      const btn = document.createElement("button");
      const span = document.createElement("span");
      
      li.appendChild(btn);
      li.appendChild(span);
      toDoList.appendChild(li);
    }

    7. addEventListener 메소드 작성시 event 파라미터의 target 프로퍼티 활용

    function foo(event) {
      // 클릭 이벤트가 일어난 버튼 요소의 부모 요소 반환
      const li = event.target.parentElement;
    }
    
    btn.addEventListener("click", foo);

    8. filter 함수 활용 (기존 배열의 요소 중 조건을 만족하는 요소로 새로운 배열을 만듦)

    toDos = toDos.filter((toDo) => toDo.id !== parseInt(li.id));

    9. JSON.stringify() / JSON.parse()

    JSON.stringify() - JavaScript 값이나 객체를 JSON 문자열로 변환

    JSON.parse() - JSON 문자열의 구문을 분석하고, 그 결과에서 JavaScript 값이나 객체를 생성

    ※ 참고: https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/JSON

    10. getCurrentPosition() 메소드 활용하여 현재 위치 찾기

    function onGeoOk(position) {
      const lat = position.coords.latitude;
      const lng = position.coords.longitude;
    }
    
    navigator.geolocation.getCurrentPosition(onGeoOk, onGeoError);

     

    🏹 챌린지 과제 수행시 구글링한 내용

    1. body backgroundImage, backgroundSize 변경 방법

    document.body.style.backgroundImage = `url(img/${chosenImage})`;
    document.body.style.backgroundSize = "cover";

    2. input 배경 및 테두리 제거

    input {
      background: transparent;
      border: none;
    }
    
    input:focus {
      outline: none;
    }

     

    728x90
And bytes to code before I sleep.