본문 바로가기
웹 디자인

[웹 디자인] 29일차: 최종 프로젝트 계획 및 디자인

by cogito21_js 2024. 8. 29.
반응형

최종 프로젝트 개요

최종 프로젝트는 그동안 배운 HTML, CSS, 자바스크립트, 반응형 디자인, 접근성 등을 종합하여 완성된 웹사이트를 제작하는 것입니다. 이 프로젝트를 통해 실전 웹 디자인 기술을 적용하고, 포트폴리오에 추가할 수 있는 결과물을 만들게 됩니다.

프로젝트 단계

1. 프로젝트 목표 설정

웹사이트의 주요 목적과 목표를 정의합니다. 예를 들어, 포트폴리오 웹사이트, 블로그, 비즈니스 웹사이트 등을 선택할 수 있습니다.

2. 콘텐츠 계획

웹사이트에 포함될 주요 콘텐츠를 계획합니다. 각 페이지나 섹션에 어떤 내용이 포함될지 구체적으로 작성합니다.

3. 사이트맵 작성

사이트맵을 작성하여 웹사이트의 구조를 시각적으로 표현합니다. 주요 페이지와 그 하위 페이지를 계층 구조로 나타냅니다.

예제:

- 홈
  - 소개
  - 프로젝트
    - 프로젝트 1
    - 프로젝트 2
  - 블로그
  - 연락처

4. 와이어프레임 작성

와이어프레임을 작성하여 각 페이지의 레이아웃을 시각적으로 표현합니다. 주요 요소의 위치와 크기를 대략적으로 설정합니다.

5. 디자인 스타일 가이드

디자인 스타일 가이드를 작성하여 웹사이트의 일관된 스타일을 정의합니다. 글꼴, 색상, 버튼 스타일, 입력 필드 스타일 등을 포함합니다.

예제:

  • 글꼴: Arial, sans-serif
  • 기본 색상: #333
  • 강조 색상: #555
  • 배경 색상: #f4f4f4
  • 버튼 스타일: 둥근 모서리, 배경색 #333, 텍스트 색상 white

6. HTML 구조 작성

와이어프레임을 기반으로 HTML 구조를 작성합니다.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>최종 프로젝트</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <header>
    <h1>My Portfolio</h1>
    <nav>
      <ul>
        <li><a href="#home">Home</a></li>
        <li><a href="#about">About</a></li>
        <li><a href="#projects">Projects</a></li>
        <li><a href="#contact">Contact</a></li>
      </ul>
    </nav>
  </header>

  <main>
    <section id="home">
      <h2>Welcome to My Portfolio</h2>
      <p>This is a short introduction about myself.</p>
    </section>

    <section id="about">
      <h2>About Me</h2>
      <p>Details about my background, skills, and experience.</p>
    </section>

    <section id="projects">
      <h2>My Projects</h2>
      <div class="project-grid">
        <div class="project-item">
          <img src="project1.jpg" alt="Project 1">
          <h3>Project 1</h3>
          <p>Description of Project 1.</p>
        </div>
        <div class="project-item">
          <img src="project2.jpg" alt="Project 2">
          <h3>Project 2</h3>
          <p>Description of Project 2.</p>
        </div>
      </div>
    </section>

    <section id="contact">
      <h2>Contact Me</h2>
      <form id="contact-form">
        <label for="name">Name</label>
        <input type="text" id="name" name="name" required>
        <label for="email">Email</label>
        <input type="email" id="email" name="email" required>
        <label for="message">Message</label>
        <textarea id="message" name="message" required></textarea>
        <button type="submit">Submit</button>
      </form>
    </section>
  </main>

  <footer>
    <p>&copy; 2023 My Portfolio</p>
  </footer>
</body>
</html>

7. CSS 스타일링

디자인 스타일 가이드를 기반으로 CSS를 작성합니다.

body {
  font-family: Arial, sans-serif;
  margin: 0;
  padding: 0;
  background-color: #f4f4f4;
}

header {
  background-color: #333;
  color: white;
  padding: 20px;
  text-align: center;
}

nav ul {
  list-style: none;
  padding: 0;
}

nav ul li {
  display: inline;
  margin: 0 15px;
}

nav ul li a {
  color: white;
  text-decoration: none;
}

nav ul li a:focus,
nav ul li a:hover {
  text-decoration: underline;
}

main {
  padding: 20px;
}

section {
  margin-bottom: 40px;
}

.project-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 10px;
}

.project-item {
  background-color: white;
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
  padding: 10px;
}

.project-item img {
  width: 100%;
  height: auto;
}

label {
  display: block;
  margin-bottom: 5px;
}

input[type="text"],
input[type="email"],
textarea {
  width: 100%;
  padding: 10px;
  margin-bottom: 10px;
  border: 1px solid #ccc;
  border-radius: 4px;
}

button {
  padding: 10px 15px;
  background-color: #333;
  color: white;
  border: none;
  border-radius: 4px;
  cursor: pointer;
}

button:focus,
button:hover {
  background-color: #555;
}

footer {
  background-color: #333;
  color: white;
  text-align: center;
  padding: 10px;
}

8. 자바스크립트 기능 추가

필요한 자바스크립트 기능을 추가합니다. 예를 들어, 폼 검증, 스크롤 애니메이션 등을 추가할 수 있습니다.

document.getElementById('contact-form').addEventListener('submit', function(event) {
  event.preventDefault(); // 폼 제출 방지

  const name = document.getElementById('name').value;
  const email = document.getElementById('email').value;
  const message = document.getElementById('message').value;

  if (!name || !email || !message) {
    alert('모든 필드를 채워주세요.');
    return;
  }

  if (!validateEmail(email)) {
    alert('유효한 이메일 주소를 입력해주세요.');
    return;
  }

  // 폼 제출 로직
  alert('폼이 성공적으로 제출되었습니다.');
});

function validateEmail(email) {
  const re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
  return re.test(String(email).toLowerCase());
}

9. 반응형 디자인 적용

미디어 쿼리를 사용하여 다양한 화면 크기에 대응하는 반응형 디자인을 적용합니다.

@media (max-width: 768px) {
  nav ul li {
    display: block;
    margin: 10px 0;
  }

  .project-grid {
    grid-template-columns: 1fr;
  }
}

10. 접근성 고려

접근성을 고려하여 모든 요소에 적절한 alt 속성, aria 속성을 추가하고, 키보드 내비게이션을 지원합니다.

결론

최종 프로젝트는 그동안 배운 웹 디자인 기술을 종합하여 실제 웹사이트를 제작하는 단계입니다. 프로젝트 목표 설정, 콘텐츠 계획, 사이트맵 작성, 와이어프레임 작성, 디자인 스타일 가이드, HTML 구조 작성, CSS 스타일링, 자바스크립트 기능 추가, 반응형 디자인 적용, 접근성 고려 등을 통해 완성도 높은 웹사이트를 제작할 수 있습니다.

다음 글에서는 최종 프로젝트 발표 및 리뷰에 대해 알아보겠습니다.

다음 글에서 만나요!

 

반응형