크롬 개발자 도구
- 웹 브라우저 크롬에서 제공하는 개발과 관련된 다양한 기능을 제공
 
- 주요 기능
- Elements - Dom 탐색 및 CSS 확인 및 변경
- Styles - 요소에 적용된 CSS 확인
 
- Computed - 스타일이 계산된 최종 결과
 
- Event Listeners - 해당 요소에 적용된 이벤트(JS)
 
 
- Sources, Network, Performance, Application, Security, Audits 등
 
 
HTML 기본 구조
- html : 문서 최상위(root)요소
 
- head : 문서 메타데이터 요소
- 문서 제목, 인코딩, 스타일, 외부 파일 로딩 등
 
- 일반적으로 브라우저에 나타나지 않는 내용
 
 
- body : 문서 본문 요소
 
head  예시
- title : 브라우저 상단 타이틀
 
- meta : 문서레벨 메타데이터 요소
 
- link : 외부 리소스 연결 요소 (css파일, favicon 등)
 
- script : 스크립트 요소(javascript 파일 코드) 
 
- style : CSS 직접 작성
 
<head>
    <title>HTML 수업</title>
    <meta charset="UTF-8">
    <link href="style.css" rel="stylesheet">
    <script src="javascript.js"></script>
    <style>
    p {
      color: black
     }
    </style>
	
</head>
head 예시 :Open Graph Protocol
- 메타데이터를 표현하는 새로운 규약
- HTML 문서의 메타 데이터를 통해 문서의 정보를 전달
 
- 메타정보에 해당하는 제목, 설명 등을 쓸 수 있도록 정의
 
 
DOM(Document Object Model) 트리
- 텍스트 파일인 HTML 문서를 브라우저에 렌더링 하기 위한 구조 
- HTML 문서에 대한 모델을 구성함 
 
- HTML 문서 내의 각 요소에 접근 / 수정에 필요한 프로퍼티와 메서드를 제공함 
 
 
<body>
    <h1>
        웹문서
    </h1>
    <ul>
        <li>HTML</li>
        <li>CSS</li>
    </ul>
</body>
요소
- HTML 요소는 시작 태그와 종료 태그 그리고 태그 사이에 위치한 내용으로 구성
- 태그는 컨텐츠를 감싸는 것으로 그 정보의 성격과 의미를 정의
 
 
- 내용이 없는 태그들
- br, hr, img, input, link, meta
 
 
- 요소는 중첩될 수 있음
- 요소의 중첩을 통해 하나의 문서를 구조화
 
- 여는 태그와 닫는 태그의 쌍을 잘 확인해야함
- 오류를 반환하는 것이 아닌 그냥 레이아웃이 깨진 상태로 출력되기 때문에, 디버깅이 힘들어질 수 있음
 
 
 
속성
- 속성을 통해 태그의 부가적인 정보를 설정할 수 있음
 
- 요소는 속성을 가질 수 있으며, 경로나 크기와 같은 추가적인 정보를 제공
 
- 요소의 시작 태그에 작성하며 보통 이름과 값이 하나의 쌍으로 존재
 
- 태그와 상관없이 사용 가능한 속성들도 있음
 
속성 작성 방식 통일
- 쌍따옴표 쓰기 
 
- href='ww.~~' 할 때 공백 금지 
 
- 열기 닫기 잘 안하면 디버깅 힘듬 
 
HTML Global Attribute
모든 HTML 요소가 공통으로 사용할 수 있는 대표적인 속성
- 
id : 문서 전체에서 유일한 고유 식별자 지정
 
- 
class : 공백으로 구분된 해당 요소의 클래스의 목록
 
- 
data-* : 페이지에 개인 사용자 정의 데이터를 저장하기 위해 사용
 
- 
style : inline 스타일
 
- 
title : 요소에 대한 추가 정보 지정
 
- 
tabindex : 요소의 탭 순서 
 
시맨틱 태그
- HTML5에서 의미론적 요소를 담은 태그의 등장
- 기존 영역을 의미하는 div태그를 대체하여 사용
 
 
- 대표적인 태그 목록
- header : 문서 전체나 섹션의 헤더(머리말 부분)
 
- nav : 네비게이션
 
- aside :  사이드에 위치한 공간, 메인 콘텐츠와 관련성이 적은 콘텐츠
 
- section : 문서의 일반적인 구분, 컨텐츠의 그룹을 표현
 
- article : 문서, 페이지, 사이트 안에서 독립적으로 구분되는 영역
 
- footer : 문서 전체나 섹션의 푸터(마지막 부분)
 
 
- Non semantic 요소는 div, span 등이 있으며 h1, table 태그들도 시맨틱 태그로 볼 수 있음
 
- 개발자 및 사용자 뿐만 이나리 검색엔진 등에 의미있는 정보의 그룹을 태그로 표현
 
- 단순히 구역을 나누는 것 뿐만 아니라 '의미'를 가지는 태그들을 활용하기 위한 노력
 
- 요소의 의미가 명확해지기 때문에 코드의 가독성을 높이고 유지보수를 쉽게 함
 
- 검색엔진최적화(SEO)를 위해서 메타태그, 시맨틱 태그 등을 통한 마크업을 효과적으로 활용 해야함
 
