코딩자율학습단 19기 | 20일차 학습일지(END) – 최종프로젝트(2)_포트폴리오·컨택트 섹션 완성 + 반응형(Media Query) + 자바스크립트 효과 적용

오늘 학습 정보

  • 날짜/Day: 2026/02/06 (Day20)
  • 교재 범위: ~ 13.11 유효성 검증하기 (p.553 ~ p.585)
kakao screenshot1770378101585
  • 출처: 코딩 자율학습단 카카오톡 채널 메시지 캡처

오늘의 핵심 키워드 3개

  • 핵심 키워드 1: 섹션 레이아웃(Portfolio/Contact) 마무리
  • 핵심 키워드 2: 반응형 처리(미디어 쿼리 + rem 기준 폰트)
  • 핵심 키워드 3: JS 동작(타이핑/스크롤 헤더/부드러운 이동)

개념 정리

2-1) Portfolio 섹션 구성(HTML/CSS)

역할: 작업 결과물을 “카드(썸네일+텍스트)” 형태로 보여주는 영역 구성

핵심 포인트: 반복되는 카드 구조를 일정한 래퍼/클래스로 통일해 스타일 적용이 쉬운 형태로 만듦

짧은 예시(코드):

<section class="portfolio-me" id="portfolio">
   <div class="container">
      <div class="portfolio-inner">
         <div class="thumb"></div>
         <div class="text">
            <h3>Package Design</h3>
            <p>BRANDING</p>
         </div>
      </div> 
   </div>
</section>

2-2) Contact With Me 섹션 + 폼 UI 디테일(HTML/CSS)

역할: 연락처 정보 + 사용자 입력 폼을 한 화면에서 제공

핵심 포인트:

  • 좌/우 영역으로 나눈 뒤(정보 hookup / 입력 폼) 입력 UI는 input/textarea에 동일한 디자인 규칙 적용
  • :focus에서 테두리/그림자 효과로 “현재 입력 중” 상태를 명확히 표시

짧은 예시(코드):

/* textarea 포커스 시 강조 */
section.contact .contact-me .right .form-group textarea:focus{
   outline:none;
   border:1px solid #719ECE;
   box-shadow:0 0 10px #719ECE;
}

/* 버튼 스타일 */
section.contact .contact-me .right button{
   width:100%;
   padding:1rem;
   background-color:#f78b00;
   border:none;
   color:white;
}

2-3) 반응형 적용(Media Query) + rem 기준 스케일링

역할: 화면 너비에 따라 레이아웃/크기를 자동 조정해서 “작아져도 보기 편한” UI 유지

핵심 포인트:

  • 기준 해상도(예: 1140px, 992px, 768px, 576px, 400px 등)를 잡고 max-width 조건으로 분기
  • 전체 크기 스케일은 html{ font-size: … }로 조절하고, 여백/글자 크기는 rem 중심으로 설계하면 한 번 에 비율 조정 가능

짧은 예시(코드):

/* 기준점 설정 */
@media screen and (max-width:1140px){ }
@media screen and (max-width:992px){ }
@media screen and (max-width:768px){ }
@media screen and (max-width:576px){ }
@media screen and (max-width:400px){ }

/* rem 스케일 조정(예시) */
@media screen and (max-width:992px){
   html{ font-size:14px; }
}
@media screen and (max-width:768px){
   html{ font-size:13px; }
}

2-4) 자바스크립트 적용(타이핑 효과 + 스크롤 헤더 + 부드러운 이동)

역할: “정적인 페이지”를 사용자가 체감하는 동적 페이지로 만들기

핵심 포인트: 최종 프로젝트에서 동적으로 처리한 포인트가 3개로 정리됨

(1) 메인 타이핑 효과

핵심 포인트: 문장을 배열로 두고(txtArr), 현재 문장을 split(“”)로 쪼갠 뒤 shift()로 한 글자씩 추가 / pop()으로 한 글자씩 삭제

짧은 예시(코드):

const spanEl = document.querySelector("main h2 span");
const txtArr = ['Web Publisher','Front-End Developer','Web UI Designer','UX Designer','Back-End Developer'];
let index = 0;
let currentTxt = txtArr[index].split("");

function writeTxt(){
   spanEl.textContent += currentTxt.shift();
   if(currentTxt.length !== 0){
      setTimeout(writeTxt, Math.floor(Math.random() * 100));
   }else{
      currentTxt = spanEl.textContent.split("");
      setTimeout(deleteTxt, 3000);
   }
}

function deleteTxt(){
   currentTxt.pop();
   spanEl.textContent = currentTxt.join("");
   if(currentTxt.length !== 0){
      setTimeout(deleteTxt, Math.floor(Math.random() * 100));
   }else{
      index = (index + 1) % txtArr.length;
      currentTxt = txtArr[index].split("");
      writeTxt();
   }
}
writeTxt();
(2) 스크롤 시 헤더 스타일 변경

핵심 포인트: 스크롤 위치가 0보다 크면 header에 active 클래스를 추가(배경/애니메이션 등 적용)

짧은 예시(코드):

const headerEl = document.querySelector("header");
window.addEventListener("scroll", function(){
   const browserScrollY = window.pageYOffset;
   if(browserScrollY > 0) headerEl.classList.add("active");
   else headerEl.classList.remove("active");
});
(3) 메뉴 클릭 시 부드러운 스크롤 이동

핵심 포인트: 버튼에 data-target을 달아 “어디로 이동할지”를 HTML에서 선언하고, JS에서 공통 처리

짧은 예시(코드):

*html
<button data-animation-scroll="true" data-target="#portfolio">Portfolio</button>

*js
const scrollMoveEl = document.querySelectorAll("[data-animation-scroll='true']");
for(let i=0;i<scrollMoveEl.length;i++){
   scrollMoveEl[i].addEventListener("click", function(){
      const target = this.dataset.target;
      const targetEl = document.querySelector(target);
      const browserScrollY = window.pageYOffset;
      const targetScrollY = targetEl.getBoundingClientRect().top + browserScrollY;
      window.scrollTo({ top: targetScrollY, behavior: "smooth" });
   });
}

2-5) 유효성 검증(HTML/CSS Validator)

역할: 작성한 HTML/CSS 코드가 표준 문법에 맞는지 확인(오타/구조 문제 조기 발견)

핵심 포인트: 책에서 안내한 입력 방식(코드 직접 붙여넣고 검사)으로 “에러/경고 없음”을 확인

참고 링크 텍스트(책에서 안내한 링크)

  • HTML Validator : https://validator.w3.org/#validate_by_input
  • CSS Validator : https://jigsaw.w3.org/css-validator/#validate_by_input

이슈 로그

  • 작성한 HTML/CSS 코드가 표준 문법에 맞는지 확인 절차가 직접 하나하나 확인하려면 매우 힘든데 이제는 위 사이트를 이용할 예정입니다.

학습단 도서

  • 「코딩 자율학습 HTML + CSS + 자바스크립트」
「코딩 자율학습 HTML + CSS + 자바스크립트」(김기수 지음, 길벗)
「코딩 자율학습 HTML + CSS + 자바스크립트」(김기수 지음, 길벗)

“코딩자율학습단 19기 | 20일차 학습일지(END) – 최종프로젝트(2)_포트폴리오·컨택트 섹션 완성 + 반응형(Media Query) + 자바스크립트 효과 적용”에 대한 2개의 생각

댓글 남기기