부트캠프

wep페이지 만들기 연습 1일차

한우종 2024. 8. 8. 22:04
멤버 소개 페이지 만들기
부트캠프 1주차 프로젝트인 wep프로젝트 만들기를 마무리하였다.

하지만 그때그때 필요한 기능을 검색하며 제대로 이해도 하지 못한채 기능이 구현되면 넘어간것들이 많으므로
이번엔 팀원들의 도움없이 다시 처음부터 혼자 만들어기로 했다.

 

 

  • 1일차 마무리 코드
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>멤버 소개 페이지</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <link
      href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"
      rel="stylesheet"
      integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC"
      crossorigin="anonymous"
    />
    <style>
      .nav-link {
        color: white;
      }
      .nav-link:visited {
        color: white; /* 방문한 링크 색상 */
      }
      .nav-link:active {
        color: skyblue; /* 클릭 중인 링크 색상 */
      }
      .nav-link:hover {
        color: skyblue; /* 마우스를 올렸을 때 링크 색상 */
      }

      body {
        height: 100%;
        background-image: url("image/banner.jpg");
        background-color: transparent;
        background-position: center; /*사진 위치 가운데*/
        background-size: cover; /*사이즈 딱 맞게*/
        background-attachment: fixed; /*배경 이미지가 스크롤 시 고정시키는거 */
        background-repeat: no-repeat; /*배경 이미지 반복 안하게하는거*/
      }

      .mainPage {
        background-color: transparent;
        color: white; /*박스안 텍스트 변경 */
        margin: 30px 500px 30px 500px; /* 바깥으로 여백주기 */

        display: flex;
        justify-content: center;
        align-items: center;
        text-align: center;
      }
      .container-fluid > P {
        margin: 0px;
        width: 100%;
      }
      .cards {
        max-width: 1200px; /* 최대 너비 설정 */
        width: 100%;
        /* 너비를 100%로 설정하여 반응형으로 만듦 */

        margin: 0px auto 0px auto;
        padding: 20px;

        text-align: center;
      }

      .card:hover {
        transition: transform 0.3s ease; /* 부드러운 전환 효과 */
        transform: scale(1.05); /* 마우스를 올렸을 때 1.05배 확대 */
      }
      .cards_body {
        background-color: rgba(0, 0, 0, 0.3);
        padding-top: 200px;
        margin-top: 300px;
        height: 800px;

        border: 2px double rgba(0.5);
      }

      /* 모달 스타일 설정 */

      /* 모달 여백 */
      .modal-dialog {
        background-color: rgba(0, 0, 0, 0.5);
        display: flex;
        justify-content: center;
        align-items: center;
        position: fixed;
        width: 600px; /* 고정 너비 설정 */
        height: 400px; /* 고정 높이 설정 */
        top: 30%; /* 화면 중앙으로 위치 */
        left: 30%; /* 화면 중앙으로 위치 */
        transform: translate(-30%, -30%); /* 중앙 정렬을 위한 변환 */
        margin: 0; /* 마진 없애기 */
      }

      /* 모달 팝업창 사이즈 */
      .modal-content {
        background-color: rgba(20.2.20.0.3);
        width: 100%; /* 부모 요소의 너비를 가득 채우도록 설정 */
        height: 100%; /* 부모 요소의 높이를 가득 채우도록 설정 */
      }
      /* Center the image and add margin at the bottom */

      /* 모달 버튼 위치 */
      .modal-header > button {
        background-color: green;
      }
    </style>
  </head>
  <body>
    <!-- 헤더바 -->
    <header class="header">
      <nav class="navbar navbar-expand-lg bg-body-tertiary">
        <div class="container-fluid">
          <div class="collapse navbar-collapse" id="navbarSupportedContent">
            <ul class="navbar-nav me-auto mb-2 mb-lg-0">
              <li class="nav-item">
                <a class="nav-link active" aria-current="page" href="index.html"
                  >멤버 소개 페이지</a
                >
              </li>
              <li class="nav-item">
                <a class="nav-link" href="test.html">아직몰루</a>
              </li>
            </ul>
          </div>
        </div>
      </nav>
    </header>

    <!-- 메인 페이지 -->
    <div class="mainPage">
      <div class="container-fluid py-5">
        <h1 class="display-5 fw-bold">소개 하는곳</h1>
        <p class="col-md-8 fs-4">어쩌구 소개 페이지 입니다.</p>
      </div>
    </div>
    <!-- 멤버 표시 카드 형식 완성하고 삭제-->
    <div class="cards_body">
      <div class="cards">
        <div class="row row-cols-1 row-cols-md-4 g-4">
          <div id="member_card" class="col">
            <div
              class="card"
              data-bs-toggle="modal"
              data-bs-target="#card_modal"
            >
              <img
                src="이미지링크"
                class="card-img-top"
                alt="..."
              />
              <div class="card-body">
                <h5 class="card-title">한우종</h5>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
    <!-- 멤버 표시 모달 -->

    <!-- 모달 구조 -->

    <div
      class="modal fade"
      id="card_modal"
      tabindex="-1"
      aria-labelledby="exampleModalLabel"
      aria-hidden="true"
    >
      <div class="modal-dialog">
        <div class="modal-content">
          <div class="modal-header">
            <button
              type="button"
              class="btn-close"
              data-bs-dismiss="modal"
              aria-label="Close"
            ></button>
          </div>
          <div class="modal-body">
            <h3><strong>이름:</strong><span id="inpo-modal-title"></span></h3>
            <p><strong>생일:</strong> <span id="info-modal-brlusdey"></span></p>
            <p><strong>mbti:</strong> <span id="info-modal-role"></span></p>
            <p><strong>직업:</strong> <span id="info-modal-role"></span></p>
            <p><strong>취미:</strong> <span id="info-modal-role"></span></p>
          </div>
          <div class="modal-footer">
            <button
              type="button"
              class="btn btn-primary"
              data-bs-dismiss="modal"
            >
              수정
            </button>
            <button type="button" class="btn btn-danger">삭제</button>
          </div>
        </div>
      </div>
    </div>
    <script
      src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"
      integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz"
      crossorigin="anonymous"
    ></script>
  </body>
