HTML 태그 정리(Script)

seokhyeon_k·2025년 2월 19일

HTML 요소 정리: <script> 요소

<script> 요소란?

HTML의 <script> 요소는 JavaScript 코드를 포함하거나 외부 스크립트를 불러와 웹페이지에서 동적인 기능을 추가하는 데 사용됩니다. <script><head> 또는 <body> 내부에 배치될 수 있습니다.

기본 사용법

<script>
  console.log("Hello, world!");
</script>
  • <script> 내부에 직접 JavaScript 코드를 작성할 수 있습니다.
  • 웹 브라우저는 해당 코드를 실행하여 페이지의 동작을 제어합니다.

외부 스크립트 연결

<script src="/path/to/script.js"></script>
  • src 속성을 사용하여 외부 JavaScript 파일을 불러올 수 있습니다.
  • 유지보수성과 성능 최적화를 위해 외부 파일을 사용하는 것이 일반적입니다.

실전 예제: 카드 뒤집기 기능

<!doctype html>
<html lang="ko-KR">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Script 요소</title>
    <link rel="stylesheet" href="/src/html/styles/23-script.css" />
    <script src="/src/html/js/23-script.js"></script>
  </head>
  <body>
    <h1>Script 요소</h1>
    <button type="button" class="flip-button">카드 뒤집기</button>

    <div class="card-wrapper">
      <div class="card">
        <div class="card-face card-face-black"></div>
        <div class="card-face card-face-white"></div>
      </div>
    </div>
  </body>
</html>

설명

  • <script src="/src/html/js/23-script.js"></script> : 외부 JavaScript 파일을 로드하여 기능을 추가.
  • .flip-button 버튼 : 클릭 시 카드가 뒤집히는 기능을 수행.
  • .card-wrapper : 카드 컨테이너 역할.
  • .card : 앞면(.card-face-black)과 뒷면(.card-face-white)을 포함.

JavaScript를 활용한 동적 기능 추가 예제

아래는 /src/html/js/23-script.js 파일에 들어갈 수 있는 예제 코드입니다.

document.addEventListener("DOMContentLoaded", () => {
  const flipButton = document.querySelector(".flip-button");
  const card = document.querySelector(".card");

  flipButton.addEventListener("click", () => {
    card.classList.toggle("flipped");
  });
});
  • DOMContentLoaded 이벤트를 사용하여 페이지 로딩 후 스크립트가 실행되도록 설정.
  • .flip-button 클릭 시 .card 요소에 flipped 클래스를 추가/제거하여 카드가 뒤집히는 효과를 구현.

정리

  • <script> 요소를 활용하면 HTML 페이지에서 JavaScript 기능을 추가할 수 있습니다.
  • 내부 또는 외부 스크립트를 사용하여 코드의 재사용성과 유지보수성을 높일 수 있습니다.
  • JavaScript를 사용하면 동적인 UI 요소(예: 카드 뒤집기)를 쉽게 구현할 수 있습니다.

이번 학습을 통해 <script> 요소의 역할과 동적 기능을 추가하는 방법을 배웠습니다!

profile
프론트엔드 공부중입니다

0개의 댓글