[패스트캠퍼스] 김민태의 프론트엔드 데브캠프 2기 두 번째 섹션: HTML & CSS
아흔 번째 포스팅
안녕하세요! 아흔 번째 포스팅으로 찾아뵙게 되어 반갑습니다!♥ 벌써 아흔💫
오늘의 포스팅 내용은 [패스트캠퍼스] 김민태의 프론트엔드 데브캠프 2기 두 번째 섹션: HTML & CSS에 관한 내용입니다.
자세한 내용을 알아보러 갑시다❗️
[Boongranii] Here We Go 🔥
1️⃣ HTML,CSS,JS의 다양한 관점
프론트엔드 개발을 시작하려는 분들에게 로드맵 사이트는 가이드라인을 제공한다. 이 사이트에서는 프론트엔드 개발에 필요한 다양한 기술과 개념들을 보여준다.
프론트엔드의 핵심 기술인 HTML, CSS, JavaScript는 여러 관점에서 바라볼 수 있다. 이러한 다양한 시각은 기술을 어떻게 활용할지, 어떤 맥락에서 이해할지에 영향을 미친다.
🍩 HTML/CSS/JS를 바라보는 4가지 관점
HTML/CSS/JS는 4가지 관점으로 확인할 수 있다.
- 운영 환경: 웹 브라우저, 모바일 앱, 데스크롭 애플리케이션 등 다양한 플랫폼에서의 동작
- GUI - 그래픽: 사용자와 상호작용하는 시각적 요소의 구현
- 문서: 구조화된 정보의 표현과 관리
- 앱 개발: 동적이고 인터랙티브한 웹 애플리케이션 구축
🍩 그래픽의 기본 요소: 점과 색
그래픽은 본질적으로 점과 색으로 구성된다. 이러한 기본 요소들은 아래와 같이 표현될 수 있다.
- 2D (2차원): x축과 y축으로 이루어진 평면 좌표계
- 3D (3차원): x, y축에 깊이를 나타내는 z축이 추가된 입체 좌표계
- 벡터: 크기를 조절해도 이미지 품질이 유지되는 수학적 描述 방식
🍩 HTML의 강력한 기능
HTML은 단순한 마크업 언어를 넘어서 위에서 언급한 모든 그래픽 표현 방식을 지원한다. HTML이 단순한 문서 구조화 도구를 넘어서 멀티미디어와 인터랙티브한 컨텐츠를 제공할 수 있는 강력한 플랫폼을 의미한다.
- 2D 그래픽:
<canvas>
요소를 통한 2D 드로잉 - 3D 그래픽: WebGL을 이용한 3D 렌더링
- 벡터 그래픽: SVG(Scalable Vector Graphics) 지원
이러한 HTML의 다재다능함은 현대 웹 개발에서 무한한 가능성을 열어주며, 프론트엔드 개발자들이 다양한 시각적 경험을 만들어낼 수 있게 해준다.
2️⃣ HTML의 요소
HTML 요소는 다양한 기준에 따라 분류할 수 있다.
🍩 표시 형식에 대한 기준
-
블록 레벨 요소
- 블록 레벨 요소는 새 줄에서 시작하며 inline 요소를 제외한 나머지를 말한다.
<div>
,<p>
,<h1>
-<h6>
,<ul>
,<ol>
,<li>
-
인라인 레벨 요소
- 텍스트 흐름 내에서 사용되는 요소이며 내용물의 크기만큼 공간을 차지한다.
<span>
,<a>
,<img>
,<em>
,<code>
,<br>
,<strong>
🍩 의미 기준(시맨틱)
- 문서의 구조와 의미를 명확히 전달하기 위해 사용하며 검색엔진 최적화(SEO)에 도움이 된다.
<main>
,<article>
,<section>
,<header>
,<footer>
,<nav>
,<aside>
🍩 제목, 텍스트 꾸밈 태그
- 문서의 제목 구조를 나타내거나 텍스트를 특별히 표시한다.
<h1>
~<h6>
,<p>
,<blockquote>
,<pre>
,<code>
🍩 폼 관련 태그
- 사용자로부터 데이터를 입력받거나 서버로 전송하는 데에 사용한다.
<form>
,<input>
,<select>
,<option>
,<textarea>
,<button>
,<submit>
🍩 미디어 관련 태그
- 멀티미디어 콘텐츠를 웹 페이지에 삽입하는 데에 사용한다.
<img>
,<video>
,<picture>
,<source>
3️⃣ 메타 태그
HTML 문서의 <head>
섹션에는 다양한 메타 태그를 사용하게 된다. 그 중 문자 인코딩을 지정하는 메타 태그는 특히 중요하다.
🍰 여러 가지 메타 태그
🍩 UTF-8 인코딩
가장 널리 사용되는 문자 인코딩은 UTF-8이다. UTF-8은 유니코드 문자를 지원하고, 전 세계의 거의 모든 문자를 표현할 수 있다.
1
<meta charset="UTF-8" />
이 태그는 <head>
태그의 가장 앞부분에 위치해야 한다.
🍩 뷰포트 설정
1
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
이 태그는 반응형 웹 사이트를 제작할 때 필수적인 태그이다.
🍩 페이지 설명
1
<meta name="description" content="이 페이지에 대한 간단한 설명" />
검색 엔진 결과에 표시될 수 있는 페이지 설명을 쓰면 된다.
🍩 작성자 정보
1
<meta name="author" content="작성자 이름" />
작성자 정보도 메타 태그를 사용해서 작성할 수 있다.
🍩 Cache-Control
1
2
3
4
<meta
http-equiv="Cache-Control"
content="no-cache, no-store, must-revalidate"
/>
이 태그는 브라우저의 캐싱 동작을 제어한다. 위는 캐싱을 완전 비활성화하는 설정이다.
Cache-Control은 웹페이지의 캐싱 동작을 세밀하게 제어할 수 있게 해주고 성능과 보안 측면에서 중요 역할을 할 수 있다.
- no-cache: 캐시를 사용하기 전에 서버에 재검증을 요청함
- no-store: 어떤 종류의 캐시도 저장하지 않음
- must-revalidate: 캐시를 사용하기 전에 반드시 원본 서버에 재검증해야 함
- max-age=
: 리소스가 신선하다고 간주되는 최대 시간을 초 단위로 지정함
위는 주요 옵션이다.
4️⃣ CSS
CSS는 Cascading Style Sheets의 약어이다. 공룡을 그렸다면 공룡에 색을 입히는 과정이라고 보면 된다.
자 그럼 CSS에 대해 짧막하게 알아보도록 하자.
🍬 CSS 선택자 (Selectors)
CSS 선택자는 스타일을 적용할 HTML 요소를 지정하는 패턴이다. 다양한 유형의 선택자가 있으며, 각각 특정 상황에 맞게 사용된다.
🍩 Type Selector: HTML 태그 이름을 직접 사용
1
2
3
p {
color: blue;
}
🍩 Class Selector: 마침표로 시작하며, 같은 클래스를 가진 모든 요소에 적용
1
2
3
.highlight {
background-color: yellow;
}
🍩 ID Selector: 해시(#)로 시작하며, 고유 ID를 가진 단일 요소에 적용
1
2
3
#header {
font-size: 24px;
}
🍩 속성 Selector: 대괄호([])를 사용하여 특정 속성이나 속성값을 가진 요소 선택
1
2
3
input[type="text"] {
border: 1px solid gray;
}
🍩 Grouping Selector: 쉼표로 여러 선택자를 그룹화
1
2
3
h1, h2, h3 {
font-family: font-family: Arial, sans-serif;
}
🍩 Pseudo Selector: 요소의 특정 상태나 위치를 선택
1
2
3
4
5
6
7
a:hover {
text-decoration: underline;
}
li:first-child {
font-weight: bold;
}
🍩 Combination Selector: 요소 간의 관계를 기반으로 선택
1
2
3
4
5
6
7
div > p {
margin-left: 20px;
}
h1 + p {
font-style: italic;
}
🍬 CSS 속성 (Properties)
CSS 속성은 선택된 요소에 적용할 스타일을 정의한다.
🍩 Typography: 텍스트 관련 스타일
1
2
3
4
5
body {
font-family: Arial, sans-serif;
font-size: 16px;
line-height: 1.5;
}
🍩 Background: 배경 관련 속성
1
2
3
4
5
.hero {
background-color: #f0f0f0;
background-image: url("background.jpg");
background-size: cover;
}
🍩 Border & Shadow: 테두리와 그림자 효과
1
2
3
4
5
.card {
border: 1px solid #ddd;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
🍩 Animation & Transition: 동적 효과
1
2
3
4
5
6
.button {
transition: all 0.3s ease;
}
.button:hover {
transform: scale(1.1);
}
🍩 Color & Effect: 색상과 시각적 효과
1
2
3
4
5
.alert {
color: #721c24;
background-color: #f8d7da;
opacity: 0.9;
}
🍩 Layout & Position: 요소의 배치와 위치 지정
아래는 position
에 대한 예시이다.
1
2
3
4
5
.tooltip {
position: absolute;
top: 100%;
left: 0;
}
아래는 flexbox
에 대한 예시이다.
1
2
3
4
5
.container {
display: flex;
justify-content: space-between;
align-items: center;
}
아래는 grid
에 대한 예시이다.
1
2
3
4
5
.gallery {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
}
🍩 Box Model: 요소의 크기와 여백 관리
1
2
3
4
5
6
7
.box {
width: 300px;
height: 200px;
padding: 20px;
margin: 10px;
border: 1px solid #000;
}
🍬 CSS 값 (Values)
CSS 값은 속성에 할당되는 구체적인 설정이다.
🍩 절대적 단위
1
2
3
4
5
6
7
.absolute-units {
width: 100px;
height: 50pt;
margin: 1cm;
padding: 10mm;
border: 0.1in solid black;
}
🍩 상대적 단위
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.relative-units {
font-size: 1.2em;
width: 50%;
height: 100vh;
padding: 1rem;
}
.grid-container {
display: grid;
grid-template-columns: 1fr 2fr 1fr;
}
.responsive-font {
font-size: calc(16px + 1vw);
}
🍬 인라인 스타일
인라인 스타일은 HTML 요소의 style
속성을 통해 직접 스타일을 적용하는 방식이다.
1
<p style="color: red; font-size: 18px;">이것은 인라인 스타일의 문단입니다.</p>
이렇게 간단하게 CSS에 대해서 알아보았다.
5️⃣ 마무리
두 번째 섹션을 마무리하면서 HTML과 CSS에 대해 포괄적으로 학습할 수 있었다.
이미 알고 있던 내용이었지만, 항상 TailwindCSS를 사용하다 보니 순수 CSS파일로 작업하는 것이 꽤 어색하게 느껴졌다.
앞으로 진행할 두 번째 프로젝트에서 HTML, CSS, Vanilla JavaScript만으로 구현해야 한다는 점에서 어려움이 예상된다.
하지만, 이렇게 하면서 웹 개발의 근본적인 원리를 이해할 수 있을 것이라고 생각한다. 순수한 형태의 웹 기술로 작업하는 것은 더 탄탄한 기초를 쌓는 과정이 될 것이라고 생각한다❗️💥
댓글남기기