</html>

 

  • 현재 진행 상황

백그라운드 이미지 변경

 

링크에 마우스 커서를 올리면 파란색으로 바뀌고 마우스를 치우면 다시 흰색으로 돌아옴

 

카드 클릭시 팝업모달 띄우기

  • 백그라운드 이미지 변경
  • 배경이 사진이 스크롤을 내리거나 올려도 움직이지 않도록 고정함
  • 이미지가 브라우저에 가운데 오도록 설정하고 사이즈를 완전히 맞게 설정함
  • 이미지가 스크롤을 내릴때 반복되지 않도록 설정
  • 카드 위치를 조금 명확히 하기위해 카드가 오는 아래쪽을 반투명한 색으로 변경
  • 메인 페이지링크와 다른페이지로 갈수있는 링크를 헤더에 nav바로 설정
  • 링크에 마우스 올리면 컬러가 파란색으로 변하고 마우스를 치우면 다시 흰색으로 돌아옴
  • 메인링크 클릭시 메인페이지로 가도록설정 그 옆의 링크를 누르면 다른페이지로 넘어가도록 설정(그냥 빈페이지)
  • 부트스트랩 점보트론을 이용하여 메인 박스를 가운데에 만들어둠 (추후 수정)
  • 카드 위치를 브라우저창 크기에 상관없이 가운데로 오도록 설정함
  • 카드에 마우스 커서 올릴시 카드가 살짝 커지게 조정하고 커지는 모션이 살짝 천천히 보이도록 설정
  • 카드를 누를시 모달을 이용한 팝업창을 띄움
  • 팝업창이 뜨면 팝업창을 제외한 나머지 화면이 어두워지게 만들어 팝업창에 좀더 시선이 가도록함

  • 해결하지 못한부분
  • 브라우저창이 작아져도 모달팝업사이즈가 변하지 않게해야함
  • 카드를 동그랗게 만들어야함
  • 멤버 정보를 저장하고 카드를 생성하는 기능구현해야함
  • 생성한 멤버카드에 수정 버튼을 클릭시 이미 입력되어있는 정보들을가진
    수정팝업이 더야함
  • 삭제 버튼을 클릭시 브라우저에 카드를 삭제하고 db의 데이터를 삭제시켜야함
  • 저장한 멤버 정보가 카드를 클릭했을때 모달팝업창에 떠야함
  • 카드 안에도 사진이 들어가야함
  • 수정 삭제버튼 팝업창에 딱맞게 만들기