Heading 태그: <h1></h1> 등, h6까지 있음
Paragraph 태그: <p></p>
Linebreak 태그: <br> (빈 태그)
텍스트 표현 태그: 굵게 <b>
기울여서 <i>
밑줄 <u>
중간선 <s>
. 주의! <i>
태그는 html5 에서 의미를 가지는 태그로 변경됨
Anchor 태그: <a href=""></a>
, target 속성도 자주 쓰임
의미가 없는 컨테이너 요소: <div></div> (블록)
, <span></span> (인라인)
List 요소: <ul></ul> (순서x, li를 자식 태그로 가짐)
, <ol></ol> (순서o, li를 자식 태그로 가짐)
, <dl></dl> (dd, dt의 쌍을 자식 태그로 가짐)
Image 요소: <image src="" alt="">
, width, height 속성을 사용하기도 함
Table 요소
<table>
: 표를 나타내는 태그<tr>
: 행<th>
: 제목 셀<td>
: 셀<caption>
: 표의 제목<thead>
: 제목 행 그룹화<tbody>
: 본문 행 그룹화<tfoot>
: 바닥 행 그룹화rowspan=""
: 행 병합, colspan=""
: 열 병합Form 요소
text
: 단순 텍스트 입력, placeholder 속성 사용 가능password
: 공개할 수 없는 텍스트 입력, placeholder 속성 사용 가능radio
: 중복 선택 불가한 라디오 버튼-name 속성으로 그룹화, checkedcheckbox
: 중복 선택 가능한 박스-name 속성으로 그룹화, checkedfile
: 파일을 업로드할 때 사용submit
: form 값 전송reset
: form 값 초기화image
: submit과 동작은 동일, 이미지 삽입 가능-src, alt 속성 필요button
: 아무 기능이 없는 버튼<select>
: 선택 목록 상자, 내부에서 으로 항목 나타냄, selected<textarea>
: 텍스트 여러 줄 입력 시 사용, rows(줄 수), cols(글자 수) 속성과 함께 사용 가능<button>
: select, reset, button 총 세 가지 타입<fieldset>
: 여러 개의 폼 요소를 그룹화하여 구조적으로 만듦, 보통 form의 성격에 따라 구분<legend>
: 폼 요소의 제목으로, 반드시 <fieldset>
의 자식으로 최상단에 위치해야 함<label>
: form 요소의 이름과 form 요소를 명시적으로 연결, form 요소의 id 속성값과 의 for 속성값을 같게 적어야 함<form>
태그: form 요소들을 모두 감싸는 태그, 데이터를 묶어서 실제 서버로 전송Metadata: 콘텐츠의 style(표현), script(동작)을 설정하거나 다른 문서와의 관계 등의 정보를 포함하는 요소
- base, link, meta, noscript, script, style, title 등 주로 <head>
태그 내에 들어가는 태그들
Flow: 문서에 사용되는 대부분의 요소. 태그 대부분이 여기에 해당되며 일부 Metadata 태그들은 미포함
Sectioning: 헤딩과 푸터의 범위를 결정하는 요소, 아웃라인이 있음
- article, aside, nav, section 등 모두 html5에서 새로 생긴 태그
Heading: 섹션의 헤더를 정의하는 요소. <h1>~<h6>
Phrasing: 문서의 텍스트이며 문단 내부 레벨로 마크업하는 요소
- b, i, br, a 태그 등등
Embedded: 이미지, 비디오, 플래시 등 외부 컨텐츠를 문서 내에 표현하는 요소
- audio, canvas, embed, iframe, img, math, object, svg, video 등
Interactive: 사용자와 상호작용을 하는 요소. 대표적으로 폼 요소들이 해당됨
: 브라우저가 잘 이해할 수 있도록 코딩하는 것을 말함.
마크업을 할 때는 의미에 맞는 태그, 요소를 사용하는 것이고 문서를 표현할 때는 구조화를 잘 해주는 것
<b>굵은</b>
굵은 vs <strong>중요한</strong>
중요한<i>기울어진</i>
기울어진 vs <em>강조하는</em>
강조하는<u>밑줄친</u>
밑줄친 vs <ins>새롭게 추가된</ins>
새롭게 추가된<s>중간선이 있는</s>
중간선이 있는 vs <del>삭제된</del>
<article> <aside> <figcaption> <figure> <footer> <header> <main> <mark> <nav> <section> <time>
등등...<a>
: 인라인 요소이지만 자식으로 블록 레벨 요소를 가질 수 있음h1 { color: yellow; font-size: 2em; }
h1
color: yellow;
와 font-size: 2em;
이며 마지막 선언에는 ;
를 붙이지 않아도 됨{ color: yellow; font-size: 2em; }
/* 내용 */
, 여러 줄로도 작성 가능 <div style="..."></div>
<head>
태그 내에 <style>
태그를 선언, 선택자 O <style>...</style>
<link>
태그를 통해(<head>
태그 내에 선언) 불러와 스타일을 적용 <link rel="stylesheet" href="css/style.css">
@import url("css/style.css");
h1, h2, h3 { color: yellow; }
* { color: yellow; }
, 사용을 가급적 지양: HTML의 글로벌 속성인 class 속성을 활용
<p class="foo bar">...</p>
.
기호를 사용한다. .foo { font-size: 30px; text-decoration: underline; }
.bar { color: blue; }
/* 이와 같이 하면 html 코드에 두 class의 스타일이 다 적용됨 */
: class 선택자와 유사한 방식으로 사용
<p id="bar">...</p>
#bar { background-color: yellow; }
/* 요소+class */ p.foo {...}
/* 다중 class */ .foo.bar {...}
/* id+class */ #foo.bar {...}
p[class] { color: silver; }
p[class][id] { font-size: 20px; }
p[class="foo"] { color: yellow; }
p[id="title"] { text-decoration: underline; }
[class~="bar"]
: class 속성의 값이 공백으로 구분한 "bar" 단어가 포함되는 요소 선택[class^="bar"]
: class 속성의 값이 "bar"로 시작하는 요소 선택[class$="bar"]
: class 속성의 값이 "bar"로 끝나는 요소 선택[class*="bar"]
: class 속성의 값이 "bar" 문자가 포함되는 요소 선택<div>
의 자손 요소인 <span>
요소를 선택하는 선택자이다. div span { color: red; }
>
기호를 넣는다. 다음 예시는 <div>
의 자식 요소인 <h1>
요소를 선택하는 선택자이다. div > h1 { color: red; }
+
기호를 넣는다. 다음 예시는 <div>
의 형제 요소인 <p>
요소를 선택하는 선택자이다. div + p { color: red; }
body > div table + ul { ... }
:
기호를 사용하여 나타낸다. :pseudo-class { property: value; }
:first-child
: 첫 번째 자식 요소 선택:last-child
: 마지막 자식 요소 선택 li:fitst-child {...}
li:last-child {...}
:link
: 하이퍼링크(앵커 내에 href
속성이 있는 것)이면서 아직 방문하지 않은 앵커:visited
: 이미 방문한 하이퍼링크 a:link { color: blue; }
a:visited { color: gray; }
:focus
: 현재 입력 초점을 가진 요소에 적용:hover
: 마우스 커서가 있는 요소에 적용:active
: 사용자 입력으로 활성화된 요소에 적용(순간적, ex 클릭) a:focus { background-color: yellow; }
a:hover { font-weight: bold; }
a:active { color: red; }
::
기호를 사용한다.::before
: 가장 앞에 요소를 삽입 (content
속성을 사용해 내용 입력)::after
: 가장 뒤에 요소를 삽입 (content
속성을 사용해 내용 입력)::first-line
: 요소의 첫 번째 줄에 있는 텍스트를 감싸는 요소 생성::first-letter
: 블록 레벨 요소의 첫 번째 문자를 감싸는 요소 생성 p::before { content: "###" }
p::after { content: "!!!" }
p::first-line { ... }
p::first-letter { ... }
0, 0, 0, 0
0, 1, 0, 0 : 선택자에 있는 모든 id 속성값
0, 0, 1, 0 : 선택자에 있는 모든 class 속성값, 기타 속성, 가상 클래스
0, 0, 0, 1 : 선택자에 있는 모든 요소, 가상 요소
조합자는 구체성에 영향을 주지 않는다. (>, + 등)
전체 선택자는 0, 0, 0, 0을 가진다.
1, 0, 0, 0
으로 규칙들 중 가장 큰 구체성을 갖는다. p#page { color: red !important; }
: 폰트의 색상 값을 적용할 때 사용
h1 { color: 색상 값; }
body { color:black }; /* By color names */
body { color:#000000 }; /* Hexademical colors */
body { color:#000 }; /* Hexademical -> 두 자리씩 같으면 축약 가능 */
body { color:rgb(0, 0, 0) }; /* As RGB values(R,G,B / 0~255) */
body { color:rgba(0, 0, 0, 1) }; /* (alpha / 0~1, 투명도) */
/* 이외에도 HSL values, HWB values 등 다양한 방식으로 선언 가능 */
: 요소의 배경을 컬러나 이미지로 적용할 때 사용
background-color
- 기본값: transparent
- background의 색상을 지정
background-image
- 기본값: none
- 배경으로 사용할 이미지의 경로를 지정
- 절대 경로와 상대 경로 모두 사용 가능
background-repeat
- 기본값: repeat
- 이미지의 반복 여부와 방향을 지정
- 속성값
background-position
- 기본값: 0% 0%, left top 값이 기준
- 요소에서 배경 이미지의 위치를 지정
- 속성값
background-attachment
- 기본값: scroll
- 화면 스크롤에 따른 배경 이미지의 움직임 여부를 지정
- 브라우저 성능에 영향을 미치므로 자주 사용되지는 않음
- 속성값
background 축약형
background: color image repeat attachment position;
: 요소의 실제 내용을 포함하는 영역, 크기는 내용의 너비 밑 높이
: content 영역을 감싸는 테두리 선
: 속성과 속성값에 대하여 정의하지 않으면 모두 기본값이 적용된다.
border-width: 6px 6px 3px 3px; /* top right bottom left */
border-width: 6px 3px; /* top&bottom right&left */
border-width: thin;
border-style: none solid double dotted; /* top right bottom left */
border-style: solid none; /* top&bottom right&left */
border-style: dotted;
border-color: red green yellow pink; /* top right bottom left */
border-color: blue black; /* top&bottom right&left */
border-color: orange;
border: width style color;
: content 영역과 테두리 사이의 여백, content 영역에 배경, 색 또는 이미지가 있을 때 이 영역까지 영향을 미치므로 content의 연장으로 볼 수도 있음
: 정의하지 않은 속성과 속성값의 경우에 바로 기본값이 적용되지 않고, 상하 좌우의 값이 같을 경우 합쳐서 적용할 수 있다.
+) CSS에서는 0 값에 대해 따로 단위를 적지 않는다!
padding: [-top] [-right] [-bottom] [-left];
0 10px 20px 30px /* 상, 우, 하, 좌 다름 */
0 10px 20px /* 좌, 우 같음 */
0 10px /* 상, 하 같음 & 좌, 우 같음 */
0 /* 상, 우, 하, 좌 모두 같음 */
/* 시계 방향 순서대로 적용한다고 생각하기! */
: border 바깥쪽 영역, 주변 요소와의 여백을 지정할 수 있음
margin-left: auto; margin-right:auto;
margin: [-top] [-right] [-bottom] [-left];
0 10px 20px 30px /* 상, 우, 하, 좌 다름 */
0 10px 20px /* 좌, 우 같음 */
0 10px /* 상, 하 같음 & 좌, 우 같음 */
0 /* 상, 우, 하, 좌 모두 같음 */
/* 시계 방향 순서대로 적용한다고 생각하기! */
: 인접한 두 개 이상의 수직 방향 박스의 마진이 하나로 합쳐지는 것
+ | - | auto | 단위 | |
---|---|---|---|---|
margin | O | O | O | px, %, ... |
padding | O | X | X | px, %, ... |
family-name
과 generic-family
로 구성generic-family
- 중요!family-name
으로 지정한 폰트가 사용자의 컴퓨터에 없을 때 다른 적절한 폰트를 선택할 수 있도록 몇 가지 유형의 폰트를 같이 선언해주는 것family-name
를 선언할 때 꼭 세트로 함께 선언해주어야 한다! (특히 자식 요소에서 재선언했을 때 빼먹으면 X/* 맨 마지막 선언된 폰트는 generic-family */
/* family-name은 선언 순서로 우선순위가 결정 */
font-family: Helvetica, Dotum, '돋움', sans-serif;
generic-family
예시: 줄간격을 의미하며 행간을 제어할 때 사용
: 글꼴의 크기를 지정하는 속성
: 글꼴의 굵기를 지정하는 속성
: 글꼴의 스타일을 지정하는 속성
font-weight oblique <각도>;
를 이용해 각도를 추가로 지정 가능 - 유효한 값은 -90 ~ 90도이며, 따로 각도를 지정하지 않으면 14도: 글꼴의 형태를 변환하는 속성으로, 소문자를 작은 대문자로 변환 가능
: font와 관련된 다양한 값을 한 번에 선언 가능한 축약형 속성
font: font-style font-variant font-weight font-size/line-height font-family | initial | inherit;
: 웹에 있는 글꼴을 사용자의 로컬 환경(컴퓨터)으로 다운로드하여 적용하는 속성
: 인라인 요소의 수직 정렬을 지정하는 속성
/* keyword values */
vertical-align: baseline; /* 부모 기본값 */
vertical-align: sub; /* 부모 아래 첨자 기준선 */
vertical-align: super; /* 부모 위 첨자 기준선 */
vertical-align: text-top; /* 부모 텍스트의 맨 위(Ascender 제외) */
vertical-align: text-bottom; /* 부모 텍스트의 맨 아래(Descender 제외) */
vertical-align: middle; /* 부모의 중앙에 위치 */
vertical-align: top; /* 부모의 맨 위 위치 */
vertical-align: bottom; /* 부모의 맨 아래 위치 */
/* length values - 음수 값도 사용 가능 */
vertical-align: 10em;
vertical-align: 4px;
/* percent(%) value - line-height를 기준, 음수 값 사용 가능 */
: 인라인 요소의 수평 정렬을 지정하는 속성
(선언은 블록 레벨에 하더라도 인라인 레벨에 적용됨)
: 텍스트의 들여쓰기를 지정하는 속성
: 텍스트의 꾸밈을 지정하는 속성
text-decoration: text-decoration-line text-decoration-color text-decoration-style | initial | inherit;
: 요소 내의 공백을 어떻게 처리할지 지정하는 속성
속성값 | 공백 | 개행 | 자동 줄바꿈 |
---|---|---|---|
normal | 무시 | 무시 | 필요한 경우 |
nowrap | 무시 | 무시 | x |
pre | 표현 | 표현 | x |
pre-line | 무시 | 표현 | 필요한 경우 |
pre-wrap | 표현 | 무시 | 필요한 경우 |
: 자간을 지정하는 속성
: 단어 사이의 간격을 지정하는 속성
: 단어가 라인 끝에 나올 경우 어떻게 처리할지 중단점을 지정하는 속성
: 요소를 벗어난 단어의 줄바꿈(중단점)을 지정하는 속성
: 요소의 렌더링 박스 유형을 결정하는 속성
display | width | height | margin | padding | border |
---|---|---|---|---|---|
block | O | O | O | O | O |
inline | X | X | 좌우 | O (설명) | O (설명) |
inline-block | O | O | O | O | O |
사실 inline 요소의 padding과 border는 상하좌우 모두 적용된다.
하지만 상하 padding, border는 line-box에는 영향을 주지 못하므로 부모 요소의 박스에 반영되지 않고 인접한 다른 line-box에도 반영되지 않아, 콘텐츠가 겹칠 수 있기 때문에 실무에서는 잘 사용되지 않는다.
: 요소의 화면 표시 여부를 지정하는 속성
visibility: hidden;
과 display: none;
의 차이점display: none;
은 요소가 아예 렌더링되지 않으므로 웹페이지가 그 요소와 관련된 정보를 제공하지 않으나, visibility: hidden;
은 요소가 보이지는 않지만 렌더링되어 화면에 공간을 차지하고 있다.: 요소를 float(보통의 흐름에서 벗어나게 함) 시킬지 지정하는 속성
: 요소를 floating 된 요소의 영향에서 벗어나게 하는 속성
허용
비허용
비허용
비허용
: 요소의 위치를 원하는 곳으로 지정할 때 사용하는 속성
top
/bottom
/left
/right
속성으로 사용 가능: 요소가 겹치는 순서(쌓임 순서 또는 stack order)를 지정하는 속성
: 각 미디어 매체에 따라 다른 스타일 시트를 적용할 수 있게 만드는 것
( 미디어 매체: 모니터와 같은 스크린 매체, 프린트, 스크린 리더기 등등 )
@media mediaqueries { /* style rules */ }
mediaqueries
를 미디어 쿼리 구문이라고 한다.media_query_list
: S* [media_query [ ',' S* media_query ]* ]?
; /* 여러 개의 미디어 쿼리로 이루어진 리스트로 작성 가능하며, 쉼표로 구분 */
media_query
: [ONLY | NOT]? S* media_type S* [ AND S* expression ]*
| expression [ AND S* expression ]*
; /* A형태 - 미디어 타입에 and 키워드로 표현식 붙일 수 있음(생략 가능)
미디어 타입 앞에 only, not 키워드가 올 수 있다.
B형태 - 미디어 타입 없이 미디어 표현식이 바로 나올 수 있고
and 키워드로 계속 나올 수 있다.
(미디어 타입이 명시되지 않으면 all로 간주) */
expression
: '(' S* media_feature S* [ ':' S* expr ]? ')' S*
; /* 괄호로 감싸야 하며, 특성 이름과 해당 값으로 이루어진다.
특성 이름과 값을 : 기호로 연결하며 특성 이름만 사용하는 것도 가능 */
@media screen { ... }
/* 미디어 타입이 screen이면 적용 */
@media screen and (min-width: 768px) { ... }
/* 미디어 타입이 screen이고 width가 768px 이상이면 적용 */
@media (min-width: 768px) and (max-width: 1024px) { ... }
/* and로 연결된 모든 표현식이 참이면 적용 */
@media (color-index)
/* 미디어 장치가 color-index를 지원하면 적용 */
@media screen and (min-width: 768px), screen and (orientation: portrait), ...
/* 쉼표로 연결된 미디어 쿼리 중 하나라도 참이면 적용(and와 반대) */
@media not screen and (min-width: 768px)
/* not 키워드는 하나의 media_query 전체를 부정
(not screen) and (min-width: 768px) X
not (screen and (min-width: 768px)) O */
@media not screen and (min-width: 768px), print
/* 첫 번째 미디어 쿼리에만 not 키워드 적용 */
@media screen and (color)
<style>
태그 내부에 사용 가능, 가장 보편적<link rel="stylesheet" media="screen and (color)" href="example.css">
<link>
태그의 media 속성에 미디어 쿼리 선언, 미디어 쿼리가 참이면 뒤의 css 파일 규칙 적용@import url(example.css) screen and (color);
<style>
태그 내부에 사용 가능, @import문 뒤에 미디어 쿼리 선언: 브라우저가 화면을 나타내는 가상의 화면 사이즈
<head>
태그 내에 위치하는 <meta>
태그에 선언<meta name="viewport" content=" 뷰포트의 설정 값" >
<!-- 대부분의 모바일 웹 사이트의 뷰포트 설정 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">