#TIL_48 🐥 HTML 과제 수정


    지난번의 과제 피드백을 토대로 수정하고, 실습을 진행하였습니다!
    1. <head> 바깥에 있던 <link>와 <style> 위치 변경
    2. <br>과 <hr>의 잘못된 태그 문법 수정
    
    + 부트스트랩 적용과 전체적인 주석 처리는 챗 지피티의 도움을 조금 받았습니다 😅
    
    - 추억 사진(사진 + 사진 설명)이 있는 섹션을 flex를 사용하여 가로 배치, 줄바꿈 되도록 해주세요.
    - 포트폴리오 페이지에서 grid를 사용하여 한 줄에 포트폴리오가 세개씩(가장 넓은 화면 기준) 들어가게 해주세요.
    - 반응형 레이아웃을 자유롭게 적용해보세요.
    - grid를 사용하여 각 섹션 배치를 바꿔보세요.
    - position: fixed를 활용하여 고정된 버튼을 만들고, 버튼을 hover, 혹은 클릭했을 때 모양이 바뀌도록 해주세요.(트랜지션 활용)
    - 애니메이션을 한 군데 이상 적용해주세요.
    - 부트스트랩의 컴포넌트를 하나 이상 적용해주세요.

    1. index.html

    <!DOCTYPE html>
    <!-- HTML5 문서임을 선언합니다. 웹 브라우저가 이 문서를 올바르게 해석하도록 도와줍니다. -->
    <html>
      <!-- HTML 문서의 최상위 태그입니다. 모든 HTML 코드는 이 태그 안에 작성됩니다. -->
      <head>
        <!-- 웹 페이지에 대한 정보를 포함하는 부분입니다. 
             예: 제목, 메타데이터, 외부 리소스(CSS, JS) 등을 포함합니다. -->
    
        <link rel="preconnect" href="https://fonts.googleapis.com" />
        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
        <link
          href="https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap"
          rel="stylesheet"
        />
    
        <!-- 브라우저 탭에 표시되는 제목 -->
        <title>나의 첫번째 웹 페이지</title>
    
        <style>
          * {
            padding: 8px;
            margin: 0px;
            box-sizing: border-box;
            text-align: center;
            align-items: center;
          }
    
          body {
            font-family: "Noto Sans", sans-serif;
          }
    
          hr {
            margin: 36px auto 0;
            border: none;
            border-top: 1px solid #9e53be;
            width: 300px;
          }
    
          .Top {
            position: fixed;
            top: 0;
            width: 100%;
            height: 60px;
            background-color: #9e53be;
            display: flex;
            align-items: center;
            justify-content: center;
            color: white;
            font-size: 20px;
          }
    
          .Intro {
            height: 100px;
            line-height: 100px;
          }
    
          .Detail {
            margin: auto;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            text-align: center;
            color: #9e53be;
            font-weight: 400;
            background-color: rgba(185, 185, 185, 0.261);
            border-radius: 28px;
            width: 300px;
            height: 100px;
            line-height: 36px;
          }
    
          .Detail p {
            width: 100%; /* 텍스트가 차지할 너비를 지정 */
            word-wrap: break-word; /* 긴 단어를 자동으로 줄바꿈 */
            margin: 0; /* p 태그의 기본 마진을 제거 */
          }
    
          .List {
            text-align: center;
          }
    
          .Table {
            margin: auto;
            border-collapse: separate;
            border-spacing: 0;
            border-radius: 16px;
            width: 300px;
            text-align: center;
          }
    
          .Table th,
          .Table td {
            border: 2px dotted rgba(103, 98, 98, 0.261);
            padding: 10px;
            text-align: center;
          }
    
          .Table th {
            border: 2px dotted rgba(255, 255, 255, 0.261);
            background-color: #9e53be;
            color: white;
          }
    
          /* 테이블 개별 셀의 모서리 둥글게 만들기 */
          .Table tr:first-child th:first-child {
            border-top-left-radius: 16px;
          } /* 좌상단 */
          .Table tr:first-child th:last-child {
            border-top-right-radius: 16px;
          } /* 우상단 */
          .Table tr:last-child td:first-child {
            border-bottom-left-radius: 16px;
          } /* 좌하단 */
          .Table tr:last-child td:last-child {
            border-bottom-right-radius: 16px;
          } /* 우하단 */
    
          /* 추억 사진 정렬 */
          .flex-row {
            margin: auto;
            display: flex;
            flex-direction: row;
            flex-wrap: wrap;
            justify-content: center;
          }
        </style>
      </head>
    
      <body>
        <!-- 여기 밑으로 코드를 채워주세요! -->
    
        <div class="Top">
          <h3>저를 소개합니다</h3>
        </div>
    
        <br />
    
        <div class="Intro">
          <h1>안녕하세요, UXUI 6기생 김의정입니다! 🙌🏻</h1>
        </div>
    
        <!-- 이미지를 추가하는 태그 -->
        <img
          src="profile.jpg"
          alt="내 프로필 사진"
          width="200"
          style="border-radius: 50%"
        />
    
        <br />
    
        <!-- 문단을 표시하는 태그 -->
        <div class="Detail">
          <p>
            저는 내일배움캠프를 통해 UXUI를 배우고 있습니다! 열심히 해보겠습니다! 🥰
          </p>
        </div>
    
        <hr />
    
        <!-- 리스트(순서 없는 목록)를 만드는 태그 -->
        <div class="List">
          <h2>내가 좋아하는 것들</h2>
          <p>
            <!-- 리스트 항목 -->
            <li>고양이 🐈‍⬛</li>
            <!-- 첫 번째 항목 -->
            <li>커피 수혈</li>
            <!-- 두 번째 항목 -->
            <li>달달한 것</li>
            <!-- 세 번째 항목 -->
          </p>
        </div>
    
        <!-- 테이블(표)을 만드는 태그 -->
        <h2>내 친구들</h2>
    
        <table class="Table">
          <!-- 테두리가 있는 테이블 -->
          <tr>
            <!-- 테이블 헤더(머리글) -->
            <th>이름</th>
            <!-- 첫 번째 열 제목 -->
            <th>관심사</th>
            <!-- 두 번째 열 제목 -->
          </tr>
          <tr>
            <!-- 테이블 데이터 행 -->
            <td>민지</td>
            <!-- 첫 번째 셀 -->
            <td>게임</td>
            <!-- 두 번째 셀 -->
          </tr>
          <tr>
            <td>채영</td>
            <!-- 첫 번째 셀 -->
            <td>주식</td>
            <!-- 두 번째 셀 -->
          </tr>
        </table>
    
        <hr />
    
        <h2>🔗 링크 바로가기</h2>
        <!-- 링크를 추가하는 태그 -->
        <div class="Link">
          <p>
            <li>
              <a
                href="https://www.notion.so/teamsparta/b71ea1ec4d0341338e6859245a10fb1d"
                target="_blank"
              >
                멤버 카드 보러가기</a
              >
            </li>
    
            <br />
            <li>
              <a href="https://0011177.tistory.com/ " target="_blank">
                TIL 블로그 보러가기</a
              >
            </li>
    
            <br />
            <li>
              <a href="detail.html"> 유용한 사이트 모음 보러가기</a>
            </li>
          </p>
        </div>
    
        <h2>추억 사진</h2>
        <div class="flex-row">
          <div>
            <img
              src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR4uRGyMTuckDXMTinVCCFGJKdt0fnBlfEvGg&s"
              alt="내 프로필 사진"
              width="200"
            />
            <p>사진 설명</p>
          </div>
          <div>
            <img
              src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR4uRGyMTuckDXMTinVCCFGJKdt0fnBlfEvGg&s"
              alt="내 프로필 사진"
              width="200"
            />
            <p>사진 설명</p>
          </div>
          <div>
            <img
              src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR4uRGyMTuckDXMTinVCCFGJKdt0fnBlfEvGg&s"
              alt="내 프로필 사진"
              width="200"
            />
            <p>사진 설명</p>
          </div>
          <div>
            <img
              src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR4uRGyMTuckDXMTinVCCFGJKdt0fnBlfEvGg&s"
              alt="내 프로필 사진"
              width="200"
            />
            <p>사진 설명</p>
          </div>
          <div>
            <img
              src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR4uRGyMTuckDXMTinVCCFGJKdt0fnBlfEvGg&s"
              alt="내 프로필 사진"
              width="200"
            />
            <p>사진 설명</p>
          </div>
          <div>
            <img
              src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR4uRGyMTuckDXMTinVCCFGJKdt0fnBlfEvGg&s"
              alt="내 프로필 사진"
              width="200"
            />
            <p>사진 설명</p>
          </div>
        </div>
    
        <!-- 폼(사용자 입력을 받는 양식)을 만드는 태그 -->
        <h2>의견을 알려주세요!</h2>
        <form action="/submit" method="POST">
          <!-- 데이터를 서버로 전송 -->
          <label for="feedback">이 페이지에 대한 생각:</label><br />
          <!-- 입력 칸의 제목 -->
          <textarea id="feedback" name="feedback" rows="4" cols="50"></textarea
          ><br />
          <!-- 여러 줄 입력 -->
          <button type="submit">제출</button>
          <!-- 폼 제출 버튼 -->
        </form>
      </body>
    </html>

    2. card.html

    <!DOCTYPE html>
    <!-- HTML5 문서임을 선언합니다. 웹 브라우저가 이 문서를 올바르게 해석하도록 도와줍니다. -->
    <html>
      <!-- HTML 문서의 최상위 태그입니다. 모든 HTML 코드는 이 태그 안에 작성됩니다. -->
      <head>
        <!-- 웹 페이지에 대한 정보를 포함하는 부분입니다. 
             예: 제목, 메타데이터, 외부 리소스(CSS, JS) 등을 포함합니다. -->
    
        <link rel="preconnect" href="https://fonts.googleapis.com" />
        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
        <link
          href="https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap"
          rel="stylesheet"
        />
    
        <!-- 브라우저 탭에 표시되는 제목 -->
        <title>나의 첫번째 웹 페이지</title>
    
        <style>
          * {
            padding: 8px;
            margin: 0px;
            box-sizing: border-box;
            text-align: center;
            align-items: center;
          }
    
          body {
            font-family: "Noto Sans", sans-serif;
          }
    
          hr {
            margin: 36px auto 0;
            border: none;
            border-top: 1px solid #9e53be;
            width: 300px;
          }
    
          .Top {
            position: fixed;
            top: 0;
            width: 100%;
            height: 60px;
            background-color: #9e53be;
            display: flex;
            align-items: center;
            justify-content: center;
            color: white;
            font-size: 20px;
          }
    
          .Intro {
            height: 100px;
            line-height: 100px;
          }
    
          .Detail {
            margin: auto;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            text-align: center;
            color: #9e53be;
            font-weight: 400;
            background-color: rgba(185, 185, 185, 0.261);
            border-radius: 28px;
            width: 300px;
            height: 100px;
            line-height: 36px;
          }
    
          .Detail p {
            width: 100%; /* 텍스트가 차지할 너비를 지정 */
            word-wrap: break-word; /* 긴 단어를 자동으로 줄바꿈 */
            margin: 0; /* p 태그의 기본 마진을 제거 */
          }
    
          .List {
            text-align: center;
          }
    
          .Table {
            margin: auto;
            border-collapse: separate;
            border-spacing: 0;
            border-radius: 16px;
            width: 300px;
            text-align: center;
          }
    
          .Table th,
          .Table td {
            border: 2px dotted rgba(103, 98, 98, 0.261);
            padding: 10px;
            text-align: center;
          }
    
          .Table th {
            border: 2px dotted rgba(255, 255, 255, 0.261);
            background-color: #9e53be;
            color: white;
          }
    
          /* 테이블 개별 셀의 모서리 둥글게 만들기 */
          .Table tr:first-child th:first-child {
            border-top-left-radius: 16px;
          } /* 좌상단 */
          .Table tr:first-child th:last-child {
            border-top-right-radius: 16px;
          } /* 우상단 */
          .Table tr:last-child td:first-child {
            border-bottom-left-radius: 16px;
          } /* 좌하단 */
          .Table tr:last-child td:last-child {
            border-bottom-right-radius: 16px;
          } /* 우하단 */
    
          /* 추억 사진 정렬 */
          .flex-row {
            margin: auto;
            display: flex;
            flex-direction: row;
            flex-wrap: wrap;
            justify-content: center;
          }
        </style>
      </head>
    
      <body>
        <!-- 여기 밑으로 코드를 채워주세요! -->
    
        <div class="Top">
          <h3>저를 소개합니다</h3>
        </div>
    
        <br />
    
        <div class="Intro">
          <h1>안녕하세요, UXUI 6기생 김의정입니다! 🙌🏻</h1>
        </div>
    
        <!-- 이미지를 추가하는 태그 -->
        <img
          src="profile.jpg"
          alt="내 프로필 사진"
          width="200"
          style="border-radius: 50%"
        />
    
        <br />
    
        <!-- 문단을 표시하는 태그 -->
        <div class="Detail">
          <p>
            저는 내일배움캠프를 통해 UXUI를 배우고 있습니다! 열심히 해보겠습니다! 🥰
          </p>
        </div>
    
        <hr />
    
        <!-- 리스트(순서 없는 목록)를 만드는 태그 -->
        <div class="List">
          <h2>내가 좋아하는 것들</h2>
          <p>
            <!-- 리스트 항목 -->
            <li>고양이 🐈‍⬛</li>
            <!-- 첫 번째 항목 -->
            <li>커피 수혈</li>
            <!-- 두 번째 항목 -->
            <li>달달한 것</li>
            <!-- 세 번째 항목 -->
          </p>
        </div>
    
        <!-- 테이블(표)을 만드는 태그 -->
        <h2>내 친구들</h2>
    
        <table class="Table">
          <!-- 테두리가 있는 테이블 -->
          <tr>
            <!-- 테이블 헤더(머리글) -->
            <th>이름</th>
            <!-- 첫 번째 열 제목 -->
            <th>관심사</th>
            <!-- 두 번째 열 제목 -->
          </tr>
          <tr>
            <!-- 테이블 데이터 행 -->
            <td>민지</td>
            <!-- 첫 번째 셀 -->
            <td>게임</td>
            <!-- 두 번째 셀 -->
          </tr>
          <tr>
            <td>채영</td>
            <!-- 첫 번째 셀 -->
            <td>주식</td>
            <!-- 두 번째 셀 -->
          </tr>
        </table>
    
        <hr />
    
        <h2>🔗 링크 바로가기</h2>
        <!-- 링크를 추가하는 태그 -->
        <div class="Link">
          <p>
            <li>
              <a
                href="https://www.notion.so/teamsparta/b71ea1ec4d0341338e6859245a10fb1d"
                target="_blank"
              >
                멤버 카드 보러가기</a
              >
            </li>
    
            <br />
            <li>
              <a href="https://0011177.tistory.com/ " target="_blank">
                TIL 블로그 보러가기</a
              >
            </li>
    
            <br />
            <li>
              <a href="detail.html"> 유용한 사이트 모음 보러가기</a>
            </li>
          </p>
        </div>
    
        <h2>추억 사진</h2>
        <div class="flex-row">
          <div>
            <img
              src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR4uRGyMTuckDXMTinVCCFGJKdt0fnBlfEvGg&s"
              alt="내 프로필 사진"
              width="200"
            />
            <p>사진 설명</p>
          </div>
          <div>
            <img
              src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR4uRGyMTuckDXMTinVCCFGJKdt0fnBlfEvGg&s"
              alt="내 프로필 사진"
              width="200"
            />
            <p>사진 설명</p>
          </div>
          <div>
            <img
              src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR4uRGyMTuckDXMTinVCCFGJKdt0fnBlfEvGg&s"
              alt="내 프로필 사진"
              width="200"
            />
            <p>사진 설명</p>
          </div>
          <div>
            <img
              src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR4uRGyMTuckDXMTinVCCFGJKdt0fnBlfEvGg&s"
              alt="내 프로필 사진"
              width="200"
            />
            <p>사진 설명</p>
          </div>
          <div>
            <img
              src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR4uRGyMTuckDXMTinVCCFGJKdt0fnBlfEvGg&s"
              alt="내 프로필 사진"
              width="200"
            />
            <p>사진 설명</p>
          </div>
          <div>
            <img
              src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR4uRGyMTuckDXMTinVCCFGJKdt0fnBlfEvGg&s"
              alt="내 프로필 사진"
              width="200"
            />
            <p>사진 설명</p>
          </div>
        </div>
    
        <!-- 폼(사용자 입력을 받는 양식)을 만드는 태그 -->
        <h2>의견을 알려주세요!</h2>
        <form action="/submit" method="POST">
          <!-- 데이터를 서버로 전송 -->
          <label for="feedback">이 페이지에 대한 생각:</label><br />
          <!-- 입력 칸의 제목 -->
          <textarea id="feedback" name="feedback" rows="4" cols="50"></textarea
          ><br />
          <!-- 여러 줄 입력 -->
          <button type="submit">제출</button>
          <!-- 폼 제출 버튼 -->
        </form>
      </body>
    </html>

    3. portfolio.html

    <!DOCTYPE html>
    <html lang="ko">
      <head>
        <title>나의 포트폴리오</title>
        <!-- Bootstrap CSS 불러오기 -->
    
        <link rel="preconnect" href="https://fonts.googleapis.com" />
        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
        <link
          href="https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap"
          rel="stylesheet"
        />
    
        <link
          href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css"
          rel="stylesheet"
        />
    
        <style>
          /* 기본 스타일 설정 */
          body {
            font-family: "Noto Sans", sans-serif;
          }
    
          /* 제목 스타일 */
          h2 {
            text-align: center;
            margin-top: 20px;
          }
    
          /* Grid 컨테이너 설정 (반응형 적용) */
          .grid-container {
            display: grid;
            grid-template-columns: repeat(
              auto-fit,
              minmax(300px, 1fr)
            ); /* 화면 크기에 따라 자동 조정 */
            gap: 20px;
            padding: 20px;
            max-width: 1200px;
            margin: 0 auto;
          }
    
          /* 개별 Grid 아이템 스타일 */
          .grid-item {
            background-color: #f9f9f9;
            border: 1px solid #e7e7e7;
            border-radius: 10px;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
            padding: 15px;
            text-align: center;
            transition: transform 0.3s ease-in-out;
          }
    
          /* Hover 시 아이템 확대 효과 */
          .grid-item:hover {
            transform: scale(1.05);
          }
    
          /* 이미지 스타일 */
          .grid-item img {
            width: 100%;
            border-radius: 10px;
          }
    
          /* 상단으로 가기 버튼 스타일 */
          .fixed-button {
            position: fixed;
            bottom: 20px;
            right: 20px;
            background-color: #7e7e7e;
            color: white;
            border: none;
            padding: 10px 20px;
            border-radius: 50px;
            cursor: pointer;
            transition: background-color 0.3s, transform 0.3s;
          }
    
          /* Hover 시 버튼 */
          .fixed-button:hover {
            background-color: #767676;
            transform: scale(1.1);
          }
    
          /* 클릭 시 버튼 */
          .fixed-button:active {
            background-color: #4d4d4d;
            transform: scale(0.95);
          }
    
          /* 자세히 보기 버튼 스타일 */
          .btn-primary {
            background-color: #9e53be;
            color: white;
            border: none;
            padding: 10px 20px;
            border-radius: 50px;
            cursor: pointer;
          }
    
          /* Hover 시 버튼 */
          .btn-primary:hover {
            background-color: #7c3d97;
          }
    
          /* 클릭 시 버튼 */
          .btn-primary:active {
            background-color: #6b2d86;
          }
        </style>
      </head>
      <body>
        <!-- 제목 -->
        <h2>내 작품 소개</h2>
    
        <!-- Grid 컨테이너 -->
        <div class="grid-container">
          <!-- 개별 Grid 아이템 (Bootstrap 카드 컴포넌트 적용) -->
          <div class="grid-item card">
            <img
              src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR4uRGyMTuckDXMTinVCCFGJKdt0fnBlfEvGg&s"
              class="card-img-top"
              alt="프로젝트 1"
            />
            <div class="card-body">
              <h3 class="card-title">UX 프로젝트</h3>
              <p class="card-text">진행 날짜: 2025.3.24 ~</p>
              <p class="card-text">개인</p>
              <button class="btn-primary">자세히 보기</button>
            </div>
          </div>
    
          <div class="grid-item card">
            <img
              src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR4uRGyMTuckDXMTinVCCFGJKdt0fnBlfEvGg&s"
              class="card-img-top"
              alt="프로젝트 2"
            />
            <div class="card-body">
              <h3 class="card-title">UI 프로젝트 1</h3>
              <p class="card-text">진행 날짜: 2025.3.28 ~</p>
              <p class="card-text">팀</p>
              <button class="btn-primary">자세히 보기</button>
            </div>
          </div>
    
          <div class="grid-item card">
            <img
              src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR4uRGyMTuckDXMTinVCCFGJKdt0fnBlfEvGg&s"
              class="card-img-top"
              alt="프로젝트 3"
            />
            <div class="card-body">
              <h3 class="card-title">MVP 프로젝트</h3>
              <p class="card-text">진행 날짜: 2025.4.3 ~</p>
              <p class="card-text">팀</p>
              <button class="btn-primary">자세히 보기</button>
            </div>
          </div>
        </div>
    
        <!-- 고정 버튼 (Top으로 이동) -->
        <button class="fixed-button">상단으로 가기</button>
    
        <script>
          // 고정 버튼 클릭 시 페이지 상단으로 스크롤 이동
          document.querySelector(".fixed-button").addEventListener("click", () => {
            window.scrollTo({ top: 0, behavior: "smooth" });
          });
        </script>
    
        <!-- Bootstrap JS 불러오기 -->
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
      </body>
    </html>

    '내배캠 TIL' 카테고리의 다른 글

    #TIL_50 🧵 MVP 프로젝트 2일차!  (0) 2025.04.04
    #TIL_49 ❤️‍🔥 MVP 프로젝트 시작!  (0) 2025.04.03
    #TIL_47 🔥 UX 복습  (0) 2025.04.01
    #TIL_46 🍫 CSS 레이아웃  (0) 2025.03.31
    #TIL_45 📓 HTML, CSS 적용하기  (3) 2025.03.28

    댓글