일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Title
- Li
- 전체 선택자
- table
- :active
- colspan
- BR
- 속성 선택자
- 한정수 강사님
- tag
- img
- !doctype html
- rowspan
- 인라인 레벨 요소
- HTML정의
- Python
- ul
- ::first-line
- BODY
- Form
- Border
- Head
- ::before
- Ol
- ::first-letter
- select
- JAVA 개발 환경 설정
- textarea
- option
- JavaScript
- Today
- Total
개발 공부 기록하기
Section 5. 폼(Form)과 테이블(table)(1) 본문
이번 섹션에 포함된 강의명은 다음과 같다.
(강의에서 제공된 번역 내용을 기반으로 작성하지만, 간혹 오역으로 판단될 경우에는 내 해석으로 대체할 수 있음..!!)
순서 | 강의명 | 소요 시간 |
중요도 (필수crucial/중요important/선택nice to have) |
---|---|---|---|
01 | HTML 테이블 개요 Introducing HTML Tables |
4' 08" | 중요 |
02 | 테이블 기초: <table>, <tr>, <td>, <th> Tables: TR, TD & TH Elements |
9' 11" | 필수(어려움) |
03 | 테이블 영역: <thead>, <tbody>, <tfoot> Tables: Thead, Tbody & Tfoot Elements |
2' 15" | 중요(어려움) |
04 | 테이블 Colspan & Rowspan Tables: Colspan & Rowspan |
4' 14" | 선택 (지금 단계에서는 어렵지만 알아두면👍) |
05 | 코딩 연습 5: Table Practice Exercise Coding Practice 5: Table Practice Exercise |
- | - |
06 | 폼(Form) 요소 기초 The Form Element |
9' 18" | 필수 |
07 | 일반적인 입력 형식 Common Input Types |
5' 27" | 필수 |
08 | 레이블 The All-important Label |
6' 52" | 필수 |
09 | 버튼 요소 HTML Buttons |
5' 17" | 필수 |
10 | 이름 속성 The Name Attribute |
5' 26" | 중요 |
11 | 구글과 레딧 검색하기 "Hijacking" Google & Reddit's Search |
6' 25" | 중요 |
12 | 라디오 버튼, 체크박스와 선택창 Radio Buttons, Checkboxes & Select Drop-down |
10' 54" | 중요 |
13 | 범위 및 텍스트 영역 Range & Text Area |
7' 02" | 중요 |
14 | 코딩 연습 6: Forms Practice Exercise Coding Practice 6: Forms Practice Exercise |
- | - |
15 | HTML5 폼의 유효성 검사 HTML5 Form Validations |
9' 27" | 중요 |
16 | 마라톤 선수 등록 양식 만들기: 문제/정답 Creating A Marathon Registration Form: Quiz / Solution |
15' 05" | - |
01. HTML 테이블 개요
2차원의 행row과 열column 구조로 되어있는 데이터가 묶인 테이블table로
일부 데이터를 근사하고 명확하게 표시하는 방법으로 많이 사용된다.
그러나 모든 데이터에 적합한 구조는 아니다.
1990~2000년대에는 웹 사이트 *레이아웃layout에 이 표 형태가 많이 사용되었다.
* 레이아웃: 콘텐츠를 이동하거나 배치하는 것
하지만 이제는 더 이상 그렇게 하면 안 된다.
표는 만드는 사람이 표의 형식을 빌려 표시하고 싶은 정보를 담은
표 데이터와 행, 그리고 열에 의해서 만들어져야 한다.
(단지 콘텐츠를 레이아웃하기 위해서 사용하는 게 아니다!)
02. 테이블 기초: <table>, <tr>, <td>, <th>
표에 들어가거나 표에 넣을 수 있는 요소는 아주아주 많다! (MDN 페이지 참조.)
그래서인지 강의에 띄운 화면에 "WTF why are there so many elements just to make a table?"이라고 첫마디부터 비속어가 쓰여있었다.... 난 또 WTF가 뭔 말인가 했네..ㅋㅋㅋㅋㅋ
표를 만드는 요소들에 어떠한 콘텐츠라도 넣지 않는다면, 요소 자체로는 하는 역할이 거의 없다.
<td>
td는 table data cell 또는 table data의 줄임말이다. 여기서 d는 '단일 셀'을 말한다.
즉, 데이터를 포함한 '표 안에 있는 단일 셀'을 의미하는 것이다.
그래서 아래에서 다룰 <tr>을 쓰지 않고 연달아 <td>를 쓰기만 하면
가로로 모든 데이터가 나열될 뿐 여러 층의 표가 만들어질 수 없다.
<tr>
tr은 table row의 줄임말이다.
표 안의 데이터들의 행을 구분해주기 위해서 한 줄로 묶고 싶은 <td>들을 <tr> 안에 넣어주면 된다!
<th>
<td>와 <tr>만으로 데이터는 나열할 수 있으나, 각각의 데이터가 무엇을 의미하는지는 알 수 없다.
각각의 데이터에 제목을 붙여주는 작업이 필요한데, 이를 <th>가 수행할 수 있다. 즉, <th>는 헤더header를 정의한다.
<td> 요소 대신에 "니가 header야!" 알려주는 의미로 <th>를 사용한다.
예전에 Do it 책으로 공부할 때 <tr> 대신에 써보는 실수를 했었는데 씨알도 안 먹혔다...ㅎㅎ.....
03. 테이블 영역: <thead>, <tbody>, <tfoot>
표에 섹션section을 추가하는 3가지 요소인 <thead>, <tbody>, <tfoot>.
이 요소들은 표를 논리적인 섹션으로 분리하는 작업 외에는 하는 일이 없다.
tag의 이름으로도 알 수 있듯 어디가 머리고 몸통이고 발인지 알려주는 셈이다.
표에 footer가 없는 경우도 많다.
사실상 주요 데이터 세트의 일부는 아니지만 footer는 누계나 평균 등을 나타내는 데 자주 쓰인다.
<thead>의 경우에는
이런 식으로 2개 이상의 행이 표의 헤더를 구성할 때 유용하게 쓰인다.
이렇게 섹션을 나누어 주는 건
① 시맨틱 마크업이 잘 되도록 작성하고,
② 접근성을 좋게 만들기 위한 (특히 복잡한 표의 경우 더더욱 접근성이 개선될 필요가 ↑↑↑)
크게 두 가지 목적이 있다.
04. 테이블 Colspan & Rowspan
여러 열이나 행에 걸친 셀을 만드는 방법으로 colspan과 rowspan이 있다.
일종의 셀 병합으로 이해하면 편할 것 같다.
colspan
옆으로 맞붙어 있는 2개 이상의 셀을(열과 열을) 합칠 때 사용하는 속성이다.
rowspan
위아래로 맞붙어 있는 2개 이상의 셀을(행과 행을) 합칠 때 사용하는 속성이다.
위에서 <td>, <tr>, <th>를 다뤄볼 때 만들어본 표에 있는 데이터 중, 무게를 나타내는 데이터가 두 종류가 있으니,
이를 별도의 열로 나누어 표를 만들고 싶을 때 이렇게 하면 된다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<title>Heaviest Birds Table</title>
</head>
<body>
<h1>Heaviest Birds</h1>
<table>
<thead>
<tr>
<th rowspan="2">Animal</th>
<th colspan="2">Average Mass</th>
<th rowspan="2">Flighted</th>
</tr>
<tr>
<th>(kg)</th>
<th>(lb)</th>
</tr>
</thead>
<tbody>
<tr>
<td>Ostrich</td>
<td>104</td>
<td>230</td>
<td>No</td>
</tr>
<tr>
<td>Somali Ostrich</td>
<td>90</td>
<td>200</td>
<td>No</td>
</tr>
</tbody>
</table>
</body>
</html>
↓
이렇게, colspan과 rowspan을 쓰고 나면 그 영향력이 미치는 행과 열에 대한 요소는 입력하지 않는다!
즉, header 영역으로 분류되는 kg, lb가 포함된 행에는, 그 윗 행에 두 번 쓰인 rowspan이 영향을 미치므로
Animal열과 Flighted 열에 해당하는 데이터는 쓰지 않는 것이다.
마찬가지로 한 번 쓰인 colspan의 영향력 때문에, 맨 첫 행의 <th> 요소가 3개밖에 안 되는 것이다.
(아래 데이터들로 보면 4열이어야함에도 불구하고)
아... 설명 진짜 괴발개발.....ㅋㅋㅋㅋㅋ
05. 코딩 연습 5: Table Practice Exercise
위의 표를 만들어내는 것이 이번 과제의 미션!
뭐, 그닥 안 어렵네!
여러 책과 강의로 연습했다고 좀 우쭐했나보다... 겸손 좀 하란 말이야!
<table>
<thead>
<tr>
<th>Subscription</th>
<th>Price</th>
<th>Support</th>
</tr>
</thead>
<tbody>
<tr>
<td>Free</td>
<td>Free</td>
<td>N/A</td>
</tr>
<tr>
<td>Personal</td>
<td>$9.99</td>
<td>Weekdays</td>
</tr>
<tr>
<td>Business</td>
<td>$49.99</td>
<td>24/7</td>
</tr>
</tbody>
</table>
↓
'프밍 > HTML' 카테고리의 다른 글
Section 5. 폼(Form)과 테이블(table)(2) (1) | 2022.11.27 |
---|---|
Section 4. HTML의 다음 단계(2) (0) | 2022.11.17 |
Section 4. HTML의 다음 단계(1) (0) | 2022.11.15 |
Section 3. HTML 기초(3) (0) | 2022.11.12 |
Section 3. HTML 기초(2) (0) | 2022.11.12 |