반응형
반응형 디자인을 확장하여 포트폴리오 웹사이트를 모든 기기에서 최적화된 방식으로 표시하도록 개선해 보겠습니다.
반응형 디자인을 구현하기 위해 추가할 내용은 다음과 같습니다.
- 헤더 및 네비게이션 메뉴의 반응형 디자인
- 섹션과 폼 요소의 반응형 디자인
- 이미지 및 기타 미디어 요소의 반응형 디자인
1. 헤더 및 네비게이션 메뉴의 반응형 디자인
1.1. HTML 수정
헤더와 네비게이션 메뉴를 위한 구조를 조금 더 개선하여 모바일에서의 사용성을 높입니다.
index.html (수정된 부분)
<header>
<h1>My Portfolio</h1>
<nav id="navbar">
<button id="menu-toggle">☰</button> <!-- 모바일 메뉴 버튼 -->
<ul id="nav-links">
<li><a href="#about">About Me</a></li>
<li><a href="#projects">Projects</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</nav>
<select id="language-selector">
<option value="en">English</option>
<option value="kr">한국어</option>
</select> <!-- 언어 선택기 추가 -->
</header>
1.2. CSS 수정
반응형 디자인을 위해 CSS를 수정합니다. 특히 네비게이션 메뉴가 모바일 장치에서 어떻게 나타나는지 정의합니다.
styles.css (수정된 부분)
/* 기본 스타일 */
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f0f0f0;
}
header {
background-color: #333;
color: #fff;
padding: 1em 0;
text-align: center;
position: sticky;
top: 0;
z-index: 1000;
}
nav {
position: relative;
}
#menu-toggle {
display: none;
background: none;
border: none;
color: white;
font-size: 1.5em;
cursor: pointer;
}
nav ul {
list-style: none;
padding: 0;
margin: 0;
}
nav ul li {
display: inline;
margin: 0 1em;
}
nav ul li a {
color: #fff;
text-decoration: none;
}
/* 미디어 쿼리: 768px 이하에서 적용 */
@media (max-width: 768px) {
/* 메뉴 토글 버튼을 보이도록 설정 */
#menu-toggle {
display: block;
}
/* 네비게이션 링크를 숨김 */
#nav-links {
display: none;
flex-direction: column;
background-color: #333;
position: absolute;
top: 60px;
left: 0;
width: 100%;
text-align: left;
padding: 0;
}
/* 네비게이션 링크를 블록으로 설정 */
nav ul li {
display: block;
margin: 1em 0;
}
/* 메뉴가 보일 때 스타일링 */
#nav-links.show {
display: flex;
}
}
1.3. JavaScript 추가
메뉴 버튼 클릭 시 네비게이션 메뉴를 표시하거나 숨깁니다.
scripts.js (수정된 부분)
document.addEventListener("DOMContentLoaded", function() {
// 기존 프로젝트 리스트 코드 생략
const menuToggle = document.getElementById("menu-toggle");
const navLinks = document.getElementById("nav-links");
// 메뉴 버튼 클릭 이벤트를 처리합니다.
menuToggle.addEventListener("click", function() {
navLinks.classList.toggle("show");
});
const contactForm = document.getElementById("contact-form");
contactForm.addEventListener("submit", function(event) {
event.preventDefault(); // 폼 제출을 막습니다.
alert("Form submitted!"); // 폼 제출 시 알림을 표시합니다.
});
});
2. 섹션과 폼 요소의 반응형 디자인
2.1. CSS 수정
각 섹션과 폼 요소가 다양한 화면 크기에서 잘 보이도록 CSS를 수정합니다.
styles.css (추가된 부분)
section {
padding: 2em;
margin: 2em 0;
background-color: #fff;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
/* 섹션의 반응형 디자인 */
@media (max-width: 768px) {
section {
padding: 1em;
margin: 1em 0;
}
}
#contact-form {
display: flex;
flex-direction: column;
gap: 1em;
}
#contact-form input,
#contact-form textarea {
padding: 1em;
border: 1px solid #ddd;
border-radius: 4px;
font-size: 1em;
}
#contact-form button {
padding: 1em;
background-color: #007BFF;
color: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 1em;
}
/* 폼 요소의 반응형 디자인 */
@media (max-width: 768px) {
#contact-form {
gap: 0.5em;
}
#contact-form input,
#contact-form textarea {
padding: 0.5em;
font-size: 0.9em;
}
#contact-form button {
padding: 0.75em;
font-size: 0.9em;
}
}
3. 이미지 및 기타 미디어 요소의 반응형 디자인
3.1. CSS 수정
이미지와 비디오와 같은 미디어 요소가 화면 크기에 맞게 조정되도록 CSS를 수정합니다.
styles.css (추가된 부분)
/* 이미지의 반응형 디자인 */
img {
max-width: 100%;
height: auto;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
/* 비디오의 반응형 디자인 */
video {
max-width: 100%;
height: auto;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
3.2. HTML 예시 수정
이미지를 포함하는 섹션에 반응형 이미지 스타일을 적용합니다.
project1.html (수정된 부분)
<section>
<h2>Project 1 Overview</h2>
<p>Details about Project 1...</p> <!-- 프로젝트 1에 대한 상세 설명 -->
<img src="path_to_image" alt="Project 1 Screenshot"> <!-- 반응형 이미지 -->
</section>
커밋과 푸시
변경된 내용을 커밋하고 GitHub에 푸시합니다.
git add index.html styles.css scripts.js
git commit -m "Add responsive design improvements for header, sections, and media"
git push origin main
반응형
'Javascript 프로젝트 > 01_포트폴리오 페이지(확장)' 카테고리의 다른 글
[포트폴리오 페이지] 7단계: 프로젝트 상세 페이지 추가 ~ SEO 최적화 (0) | 2024.06.16 |
---|---|
[포트폴리오 페이지] 다음 과정 (0) | 2024.06.16 |
[포트폴리오 페이지] 5단계: 스타일링 및 레이아웃 개선 (0) | 2024.06.16 |
[포트폴리오 페이지] 2단계: About Me 섹션 추가 (0) | 2024.06.16 |
[포트폴리오 페이지] 1단계: 프로젝트 초기 설정 (0) | 2024.06.16 |