안녕하세요, 살찐 고양이입니다. 😺 오늘은 AI를 활용해서 웹페이지를 만드는 방법을 소개해드리려고 합니다. 코딩에 자신이 없어도 걱정하지 마세요. AI의 도움을 받아 멋진 웹사이트를 쉽게 만들 수 있으니까요. 함께 알아볼까요?
웹사이트를 만들기 전에 웹의 3대 요소에 대해 간단히 알아보겠습니다. 🧱
HTML(Hypertext Markup Language)은 웹페이지의 구조를 만드는 언어입니다. 마치 집의 뼈대와 같은 역할을 한다고 생각하시면 됩니다. 웹페이지의 제목, 문단, 이미지, 링크 등을 정의하죠.
<h1>제목이에요!</h1>
<p>이건 문단이랍니다.</p>
<img src="고양이사진.jpg" alt="귀여운 고양이">
이렇게 <태그> 형태로 내용을 감싸서, 이게 제목이다, 문단이다, 이미지다... 라고 알려주는 거예요. 😊
CSS(Cascading Style Sheets)는 HTML로 만든 구조를 예쁘게 꾸며주는 언어입니다. 색상, 크기, 배치, 애니메이션 등을 담당하죠. 집의 인테리어를 결정한다고 생각하시면 됩니다.
h1 {
color: #FF5733; /* 제목 색상 */
font-size: 32px; /* 글자 크기 */
}
.container {
width: 80%; /* 너비 */
margin: 0 auto; /* 가운데 정렬 */
}
CSS 덕분에 웹사이트가 훨씬 보기 좋아지죠. 👀✨
자바스크립트는 웹페이지에 상호작용과 동적인 기능을 추가하는 프로그래밍 언어입니다. 버튼을 클릭하면 반응하거나, 스크롤에 따라 화면이 바뀌는 등의 기능을 만들 수 있어요. 집에 전기를 넣어 모든 것이 작동하게 하는 것과 같습니다.
// 버튼 클릭 시 알림창 표시하기
document.getElementById('myButton').addEventListener('click', function() {
alert('안녕하세요! 반가워요! 😊');
});
// 스크롤 시 배경색 변경하기
window.addEventListener('scroll', function() {
if (window.scrollY > 100) {
document.body.style.backgroundColor = '#f0f0f0';
} else {
document.body.style.backgroundColor = '#ffffff';
}
});
자바스크립트가 있어야 웹페이지가 "살아있는" 느낌이 든답니다. 🎮
AI를 활용한 웹 개발은 정말 많은 장점이 있습니다. 🌟
저도 코딩을 처음 시작했을 때는 헷갈리는 게 너무 많았는데, AI의 도움을 받으니까 훨씬 수월해졌어요. 😸
웹 개발을 시작하기 전에 필요한 것들을 준비해봅시다. 🧰
다 준비되셨나요? 그럼 시작해볼까요? 🚀
웹페이지의 기본 뼈대는 HTML로 만듭니다. AI에게 "간단한 포트폴리오 웹사이트 HTML 구조를 만들어줘"라고 부탁해보세요. 아래와 같은 코드를 얻을 수 있을 거예요.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>나의 포트폴리오</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<nav>
<div class="logo">Portfolio</div>
<ul class="menu">
<li><a href="#home">홈</a></li>
<li><a href="#about">소개</a></li>
<li><a href="#projects">프로젝트</a></li>
<li><a href="#contact">연락처</a></li>
</ul>
</nav>
</header>
<section id="home" class="hero">
<div class="hero-content">
<h1>안녕하세요, 저는 <span class="highlight">살찐 고양이</span>입니다</h1>
<p>웹 개발자 & 디자이너</p>
<button class="cta-button">자세히 보기</button>
</div>
</section>
<section id="about" class="about">
<h2>나에 대하여</h2>
<div class="about-content">
<div class="about-text">
<p>웹 개발과 디자인에 열정을 가진 개발자입니다. 사용자 경험을 중심으로 한 직관적인 웹사이트를 만드는 것을 좋아합니다.</p>
<p>HTML, CSS, JavaScript를 주로 사용하며, 최근에는 React와 Node.js에 관심을 가지고 있습니다.</p>
</div>
<div class="skills">
<h3>기술 스택</h3>
<ul>
<li>HTML5 & CSS3</li>
<li>JavaScript</li>
<li>Responsive Design</li>
<li>Git</li>
</ul>
</div>
</div>
</section>
<section id="projects" class="projects">
<h2>프로젝트</h2>
<div class="project-grid">
<div class="project-card">
<img src="project1.jpg" alt="프로젝트 1">
<h3>프로젝트 제목 1</h3>
<p>프로젝트에 대한 간단한 설명입니다. 사용한 기술과 해결한 문제에 대해 설명합니다.</p>
<a href="#" class="project-link">자세히 보기</a>
</div>
<div class="project-card">
<img src="project2.jpg" alt="프로젝트 2">
<h3>프로젝트 제목 2</h3>
<p>프로젝트에 대한 간단한 설명입니다. 사용한 기술과 해결한 문제에 대해 설명합니다.</p>
<a href="#" class="project-link">자세히 보기</a>
</div>
</div>
</section>
<section id="contact" class="contact">
<h2>연락하기</h2>
<form id="contact-form">
<input type="text" placeholder="이름" required>
<input type="email" placeholder="이메일" required>
<textarea placeholder="메시지" required></textarea>
<button type="submit">보내기</button>
</form>
</section>
<footer>
<p>© 2025 살찐 고양이의 포트폴리오. All rights reserved.</p>
</footer>
<script src="script.js"></script>
</body>
</html>
이것만으로도 웹페이지의 뼈대가 완성됐습니다. 🎉 각 섹션별로 내용을 추가하거나 수정할 수 있어요.
이제 CSS로 웹페이지를 예쁘게 꾸며볼 차례입니다. style.css 파일을 만들고 다음 코드를 넣어보세요:
/* 전체 스타일 리셋 */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Noto Sans KR', sans-serif;
line-height: 1.6;
color: #333;
}
/* 헤더 및 네비게이션 */
header {
background-color: #fff;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
position: fixed;
width: 100%;
top: 0;
z-index: 1000;
}
nav {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem 5%;
max-width: 1200px;
margin: 0 auto;
}
.logo {
font-size: 1.5rem;
font-weight: bold;
color: #FF9500; /* 고양이 색깔로 변경했어요 🐱 */
}
.menu {
display: flex;
list-style: none;
}
.menu li {
margin-left: 2rem;
}
.menu a {
text-decoration: none;
color: #333;
font-weight: 500;
transition: color 0.3s;
}
.menu a:hover {
color: #FF9500; /* 마우스 올렸을 때도 고양이 색깔로 */
}
/* 히어로 섹션 */
.hero {
height: 100vh;
background: linear-gradient(135deg, #f5f7fa 0%, #FFE0B2 100%); /* 따뜻한 느낌의 배경 */
display: flex;
align-items: center;
justify-content: center;
text-align: center;
padding: 0 1rem;
margin-top: 60px;
}
.hero-content h1 {
font-size: 3rem;
margin-bottom: 1rem;
}
.highlight {
color: #FF9500;
}
.hero-content p {
font-size: 1.5rem;
margin-bottom: 2rem;
color: #555;
}
.cta-button {
background-color: #FF9500;
color: white;
border: none;
padding: 12px 30px;
font-size: 1rem;
border-radius: 30px;
cursor: pointer;
transition: background-color 0.3s;
}
.cta-button:hover {
background-color: #E68A00;
}
/* 섹션 공통 스타일 */
section {
padding: 5rem 5%;
max-width: 1200px;
margin: 0 auto;
}
section h2 {
text-align: center;
margin-bottom: 3rem;
font-size: 2.5rem;
color: #333;
}
/* 소개 섹션 */
.about-content {
display: flex;
flex-wrap: wrap;
gap: 2rem;
}
.about-text, .skills {
flex: 1 1 400px;
}
.skills ul {
list-style-position: inside;
margin-top: 1rem;
}
/* 프로젝트 섹션 */
.project-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 2rem;
}
.project-card {
background: white;
border-radius: 10px;
overflow: hidden;
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1);
transition: transform 0.3s;
}
.project-card:hover {
transform: translateY(-5px);
}
.project-card img {
width: 100%;
height: 200px;
object-fit: cover;
}
.project-card h3, .project-card p {
padding: 0 1.5rem;
}
.project-card h3 {
margin: 1.5rem 0 0.5rem;
}
.project-link {
display: inline-block;
margin: 1.5rem;
color: #FF9500;
text-decoration: none;
font-weight: 500;
}
/* 연락처 섹션 */
.contact {
background: #FFF8E1; /* 따뜻한 배경색 */
}
#contact-form {
display: flex;
flex-direction: column;
max-width: 600px;
margin: 0 auto;
}
#contact-form input, #contact-form textarea {
margin-bottom: 1rem;
padding: 12px;
border: 1px solid #ddd;
border-radius: 5px;
font-family: inherit;
}
#contact-form textarea {
min-height: 150px;
resize: vertical;
}
#contact-form button {
background-color: #FF9500;
color: white;
border: none;
padding: 12px;
font-size: 1rem;
border-radius: 5px;
cursor: pointer;
transition: background-color 0.3s;
}
#contact-form button:hover {
background-color: #E68A00;
}
/* 푸터 */
footer {
text-align: center;
padding: 2rem 0;
background: #333;
color: white;
}
/* 반응형 디자인 */
@media (max-width: 768px) {
.hero-content h1 {
font-size: 2.5rem;
}
.hero-content p {
font-size: 1.2rem;
}
.menu {
display: none; /* 모바일 메뉴는 자바스크립트로 구현할 예정입니다 */
}
}
이제 웹페이지가 훨씬 더 보기 좋아졌습니다. 🌈 CSS를 사용하면 색상, 크기, 레이아웃 등을 원하는 대로 조정할 수 있어요.
마지막으로 자바스크립트를 사용해서 웹페이지에 움직임을 추가해보겠습니다. script.js 파일을 만들고 다음 코드를 넣어주세요:
// 페이지가 로드되면 실행
document.addEventListener('DOMContentLoaded', function() {
// 인사말 추가
console.log('안녕하세요! 살찐 고양이의 웹사이트에 오신 것을 환영합니다! 😺');
// 스크롤 애니메이션 효과
const sections = document.querySelectorAll('section');
window.addEventListener('scroll', function() {
const scrollPosition = window.scrollY;
sections.forEach(section => {
const sectionTop = section.offsetTop - 100;
const sectionHeight = section.offsetHeight;
if (scrollPosition >= sectionTop && scrollPosition < sectionTop + sectionHeight) {
section.classList.add('active');
}
});
});
// 모바일 메뉴 토글 기능
const createMobileMenu = () => {
const nav = document.querySelector('nav');
const menuBtn = document.createElement('div');
menuBtn.className = 'menu-btn';
menuBtn.innerHTML = `<span></span><span></span><span></span>`;
nav.appendChild(menuBtn);
menuBtn.addEventListener('click', function() {
document.querySelector('.menu').classList.toggle('active');
this.classList.toggle('active');
});
};
// 화면 너비가 768px 이하일 때 모바일 메뉴 생성
if (window.innerWidth <= 768) {
createMobileMenu();
}
// 창 크기 변경 시 모바일 메뉴 처리
window.addEventListener('resize', function() {
if (window.innerWidth <= 768 && !document.querySelector('.menu-btn')) {
createMobileMenu();
} else if (window.innerWidth > 768 && document.querySelector('.menu-btn')) {
document.querySelector('.menu-btn').remove();
document.querySelector('.menu').classList.remove('active');
}
});
// 연락처 폼 제출 처리
const contactForm = document.getElementById('contact-form');
contactForm.addEventListener('submit', function(e) {
e.preventDefault();
const formData = {
name: this.querySelector('input[type="text"]').value,
email: this.querySelector('input[type="email"]').value,
message: this.querySelector('textarea').value
};
// 여기서 폼 데이터를 처리 (실제로는 서버로 전송)
console.log('폼 데이터:', formData);
// 성공 메시지 표시
alert('메시지가 성공적으로 전송되었습니다! 🐾');
this.reset();
});
// 스크롤 시 헤더 스타일 변경
const header = document.querySelector('header');
window.addEventListener('scroll', function() {
if (window.scrollY > 50) {
header.classList.add('scrolled');
} else {
header.classList.remove('scrolled');
}
});
// 스무스 스크롤 구현
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function(e) {
e.preventDefault();
const targetId = this.getAttribute('href');
const targetElement = document.querySelector(targetId);
window.scrollTo({
top: targetElement.offsetTop - 70,
behavior: 'smooth'
});
// 모바일 메뉴가 열려있다면 닫기
if (document.querySelector('.menu.active')) {
document.querySelector('.menu').classList.remove('active');
document.querySelector('.menu-btn').classList.remove('active');
}
});
});
// 로고를 클릭하면 인사하기
const logo = document.querySelector('.logo');
logo.style.cursor = 'pointer';
logo.addEventListener('click', function() {
alert('안녕하세요! 방문해주셔서 감사합니다 😊');
});
});
// 스크롤 시 요소 애니메이션을 위한 CSS 추가
const style = document.createElement('style');
style.textContent = `
section {
opacity: 0;
transform: translateY(20px);
transition: opacity 0.5s ease, transform 0.5s ease;
}
section.active {
opacity: 1;
transform: translateY(0);
}
header.scrolled {
background: rgba(255, 255, 255, 0.95);
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}
@media (max-width: 768px) {
.menu {
position: absolute;
top: 60px;
left: 0;
width: 100%;
background: white;
flex-direction: column;
align-items: center;
padding: 1rem 0;
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.1);
transform: translateY(-100%);
opacity: 0;
transition: transform 0.3s ease, opacity 0.3s ease;
pointer-events: none;
}
.menu.active {
transform: translateY(0);
opacity: 1;
pointer-events: all;
}
.menu li {
margin: 1rem 0;
}
.menu-btn {
display: flex;
flex-direction: column;
justify-content: space-between;
width: 30px;
height: 20px;
cursor: pointer;
}
.menu-btn span {
width: 100%;
height: 2px;
background: #333;
transition: transform 0.3s ease;
}
.menu-btn.active span:nth-child(1) {
transform: translateY(9px) rotate(45deg);
}
.menu-btn.active span:nth-child(2) {
opacity: 0;
}
.menu-btn.active span:nth-child(3) {
transform: translateY(-9px) rotate(-45deg);
}
}
`;
document.head.appendChild(style);
이제 웹페이지에 다음과 같은 기능이 추가되었습니다. 🎮
여기까지 AI를 활용한 웹페이지 만들기 과정을 알아보았습니다. 😊 코딩 경험이 많지 않아도 멋진 웹사이트를 만들 수 있다는 점이 AI의 큰 장점이죠. 기본적인 HTML, CSS, JavaScript만으로도 반응형 웹사이트를 만들 수 있고, 더 복잡한 기능은 AI에게 도움을 요청하면 됩니다.
웹 개발은 계속 배우고 발전시킬 수 있는 재미있는 분야입니다. AI의 도움을 받아 기초를 다지고, 더 나아가 React, Vue, Angular 같은 프레임워크도 배워보면 좋을 것 같아요.
여러분도 AI의 도움을 받아 나만의 웹사이트를 만들어보세요! 🚀 질문이나 의견이 있으시면 댓글로 남겨주세요. 살찐 고양이가 도와드리겠습니다. 😺❤️
다음 포스팅에서도 유용한 정보로 찾아올게요! 👋
티스토리 봄 단장 (2) | 2025.03.13 |
---|---|
인공지능과 함께한 블로그 운영: 티스토리와 네이버 비교 후기 (0) | 2025.03.12 |