WEB/프로젝트

WEB (5~)6주차 - 프로젝트 중간보고서

너굴맨이해치움 2022. 5. 29. 21:15

중간결과물

(기획서에서의 탭3 화면)

  • 각각의 노래 제목을 누르면 노래에 해당되는 유튜브 영상으로 리다이렉트(새 탭)
  • 'QUEST' 를 누르면 탭 1 화면으로 리다이렉트 (MYPAGE는 페이지가 미구현 상태이므로 보류)

 

(탭1 화면 - 일부 구현)

  • 탭 3에서와 마찬가지로, BGM을 누르면 탭 3으로 리다이렉트
  • 할일 종류, 할일 내용, 마감 시한 란에 각각 텍스트 입력 가능

 

 

 

구현한 것

 

: 탭3 (5주차)

  • 텍스트 입력, 전체 레이아웃 구성
  • 음표 아이콘 삽입
  • <a> 태그를 통한 링크 기능
  • 배경 이미지 삽입

 

: 탭1 (6주차)

  • 배경 이미지 삽입
  • 입력 란의 레이아웃 구성, CSS 활용해 디자인적 세부요소 가미
  • 링크 및 리다이렉트
  • JS 코드를 삽입 시를 대비하여 입력 란과 레벨 숫자에 value 부여

 

 

 

코드

  <body>

    <div class="title">
      <h1>노동요</h1>
      이어폰을 지참하세요.<br>작업부터 휴식까지, 편안한 음악과 함께하세요.
    </div>

    <div class="menu">
      <a href="tab1.html" class="tab"> QUEST </a>
      <span class="tab"> MYPAGE </span>
      <span class="tab" id="current_tab"> BGM </span>
    </div>

탭3 - 배경이미지(제목), 탭 표시 부분 (html)

 

<div class="playlist">
      <div class="music">
        <img class="player" src="player.png">
        <a href="https://youtu.be/PfqRyzUuHnM" class="music_name" target="_blank">공부할 때 듣는 호그와트 ASMR</a>
        <span class="playtime">1:01:43</span>
      </div>

      <div class="music">
        <img class="player" src="player.png">
        <a href="https://youtu.be/CNXGekoqRRU" class="music_name" target="_blank">25/5 타임터너 뽀모도로</a>
        <span class="playtime">3:00:45</span>
      </div>

      <div class="music">
        <img class="player" src="player.png">
        <a href="https://youtu.be/cbuZfY2S2UQ" class="music_name" target="_blank">코딩할 때 듣는 차분한 Lo-fi</a>
        <span class="playtime">2:50:27</span>
      </div>

      <div class="music">
        <img class="player" src="player.png">
        <a href="https://youtu.be/QUXKib-jfEM" class="music_name" target="_blank">급한 마감 할 때 - 엘모의 이마트송</a>
        <span class="playtime">5:00:10</span>
      </div>

      <div class="music">
        <img class="player" src="player.png">
        <a href="https://youtu.be/dAw4pUWd6Yg" class="music_name" target="_blank">휴식이 필요할 때 - 불멍 ASMR</a>
        <span class="playtime">1:02:09</span>
      </div>

    </div>

  </body>

탭3 - 내용(배경음악) 하이퍼링크 부분 (html)

 

  <style>
      body{
        text-align: center;
        margin: 0;
      }

      .title{
        margin: 0;
        padding: 150px;
        background-image: url("tab3_back.jpg");
        background-size: cover;
        color: white;
      }

      .menu{
        margin: 30px;
        font-size: 20px;
      }
      .tab{
        color: grey;
        margin: 70px;
      }
      #current_tab{
        font-weight: bold;
        color: blue;
      }

탭3 - 제목과 메뉴 부분 (CSS)

  • 배경이 꽉 차게 들어가야 했기에 body의 margin은 0으로.
  • margin이 필요한 부분이 있으면 각각의 부분에서 별도 지정
  • 배경 이미지가 배경에 꽉 차게 들어가게 하기 위해서 background-size: cover 사용
  • 탭 표시는 기본이 회색에 하이퍼링크 포함, 현재 탭만 색이 있는 일반 텍스트로

 

	.playlist{
        text-align: left;
        padding: 100px;
      }
      .music{
        padding: 60px;
        padding-left: 150px;
        padding-right: 150px;
        border-bottom-style: dotted;
        border-bottom-width: thin;
        border-bottom-color: grey;
      }
      .player{
        width: 20px;
      }
      .music_name{
        padding-left: 20px;
        padding-right: 20px;
        font-size: 24px;
        color: black;
      }
      a{
        text-decoration: none;
      }
      .playtime{
        color: grey;
      }

    </style>

