안녕하세요 :D
이번에 좋은 기회로 카카오테크캠퍼스 프론트엔드 분야에 참여하게 되었어요 ㅎㅎ 카테캠 참여하는 분들을 쿠키즈 라고 부르는데요. 저도 쿠키즈로서 열심히 참여하려고 노력 중이랍니다! 🍪
1주차에 배운 HTML과 CSS에 대해 간단히 정리해 보았습니다 🤓
#1. 개요
웹 개발에 사용되는 언어들은 주로 다음과 같습니다. 비유적인 표현도 같이 있으니까 이해가 잘 되더라구요.
HTML(웹의 구조, 기획자), CSS(시각적인 표현, 디자이너), JS(동적 처리, 개발자)
웹에서 사용하는 이미지입니다. 주로 PNG, JPG를 자주 사용한다고 합니다. 😀
- JPG(JPEG) : 손실 압축(용량이 적음)
- PNG : 비손실 압축(용량이 비교적 큼), 투명도 지원
- GIF : 8비트 색상만 지원, 애니메이션
- WEBP : 구글이 개발한 이미지 포맷, 하위호환성
- SVG : 마크업 언어 기반
가장 많이 쓰는 단축키입니다! ⌨️ (저는 현재 MacOS를 사용하고 있어요)
모두 저장: ⌥ ⌘ S
#2. HTML Basics
<!DOCTYPE html>
<html lang="ko">
<head>
</head>
<body>
</body>
</html>
HTML에서 첫 줄부터 들어가 있는 Doctype(DTD)입니다. HTML 문서의 버전을 지정해 주는 역할을 합니다.
그다음 줄에 있는 <html></html> 은 문서의 전체 범위, <body></body>은 문서의 구조(보여지는 구조)를 나타내는 범위를 나타냅니다!
CSS, JS를 연결하는 방법
<link rel="stylesheet" href="./main.css" />
<script src="./main.js"></script>
<script defer src="./main.js"></script>
마지막 줄 코드에서 <script> 태그의 defer 속성은 페이지가 모두 로드된 후에 해당 외부 스크립트가 실행됨을 의미합니다!
상대 경로 vs 절대 경로
| 상대 경로 | 절대 경로 |
| ./ 주변 (생략 가능) | http(https) |
| ../ 상위폴더 | / |
#3. 웹에서 시작하기
🔎 https://codepen.io/
웹에서 HTML, CSS, JS를 바로바로 확인할 수 있는 사이트인데요!
여기서 주의할 점은...!
HTML 칸은 <body></body> 부분을 나타냅니다.
브라우저 스타일 초기화
🔎 reset.css cdn를 검색해 줍니다.
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reset-css@5.0.1/reset.css">
이걸 <head></head> 안에 입력해 주면 브라우저 스타일이 초기화됩니다.
저도 이번에 처음 알았는데 CSS 스타일을 초기화해 주는 게 아무래도 좋다고 해요 ㅎㅎ
#4. HTML 개요
기본 문법❗
요소(Element)
<태그> 내용 </태그>
시작(열린) 태그(Tag)와 종료(닫힌) 태그로 이루어져 있는데, 종료 태그에는 / 기호가 붙습니다.
그 사이에는 요소의 내용(Contents)이 들어갑니다.
시작 태그와 종료 태그로 이루어지지 않은 태그도 있는데요! 바로 빈(Empty) 태그라고 합니다.
HTML1~5에서는 <태그>로 나타내고, XHTML과 HTML5에서는 <태그 />로 나타내야 합니다.
여기서 HTML5는 둘 다 표현이 가능한데, <태그 />를 더 추천합니다 🌟
슬래시 기호를 붙이지 않는 것이 더 편리하긴 하지만, 슬래시 기호를 붙이는 게 더 안전하기 때문이죠!
<img src="./cat.jpg" alt="고양이"/>
<input type="text"/>
<input type="checkbox"/>
부모와 자식 관계의 이해
요소는 상위(조상) 요소와 하위(후손) 요소로 나뉘는데, 이때 후손 요소에는 자식 요소도 포함되는 개념입니다.
<!-- 자식 요소 - 시각적으로 들여쓰기(Indent) 해서 나타냄. -->
<태그>
<태그>
<태그>내용</태그>
</태그>
</태그>
글자와 상자
이번에는 요소가 화면에 출력되는 특성들에 대해서 살펴보겠습니다.
1️⃣ 인라인(Inline) 요소 (=글자 요소)
인라인 요소는 글자를 만들기 위한 요소들을 말하는데요.
<!-- 이미지를 삽입하는 요소 -->
<img src="삽입할 이미지의 경로" alt="삽입할 이미지의 이름" />
<!-- 다른/같은 페이지로 이동하는 하이퍼링크를 지정하는 요소 -->
<a href="" target=""></a>
<!-- 특별한 의미가 없는 구분을 위한 요소 -->
<span></span>
<!-- 줄바꿈 요소 -->
<br/>
<span></span> 태그가 많이 사용되기 때문에 span 태그로 예시를 들겠습니다. 수평으로(왼쪽에서 오른쪽으로) 쌓이는 특징이 있는데 밑에 예시처럼 사용합니다❗️
<span>Hello</span>
<span>World</span>
위와 같이 입력을 하게 되면.. Hello World라고 출력이 되는 걸 알 수 있어요 😃 (codepen에서 바로바로 확인해 볼 수 있으니 적극적으로 활용해 봅시다!)
줄 바꿈 처리는 띄어쓰기로 인식을 하는 것도 확인할 수 있겠죠?
글자 요소들의 특징을 본격적으로 알아보겠습니다.
글자 요소는 가로세로 사이즈를 지정할 수 없답니다.
<span style="width:100px">Hello</span>
style 속성에 width값을 지정해 보았는데요. 적용이 전혀 안 되는 것을 확인해 볼 수 있습니다😅
이 외에도 위아래 여백도 지정이 불가능합니다.
대신 좌우 여백은 가능해요 ❗️❗️
<!-- 요소의 외부 여백 -->
<span style="margin: 20px 20px;">Hello</span>
<!-- 요소의 내부 여백 -->
<span style="padding: 20px 20px;">World</span>
앞에 20px은 적용이 안된답니다
이 특징들이 되게 중요한 특징이더라구요. 꼭 기억해 두는 것이 좋습니다 :)
자식 요소로 블록 요소를 지정한 것도 안됩니다 ㅎㅎ (<span><div></div></span>) ❌
2️⃣ 블록(Block) 요소 (=상자 요소)
블록 요소의 종류는 다음과 같습니다.
<!-- 특별한 의미가 없는 구분을 위한 요소. (Division) -->
<div></div>
<!-- 제목을 의미하는 요소. (Heading) 숫자가 작을수록 더 중요한 제목을 정의. -->
<h1></h1>
<!-- 문장을 의미하는 요소. (Paragraph) -->
<p></p>
<!-- 순서가 필요없는 목록의 집합을 의미. (Unordered List) -->
<ul></ul>
<!-- 목록 내 각 항목 (List Item) -->
<li></li>
블록 요소는 부모 요소의 크기만큼 자동으로 늘어나는 특징이 있습니다. 가로 너비는 늘어나고, 세로 너비는 줄어든답니다!
인라인 요소와 다르게 가로세로 너비가 지정이 가능합니다.
👇 예시 코드
<div style="width: 100px;"></div>
<div style="height: 40px;"></div>
위아래 좌우 외부·내부 여백 또한 지정이 가능합니다.
👇 예시 코드
<div style="margin: 10px;"></div>
<div style="padding: 10px;"></div>
블록 요소 안에 블록, 인라인 요소 둘 다 가능합니다.
블록 요소는 다 가능하다는 것을 기억해 두세요 🤗
3️⃣ Inline-block 요소
인라인블록 요소에는 input 요소와 label 요소가 있습니다.
<input /> 요소는 사용자가 데이터를 입력하는 요소인데요.
👇 다양한 속성들과 그 속성값이 있는 것을 확인할 수 있습니다 :)
<!-- 입력받을 데이터의 타입 -->
<input type="text" />
<!-- 사용자에게 체크 여부를 입력 받음 -->
<input type="checkbox" />
<!-- 사용자에게 체크 여부를 그룹에서 1개만 입력 받음 -->
<input type="radio" />
<!-- 미리 입력된 값(데이터) -->
<input value="" />
<!-- 사용자가 입력할 값(데이터)의 힌트 -->
<input placeholder="" />
<!-- 입력 요소 비활성화 -->
<input disabled="" />
<!-- 라벨 가능 요소(input)의 제목 -->
<label></label>
👆 <label></label> 요소는 input 요소의 제목을 지정해 줄 때 사용합니다.
4️⃣ 테이블 요소 = table
<!-- 표 요소, 행(Row)과 열(Column)의 집합 -->
<table></table>
<!-- 행(Row)을 지정하는 요소. (Table Row) -->
<tr></tr>
<!-- 열(Column)을 지정하는 요소. (Table Data) -->
<td></td>
1주차여서 간단한 HTML과 CSS에 대해서 배웠는데, 대학교 전공 수업에서 배운 내용들이었지만 가볍게 리마인드하기 좋은 시간이었습니다! 앞으로 다른 주차도 열심히 달려 나아가보겠습니다 🏃♂️