인라인요소 vs 블록요소
블록요소
블록요소는 모든 인라인 요소를 포함할 수 있으며, 블록요소도 포함할 수 있습니다또한, 너비(width), 높이(height), 안쪽 여백(padding), 바깥 여백(margin)으로 레이아웃 수정을 할 수 있으며, 블록요소가 끝나는 지점에서 자동으로 줄바꿈이 됩니다
address`, `article`, `aside`, `audio`, `blockquote`, `canvas`, `dd`, `div`, `dl`, `fieldset`, `figcaption`, `figure`, `footer`, `form`, `h1`, `h2`, `h3`, `h4`, `h5`, `h6`, `header`, `hgroup`, `hr`, `noscript`, `ol`, `output`, `p`, `pre`, `section`, `table`, `ul`, `video
출처: https://uxgjs.tistory.com/44 [UX 공작소]
인라인요소
인라인 요소는 다른 인라인 요소를 포함할 수 있으며, 기본적으로 컨텐츠가 끝나는 지점가지 넓이를 가지게 됩니다
또한, 너비(width), 높이(height)를 조절할 수 없으며, line-height(높낮이 조절) 혹은 text-align(텍스트 정렬)을 할 수 있으며, 블록 요소와 다르게 인라인 요소는 끝나는 지점에 줄바꿈이 없습니다.
a`, `abbr`, `acronym`, `b`, `bdo`, `big`, `br`, `button`, `cite`, `code`, `dfn`, `em`, `i`, `img`, `input`, `kbd`, `label`, `map`, `object`, `q`, `samp`, `small`, `script`, `select`, `span`, `strong`, `sub`, `sup`, `textarea`, `tt`, `var
출처: https://uxgjs.tistory.com/44 [UX 공작소]
텍스트 요소
- <a> : href 속성을 활용하여 다른 URL로 연결하는 하이퍼링크 생성
- <b> 굵은 글씨 요소
- <strong> 중요한 강조하고자 하는 굵은글씨 </strong>
- <i> 기울임 글씨 요소
- <em> 중요한 강조하고자 하는 기울임 글씨
- \<br> 텍스트 내에 줄바꿈 생성
- <img> src 속성을 이용하여 이미지 표현
- <span> 의미없는 인라인 컨테이너 
그룹 컨텐츠
- \<p>  하나의 문단
- \<hr> 문단 레벨 요소에서의 주제의 분리를 의미하며 수평선으로 표현됨
- \<ol> 순서가 있는 리스트
- \<ul> 순서가 없는 리스트
- \<pre> HTML에 작성한 내용을 그대로 표현 보통 고정폭 글꼴이 사용되고 공백 문자를 유지
- \<blockquote> 텍스트가 긴 인용문 주로 들여쓰기를 한 것으로 표현됨
- \<div> 의미없는 블록 레벨 컨테이너
table 태그 기본 구성
- thead
 
- tbody 
 
- tfoot 
 
- caption
 
- form은 정보(데이터)를 서버에 제출하기 위한 영역
 
- form 기본 속성
- action : form을 처리할 서버의 URL
 
- method : form을 제출할 때 사용할 HTTP 메서드 (GET or POST)
 
- enctype : method가 post인 경우 데이터의 유형
- application/x-www-form-urlencoded : 기본값
 
- multipart/form-data : 파일 전송시 (input type이 file인 경우)
 
- text/plain :  HTML5 디버깅 용 (잘 사용되지 않음 )
 
 
 
- 다양한 타입을 가지는 입력 데이터 유형과 위젯이 제공됨
 
- input 대표적인 속성
- name : form control에 적용되는 이름 (이름/값 페어로 전송됨)
 
- value : form control에 적용되는 값 (이름/갑 페어로 전송됨)
 
- required, readonly, autofocus, autocomplete, disabled 등 
 
 
- 일반적으로 입력을 받기 위하여 제공되며 타입별로 HTML 기본 검증 혹은 추가 속성을 활용할 수 있음
- text : 일반 텍스트 입력
 
- password : 입력시 값이 보이지 않고 문자를 특수기호로 표현
 
- email : 이메일 형식이 아닌 경우 제출 불가
 
- number : min,max,step 속성을 활용하여 숫자 범위 설정 가능 
 
- file : accept 속성을 활용하여 파일 타입 지정 가능 
 
 
- 항목중 선택
- 일반적으로 label을 사용하여 내용을 작성하여 항목 중 선택할 수 있는 input을 제공
 
- 동일 항목에 대하여는 name을 지정하고 선택된 항목에 대한 value를 지정해야 함 
- checkbox : 다중 선택
 
- radio : 단일 선택
 
 
 
- 기타
- 다양한 종류의 input을 위한 picker를 제공
- color : color picker
 
- date : date picker
 
 
- hidden input을 활용하여 사용자 입력을 받지 않고 서버에 전송되어야 하는 값을 설정
- hidden : 사용자에게 보이지 않는 input
 
 
 
- label을 클릭하여 input 자체의 초점을 맞추거나 활성화 시킬 수 있음
- 사용자는 선택할 수 있는 영역이 늘어나 웹/모바일 환경에서 편하게 사용할 수 있음
 
- label과 input 입력의 관계가 시각적일 뿐만 아니라 화면 리더기에서도 label을 읽어 쉽게 내용을 확인할 수 있도록 함
 
- input에  id 속성을, label에는  for 속성을 활용하여 상호 연관을 시킴 
 
 
* for 랑 id, name이랑 value가 묶인다.