탭3 - 본문 하이퍼링크 부분(CSS)

  • 각각의 부분에 클래스를 부여하여 관리 (전체는 playlist, 아이콘+노래제목+재생시간 표시는 한 묶음으로 하여 music, 아이콘은 player, 이름은 music_name, 재생시간은 playtime)
  • 하이퍼링크에 기본으로 들어가는 밑줄을 없애기 위해 text-decoration을 none으로 지정
  • border-bottom에 dotted 스타일의 경계선을 넣어 음악 개체끼리 구분

 

	<div class="title">
      <h1>오늘의 퀘스트</h1>
      오래 볼수록 하기 싫습니다. 자세히 보면 더 하기 싫습니다.<br>
      흐린 눈으로 해치우고 나면 그제서야 아름다워집니다.
    </div>

    <div class="menu">
      <span class="tab" id="current_tab"> QUEST </span>
      <span class="tab"> MYPAGE </span>
      <a href="tab3.html" class="tab"> BGM </a>
    </div>

탭1 - 제목과 메뉴 (html)

  • 탭3과 레이아웃 동일

 

	<div class="input">
      <div class="attribute" id="level">
        <div class="lv_line">Lv.</div>
        <div class="lv_line">
          <span class="lv">3</span>
          <span class="lv">2</span>
          <span class="lv">1</span>
        </div>
        <div class="lv_line">
          <input type="text" name="category" value="할일 종류">
        </div>
      </div>
      <div class="attribute" id="work">
        <input id="work_name" type="text" name="name" value="할일 내용">
      </div>
      <div class="attribute" id="due_to">
        <div class="due_line">Due to</div>
        <div class="due_line">
          <input type="text" name="due" value="마감시한">
        </div>
      </div>
      <!--<input class="plus" type="button" name="add" value="">
      -->
    </div>

탭1 - 입력 부분 (html)

 

  • 입력이 들어가는 세 부분을 하나의 태그 아래에 묶되,
  • 한 라인에 세 부분이 모두 들어갈 수 있도록 span 태그와 적절히 병용
  • (주석처리된 부분은 차후 보완하여 추가할 + 버튼 부분의 코드)

 

body{
        text-align: center;
        margin: 0;
      }

      .title{
        margin: 0;
        padding: 150px;
        background-image: url("tab1_back.jpg");
        background-size: cover;
        color: white;
      }

      .menu{
        margin: 30px;
        font-size: 20px;
      }
      .tab{
        color: grey;
        margin: 70px;
      }
      #current_tab{
        font-weight: bold;
        color: purple;
      }
      a{
        text-decoration: none;
      }

탭1 - 제목과 메뉴 (CSS)

  • 탭3과 레이아웃 동일

 

 

.input{
        margin: 50px;
        padding-bottom: 50px;
        text-align: center;
        font-size: 24px;
        border-bottom: dotted grey 3px;
      }
      .lv{
        padding: 10px;
        color: grey;
        style: bold;
      }
      .attribute{
        display: inline-block;
        padding: 50px;
      }

      input{
        text-align: center;
        width: 100px;
        height: 20px;
        color: grey;
      }
      #work_name{
        width: 500px;
        height: 50px;
        border-top: none;
        border-left: none;
        border-right: none;
        border-bottom: 3px solid black;
        font-size: 40px;
      }

     /* input.plus{
        background: url("add.png") no-repeat;
        background-color: white;
        float: left;
        border: none;
        width: 64px;
        height: 64px;
        cursor: pointer;
        margin: 20px;
        margin-left: 30px;
        margin-right: 30px;
        position: relative;
        top: 300px;
        left: 300px;
      }*/

탭1 - 입력 부분 (CSS)

 

  • 아래 추가될 내용과 구분할 밑줄을 dotted 속성의 border-bottom으로 구현
  • 각각의 부분에 클래스를 부여하고 간격과 크기를 조절
  • 심미성을 위해 입력창의 크기와 모양을 일부 조정하고 중앙 입력창을 밑줄 형태의 입력창으로 변형
  • (주석처리된 부분은 차후 보완하여 추가할 + 버튼 부분의 코드)

 

 

보완/추가할 점

  • 배경이미지를 약간 더 어두운 것으로 편집해 바꿔 넣으면 가독성 면에서 더 좋을 것 같다.
  • 저번에 시작 화면을 구현할 때 미처 구현하지 못했던 버튼 구현에 성공했으나, 위치 지정과 float 속성 사용에 어려움을 겪어 보류했다. 차후 이 문제가 해결되면 시작 화면에 들어가는 버튼과 함께 일괄 수정할 예정이다.
  • 탭1의 경우 입력을 받고 그 입력값을 아래에 표시해서 체크리스트를 만드는 부분이 필요하다. 해당 부분 미구현 상태이며, JS 사용에 더 능숙해지면 구현할 예정이다.