JS

JS 이벤트 처리 - 4(반복문과동적생성)

H_u 2024. 8. 2. 16:15
728x90
반응형
SMALL

Flexible Box(flexbox)를 활용해서 HTML 요소를 만들어 보자

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      body {
        background-color: rgb(79, 153, 112);
        display: flex;
        flex-direction: column;
        align-items: center;
        margin: 0;
        padding: 0;
      }

      button {
        background-color: aquamarine;
        color: white;
        margin: 20px;
        border: none;
        font-size: 1em;
        padding: 8px;
      }

      .container {
        display: flex;
        /* 요소들이 컨테이너 영역을 벗어나면 다음 줄로 자연스럽게 이동 */
        flex-wrap: wrap;
        width: 80%;
      }

      .card {
        background-color: white;
        margin: 10px;
        padding: 20px;
        border-radius: 8px;
        flex: 1;
        /* 최소 크기 지정 */
        min-width: calc(33.33% - 10px);
        text-align: center;
      }
    </style>
  </head>
  <body>
    <h1>반복문을 활용한 리스트 생성</h1>
    <button onclick="render()">Render</button>

    <div class="container" id="container">
      <!-- 자바스크립트로 변경 예정 -->
    </div>

    <script>
      let cardId = 0; // 카드의 고유한 id를 생성하기 위한 변수
      function render() {
        // 카드가 추가될 컨테이너 요소를 가져 옵니다.
        const container = document.getElementById("container");
        // 동적으로 생성한 Card 요소를 container의 자식으로 넣어주면 된다.
        for (let i = 0; i < 3; i++) {
            cardId++;
            const card = createCard();
            container.append(card);
        }
      }

      function createCard() {
        // 함수를 통해서 HTML 요소를 생성하는 연습
        const card = document.createElement("div");
        card.className = "card";
        card.id = "card-" + cardId;

        // 백틱을 활용해서 요소를 만드는 방법 연습
        card.innerHTML = `
            <h2>Title ${cardId}</h2>
            <p>content ${cardId}</p>
            <button onclick="deleteCard('${cardId}')">Delete</button>
        `;
        return card;
      }

      function deleteCard(cardId) {
        const card = document.getElementById(`card-${cardId}`);
        if (card != null) {
          card.remove();
        }
      }
    </script>
  </body>
</html>
728x90
반응형
SMALL

'JS' 카테고리의 다른 글

JS 이벤트 처리 - 6(배너변경하기)  (0) 2024.08.02
JS 이벤트 처리 - 5(이미지 토글)  (0) 2024.08.02
JS 이벤트 처리 - 3(forms)  (0) 2024.08.02
JS 이벤트 처리 - 2(addEventListener)  (0) 2024.08.02
JS의 이벤트  (1) 2024.07.24