구조-html
웹 문서의 기본 골격이자 뼈대
표현-css
각 요소들의 레이아웃과 스타일링, 배치와 ux 증대
동작-javascript
동적요소, ui에 따른 행동
html과 css를 구분하여 사용하면
알아두면 웹페이지 제작의 올바른 방향성을 띄며 진행할 수 있다.
크롬-사파리-파이어폭스
이 서로 다른 웹 브라우저에 < button >버튼< /button >
을 실행하면 브라우저마다 다른 기본값을 갖고 있어서 다르게 표현된 버튼을 확인할 수 있다.
만약 이 차이가 더 극명하다면?
어쩌면 유저가 버튼이라고 인지하지 못하는 버튼이 생길 수도 있을 것이다.
=> 이를 방지하고자 문법 사전을 만들기로 함. = 웹표준 HTML5버전(w3c_2014)
이후 2019 WHATWG(애플,모질라,구글,MS)가 제안한 HTML Living Stansard를 w3c가 수용하면서 공식 웹표준으로 인정.
요소(element)
하나하나를 <태그>
라는 표기법을 사용하여 표현함요소의 역할
(제목,본문,버튼,이미지...)을 명시함웹표준(html5)에 맞게
작성함오프닝 태그 + 내용 + 클로징 태그
로 만들 수 있다.줄바꿈은 무시
한다.오프닝 태그와 클로징 태그가 다른 줄에 있어도 인식할 수 있다.
소문자로 작성하는 걸 권장한다.
빈요소(Empty Elements)
라고 한다.<ul>
<li></li>
<li></li>
</ul>
<a>
<img src=""/>
</a>
블록(block)
언제나 새로운 라인에서 시작하며 실제 사용하는 공간에 상관없이 부모가 허용한 최대 width를 사용한다.
인라인(Inline)
줄 어디에서나 시작할 수 있고, 이전 요소가 끝나는 지점부터 시작해 요소의 내용(content)만큼 차지한다.
목록화
하기 때문에 되도록 순서대로
용도에 맞게 쓰는게 좋다. 포매팅
을 한다 : 나열된 문단 속 문장이나 단어를 강조하는 것. 앵커 Anchor 요소. href를 통해 특정 주소로 이동하는 하이퍼링크를 만든다.
절대경로
: 현재 위치와 관계없이 정해진 위치로 이동할 수 있다.
<a href="https://www.mozilla.com">
상대경로
: 브라우저나 로컬상태와 같이 다른환경에서 변화하는 이동경로.(로컬 환경에서 폴더위치 등)
href 로 메일이나 연락처를 연결할 수 있다.
<a href="mailto:glow2myself@gmail.com"> 이메일 연결 </a>
<a href="tel:010-000-0000"> 연락처 연결 </a>
href 로 지정한 링크를 어디에 띄울 것인지 정할 수 있다.
_self
: 기본값. 현재 브라우저, 현재 탭에 열기
_blank
: 현재 브라우저, 새로운 탭에서 열기
<h3> 속성2 = terget </h3>
<a href="https://www.mozilla.com" target="_blank">Mozilla</a>
html에서의 엔티티는 < 나 > 또는 " & 같은 태그 예약어를 그대로 사용하고 싶을 때 쓰는 방법을 말한다.
< p > 해당 태그를 html파일에 그대로 적으면 태그로 인식되어 페이지에 보이지 않지만
<p><p>
이런식으로 엔티티를 사용해 태그 그대로를 표현할 수 있다.
"힣" &qout;힣&qout;
(여백)
특정 구획이나 구역을 나누는 태그
flow contents를 위한 통용 컨테이너
블록 요소이고 순수 컨테이너로 내용이 없으면 css를 주지 않을 때는 보이지 않는다.
*순수컨테이너 _ div 자체는 의미없는 태그이다.
기획에 맞는 태그(nav, article...)을 우선 사용해야 한다. div 남발은 ㄴㄴ
div와 사용은 동일, 순수 컨테이너
다만, 인라인 요소로 구문 컴텐츠를 담는다 (text)
Semantic : 의미, 의미론적인
요소의 의미를 고려하여 구조를 설계하고 코드를 작성한다.
의미론적인 마크업을 사용하면 생기는 장점
*
기획에 맞는 요소를 먼저 사용하고 무분별한 div/span은 사용을 지양한다.
*
내가 만드려는 요소의 콘텐츠(내용)에 적합한 Tag를 먼저 찾고, 의미있는 클래스명(네이밍 컨벤션)을 정한다.
header
Semantic Tag
, Block Container
소개, 탐색에 도을을 주는 콘텐츠
제목, 로고, 검색, 폼 등을 포함할 수 있다.
웹페이지의 header는 하나만 사용 가능하다.
header 안에 다른 header 나 footer는 올 수 없다.
페이지제목 < h1 >, 글제목 < h2 >
footer
Sementic Tag
, Block Container
웹페이지 정보, 연관사이트연결, 홈페이지 단체, 연락망 등의 정보를 포함한다.
footer안에 다른 footer나 header는 올 수 없다.
탐색, 구획 요소
본문과 직접적인 관련은 없지만 옆에 적고싶은 내용
< body >태그 하위의 자식 태그로 오직 1개만 사용할 수 있다.
hidden
속성값으로 숨겨야 한다.h2
제목이 사용되면 좋다.article로 사용할 수 없는 독립 객체
ol
ul
=> ol과 ul은 중첩하여 사용 가능하다.
li
dl
dt
로 표기한 용어와 dd
로 표기한 목록을 감싸서 dl을 생성한다.dt-dd
가 가능하다.dt-dd
의 형제는 dt-dd
만 가능하고 다른태그(예로 div)는 오면 안된다.tr
table row
th
table head = colum/row scope를 사용할 수 있다.(로⇨ 컬⇩)
src = 경로, 주소
alt = alternative text 대체 텍스트
width, height = 가로, 세로 너비. 픽셀 기준
웹 이미지 유형
반응형 : srcset
<img
src = "../img/large.png"
srcset = "../img/small.png 300w,
../img/medium.png 450w,
../img/large.png 600w"
alt = "image set"
/>
<img
src = "../img/large.png"
sizes ="(min-width: 600px) 600px,
(min-width: 460px) 450px,
300px"
alt = "image set"
/>
/*600px 보다 큰 화면이면 600px로, 460px 보다 큰 화면이면 450px로, 그것도 아니면 300px로 보여줘*/
:: 사용자가 작성하는 정보를 받을 수 있다. 단독 사용은 안되고 내부에 input 같은 요소를 넣어주어야 한다.
for
과 input의 id
를 동일한 이름을 사용해 연결할 수 있다. <div>
<label for="color"> 좋아하는 색 ::
<input type="text" id="color">
</label>
</div>
여러 input을 역할 별로 구분할 수 있게 만든다.
legend는 fildset의 자식으로 올 수 있다.
feildset의 첫번째 자식이 legend가 와야 한다.
<form>
<fieldset>
<legend>제일 좋아하는 것</legend>
<input type="radio" id="쿠키" name="좋아" value="K">
<label for="쿠키">마카다미아 쿠키</label><br>
<input type="radio" id="음료" name="좋아" value="S">
<label for="음료">딸기우유</label><br>
<input type="radio" id="한식" name="좋아" value="M" />
<label for="한식">된장찌개</label>
</fieldset>
</form>
check1=on
<input type="radio" name=colors value="c1"/>
<input type="radio" name=colors value="c2"/>
<input type="radio" name=colors value="c3"/>
input name=""
전체 form 에서 해당 필드가 어떤 데이터를 갖고 있는지 구분하는 역할을 한다. label=""과 동일하게 작성하여 구분할 수 있다. get일 경우 주소창에 입력되고, post일 경우 리퀘스트바디에 들어간다.
input placeholder="입력예시:"
input autocomplete="on"
자동완성을 켤지 아닐지 지정. on/off
input required
필수 입력 요소를 지정할 수 있다.
input disabled
입력을 막는다. 폼 전송에도 제외된다.
js로 특정 필드 입력 시 입력하지 못하게 만들 수 있다.
input readonly
입력을 막는다.
value로 기본입력값을 넣어줄 수 있다.
사용자가 입력은 불가하지만 폼 전송에는 포함된다.
사용자가 수정 못하는 기본값을 설정할 수 있다.
button type="submit / reset / button"
button과 input 차이
버튼이 인풋보다 스타일 적용이 수월함.
인풋은 value에 텍스트만 적용가능하지만
버튼은 내부에 html 태그(img, a 등)를 추가할 수 있고 가상선택자(::before ::after)도 적용할 수 있다.
그러므로 form 데이터 제출용 버튼이 아니라면 type="button"을 해줘야 한다.
<div>
<input type="reset" value="😈"/>
<input type="submit" value="제출!"/>
<input type="button" value="버튼!"/> <!-- input type="버튼"은 없다. -->
</div>
<div>
<button type="reset">👻</button>
<button type="submit">제출@</button>
<button type="button">버튼@</button>
</div>
<select name="colors" id="color-select" required>
<option value="">색상을 선택해주세요</option>
<optgroup label="무채색">
<option value="black">검정</option>
<option value="white">흰색</option>
<option value="gray">회색</option>
</optgroup>
<optgroup label="유색">
<option value="red">빨강</option>
<option value="green">초록</option>
<option value="blue">파랑</option>
</optgroup>
</select>
label for = input id
input list = datalist id
name은 data 전송 시 구분
<label for="colors">좋아하는 색</label>
<input list="favorite-color" id="colors" name="choice-color">
<datalist id="favorite-color">
<option value="">색상을 선택해주세요</option>
<optgroup label="무채색">
<option value="black">검정</option>
<option value="white">흰색</option>
<option value="gray">회색</option>
</optgroup>
<optgroup label="유색">
<option value="red">빨강</option>
<option value="green">초록</option>
<option value="blue">파랑</option>
</optgroup>
</datalist>
<label for="comment">댓글</label>
<textarea id="comment"
name="repl"
rows="5"
cols="33">
올바른 댓글 문화를 만들어 갑시다.
</textarea>
id = label for 과 연결짓는 속성. 페이지에서 id값은 중복 될 수 없다.
name = 전체 form 에서 해당 필드가 어떤 데이터를 갖고 있는지 구분하는 역할.
rows = 한번에 보여지는 가로 줄 수(줄 수 증가 시 스크롤 생성
cols = 한번에 보여지는 글자 수 (영문 33자)
html head
에 들어가는 메타데이터
head에 들어가는 내용은 화면에 보이지 않는다.
metadata란
데이터를 설명하는 데이터
책이라는 데이터를 설명하는 지은이,출판사,발행일 등을 보여주는 것
문서제목요소
브라우저 제목 표시줄이나 페이지 탭에 보이는 문서를 정의.
오직 문자열만 사용 가능하고 다른 title 태그를 중복하여 사용할 수 없다.
페이지 제목과 SEO > 검색엔진의 결과페이지에 노출되는 순서를 결정하는 요소 중 하나가 title
=> 키워드 뭉치 스타일. 명사 나열의 제목은 검색엔진에서 광고로 인식한다.
meta 태그는 빈 요소로 여러개 사용하여 정보를 나열할 수 있다.
name 속성과 content 속성은 함께 사용해야 한다.
< meta name="" content=""/ >
meta name에는 표준메타데이터 이름을 참고하여 작성한다
meta data는 필수는 아니지만 검색엔진이 웹의 정보를 쉽고 정확하게 파악할 수 있도록 도와주는 정보이다.
application-name = 웹 페이지에서 구동중인 애플리케이션 이름 하나.
author = 문서 저작자
description = 페이지에 대한 설명. 파이어폭스, 오페라 등 몇몇 브라우저는 즐겨찾기에 해당 설명이 삽입된다.
generator = html 작성에 도움을 주는 소프트웨어 식별자.
keyword = 해시태그 같은 것
referrer = 웹페이지 링크로 이동 시 흔적을 남기는 것.
문자인코딩은 charset
으로 표기
viewport 전체 브라우저 중에서 웹 페이지를 볼 수 있는 영역
width = divece-width 웹페이지의 가로와 사용자의 디바이스 가로를 동일하게 만들으라는 의미.
initial-scale 초기비율. 실제 디바이스 비율과 웹페이지의 비율을 맞추는 것
user-scalable 손가락으로 화면을 확대-축소하는 동작을 허용할 지 여부
확대 비율은 maximum-scale과 minimum-scale을 사용하여 조절한다
외부의 리소스를 연결하기 위한 태그.
주로 스타일시트나 파비콘을 추가할 때 사용한다.
< link href="/불러오려는 소스의 경로" rel="relationship 현재 파일과 불러오려는 파일의 관계 명시 stylesheet, icon 같은 종류가 정해져있다." >
type
파일 경로를 해석하지 못하는 경우를 대비
하여 파일경로가 어떤 문자열로 구성되어 있는지를 설명해주는 것을 말한다.
type/subtype
text/html, audio/midi...
head 태그 내부에 style 태그를 작성하고 그 내부에 css 문법을 이용해 적용한다.
자바스크립트를 담을 수 있는 태그
css처럼 인라인 적용도 가능하고 외부 요소를 불러 올 수도 있다.
< script src="경로" >
< script > alert("hello world!"); < /script >
브라우저는 위에서 아래로 읽어내리는 도중
스크립트 태그를 만나면 자바스크립트를 읽느라 body의 내용을 불러오는게 늦어질 수 있다. 해서 되도록이면 body 태그의 제일 마지막에 적는 것을 권장한다.
어떤 태그에서도 적용시킬 수 있는 속성(Attribute)
label과 input을 연결해줄 때 id로 연결 할 수 있다.
유일한 식별자
로 문서 내에서 동일한 이름의 id는 재사용 할 수 없다.id와 다르게 class는 여러 요소에 중복하여 사용할 수 있고,
하나의 class에 여러 요소를 중첩하여 적용할 수 있다.
하나의 요소에만 style을 적용할 때 사용한다.
< div style="backgdround: #eeee; border: 2px solid #eeee;" >
그러나 외부 파일로 css 파일을 작성하여 적용하는 것이 권장된다.
인라인 요소로 style을 적용할 경우 외부 css 파일보다 먼저 적용된다.
하나의 태그에 추가적인 설명을 툴팁으로 보여줄 수 있다.
이때 title에 적힌 요소는 pre 태그처럼 개행이 전부 확인된다.
title 요소가 부모-자식 관계를 가질 때 부모-자식이 중복 적용되는 요소는 가장 내부(자식)요소가 적용된다.
읽는 사람을 위한 언어 명시
웹 접근성을 높이기 위한 요소로 전체 문서가 어떤 언어로 이루어 졌는지를 표현한다.
또는 페이지 일부에 다른 언어가 적용될 경우 태그에만 lang을 적용할 수도 있다.
data-*
data 속성은 사용자가 custom한 속성으로 표준이 아닌 속성을 뜻한다.
자바스크립트 적용 시 해당 요소에 대한 정보를 기입하여 자바스크립트의 이해를 올리고 접근하기 위해 암시적으로 사용하는 태그이다.
이미지를 드래그 할 수 있는지 여부를 지정할 수 있는 속성.
boolean 속성은 아니라 true=드래그 가능, false=드래그 불가능 을 표기해주어야 한다.
자바스크립트에서 '이미지클릭' '드래그' '이미지드랍' 이라는 각각의 이벤트에 따른 자바스크립트 함수를 적용할 수 있다.
무언가를 숨기거나 드러낼 때 사용하는 속성.
boolean 속성으로 작성하면 true 실행, 작성하지 않으면 기본값 false 비실행 으로 진행된다. hidden을 추가하면 해당 요소의 시각적 장식 외에도 스크린 리더 등 다른 모든 표현 방식에서 숨겨진다. 하지만 보안상의 가림을 원할 경우 이 hidden 속성을 사용하면 안된다.
또한 속성값으로 hidden을 사용하더라도 css에서 display를 사용하면 다시 화면에 보이게 된다는 점을 주의할 것.