๐ ์ค๋ ๋ฐฐ์ด ๋ด์ฉ
- HTML
- CSS
๐ HTML - ํ์ต๋ชฉํ
- HTML์ด "๊ตฌ์กฐ๋ฅผ ํํํ๋ ์ธ์ด"๋ผ๋ ๊ฒ์ ์ดํดํ๊ณ , ๊ทธ ๊ธฐ๋ณธ ๊ตฌ์กฐ์ ๋ฌธ๋ฒ์ ์ค๋ช ํ ์ ์๋ค.
- HTML์ด ๋งํฌ์ ์ธ์ด๋ผ๋ ๊ฒ์ ์ค๋ช ํ ์ ์๋ค.
- ์์ฃผ ์ฌ์ฉ๋๋ HTML ์์(Element)๊ฐ ๋ฌด์์ธ์ง ์๊ณ ์ฐจ์ด๋ฅผ ์ค๋ช
ํ ์ ์๋ค.
<div>, <span>, <ul>, <ol>, <li>, <input>
๋ฑ
- ์๋งจํฑ ํ๊ทธ๊ฐ ๋ฌด์์ธ์ง ์ดํดํ๊ณ , ์ ์ฌ์ฉํ๋ ์ง ์ค๋ช ํ ์ ์๋ค.
- ์น ๋ฌธ์์ ๊ตฌ์กฐ์ ๋ด์ฉ์ HTML๋ก ์์ฑํ ์ ์๋ค.
๐ HTML
- HyperText Markup Language
- ์นํ์ด์ง์ ํ์ ๋ง๋๋ ๋งํฌ์ ์ธ์ด
- tag๋ค์ ์งํฉ (
<div>, <span>, <ul>, <ol>, <li>, <input>
) - ํธ๋ฆฌ ๊ตฌ์กฐ
๐ ์์ฃผ ์ฌ์ฉ๋๋ ํ๊ทธ
ํ๊ทธ | ์ค๋ช |
<div> | ํ์ค์ ์ฐจ์ง ( ์ค๋ฐ๊ฟ O ) |
<span> | ์ปจํ ์ธ ํฌ๊ธฐ๋งํผ ๊ณต๊ฐ์ ์ฐจ์ง ( ์ค๋ฐ๊ฟ X ) |
<img> | ์ด๋ฏธ์ง ํ๊ทธ |
<a> | ๋งํฌ ํ๊ทธ |
<ul>, <li> | ์์๊ฐ ์๋ ๋ฆฌ์คํธ, ๋ฆฌ์คํธ ์์ดํ |
<input> | ์ ๋ ฅํผ ( ํ ์คํธ ๋ฐ์ค, ๋ผ๋์ค ๋ฒํผ, ์ฒดํฌ ๋ฐ์ค ) |
<textarea> | ์ฌ๋ฌ์ค ์ ๋ ฅ ํ ์คํธ ๋ฐ์ค |
<button> | ๋ฒํผ ํ๊ทธ |
<h1>, <h2>, ... | ์ซ์๊ฐ ์์์๋ก ๊ธ์จ ํฌ๊ธฐ๊ฐ ํฐ ์ ๋ชฉ ํ๊ทธ |
๐ Self-Closing Tag
No. | Tag | No. | Tag |
1 | area | 10 | source |
2 | base | 11 | link |
3 | br | 12 | wbr |
4 | col | 13 | param |
5 | meta | 14 | track |
6 | embed | 15 | command |
7 | hr | 16 | keygen |
8 | img | 17 | menuitem |
9 | input |
๐ CSS - ํ์ต๋ชฉํ
- CSS์ ์ฌ์ฉ ๋ชฉ์ ์ ์ดํดํ๊ณ , ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ๊ณผ ๊ตฌ์กฐ๋ฅผ ์ค๋ช ํ ์ ์๋ค.
- HTML์ CSS๋ฅผ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ดํดํ ์ ์๋ค.
- ์ง์ HTML ์์ CSS๋ฅผ ์ ์ํ๋ ๊ฒ์ ๊ถ์ฅํ์ง ์๋ ์ด์ ๋ฅผ ์ค๋ช ํ ์ ์๋ค.
- CSS๋ฅผ ์ด์ฉํด ํ ์คํธ๋ฅผ ๊พธ๋ฐ ์ ์๋ค.
- ๊ธฐ๋ณธ์ ์ธ CSS ๋ฐ์ค ๋ชจ๋ธ์ ์ดํดํ๊ณ ์ค๋ช ํ ์ ์๋ค.
- MDN, W3C School ๋ฑ์ ๋ ํผ๋ฐ์ค ์ฌ์ดํธ๋ฅผ ์ด์ฉํด CSS ์์ฑ์ ๊ฒ์ํ๊ณ ์ฌ์ฉํ ์ ์๋ค.
๐ CSS
- Cascading Style Sheets
- ์น ํ์ด์ง ์คํ์ผ ๋ฐ ๋ ์ด์์์ ์ ์ํ๋ ์คํ์ผ์ํธ ์ธ์ด
- ์ข์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๊ธฐ ์ํ ๋๊ตฌ
- ์น ๊ฐ๋ฐ์๊ฐ ๋ฐฐ์ฐ๊ธฐ ๊ฐ์ฅ ์ฌ์ด ๋์์, ๊ฐ์ฅ ์ด๋ ค์ด ์ธ์ด
๐ฑ ์ฌ์ฉ์ ์ธํฐํ์ด์ค (UI, User Interface)
- ์ปดํจํฐ์ ๋ณต์กํ ๋ด๋ถ ์๋์๋ฆฌ๋ฅผ ์ดํดํ๊ฑฐ๋ CLI ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ง ๋ชปํด๋ ์ผ๋ฐ ์ฌ์ฉ์๊ฐ ์ฝ๊ฒ ์ปดํจํฐ์๊ฒ ์๋ํ ํ๋์ ๋ช ๋ นํ ์ ์๊ฒ ๋ง๋ ์ธํฐํ์ด์ค
- ์ข์ ์ฌ์ฉ์ ๊ฒฝํ (UX, User Experience) ์ ์ข์ UI์์ ๋์จ๋ค.
๐ CSS ๋ฌธ๋ฒ ๊ตฌ์ฑ
์ ๋ ํฐ (Selector) {
์์ฑ๋ช (Property): ์์ฑ๊ฐ (Value);
}
body {
color: blue;
font-size: 30px;
}
๐ CSS ์ ์ฉ
HTML์์ CSS ํ์ผ ์ฐ๊ฒฐ
<link rel="stylesheet" href="index.css" />
HTML์์ ์ง์ ์์ฑ ( ๊ด์ฌ์ฌ ๋ถ๋ฆฌ ์ธก๋ฉด์์ ๊ถ์ฅ๋์ง ์์ )
<style>
body {
color: blue;
}
</style>
์ธ๋ผ์ธ ์คํ์ผ ( ๊ด์ฌ์ฌ ๋ถ๋ฆฌ ์ธก๋ฉด์์ ๊ถ์ฅ๋์ง ์์ )
<nav style="background: #eee; color: blue">...</nav>
๐ ์ ๋ ํฐ
ํ๊ทธ ์ด๋ฆ์ผ๋ก ์ ์ฉ
li {
color: blue;
}
์์ด๋๋ก ์ ์ฉ
#abcd {
color: blue;
}
ํด๋์ค๋ก ์ ์ฉ
.abcd {
color: blue;
}
id | class |
#์ผ๋ก ์ ํ | .์ผ๋ก ์ ํ |
ํ ๋ฌธ์์ ๋จ ํ๋ | ์ฌ๋ฌ ์์ ๊ฐ๋ฅ |
ํน์ ์์์ ์ด๋ฆ ๋ถ์ด๋๋ฐ ์ฌ์ฉ | ์คํ์ผ์ ๋ถ๋ฅ์ ์ฌ์ฉ |
๊ทธ ์ธ
/* ์ ์ฒด ์
๋ ํฐ */
* { }
/* ์ฌ๋ฌ ํ๊ทธ ์ ํ */
section, h1 { }
/* attribute ์
๋ ํฐ */
a[href] { }
p[id="only"] { }
p[class~="out"] { }
p[class|="out"] { }
section[id^="sect"] { }
div[class$="2"] { }
div[class*="w"] { }
/* ํ์ ์
๋ ํฐ */
header h1 { }
/* ์์ ์
๋ ํฐ */
header > p { }
/* ์ธ์ ํ์ ์
๋ ํฐ */
section + p { }
/* ํ์ ์
๋ ํฐ */
section ~ p { }
/* ๊ฐ์ ํด๋์ค */
a:link { }
a:visited { }
a:hover { }
a:active { }
a:focus { }
/* ์์ ์ํ ์
๋ ํฐ */
input:checked + span { }
input:enabled + span { }
input:disabled + span { }
/* ๊ตฌ์กฐ ๊ฐ์ ํด๋์ค ์
๋ ํฐ */
p:first-child { }
ul > li:last-child { }
ul > li:nth-child(2n) { }
section > p:nth-child(2n+1) { }
ul > li:first-child { }
li:last-child { }
div > div:nth-child(4) { }
div:nth-last-child(2) { }
section > p:nth-last-child(2n + 1) { }
p:first-of-type { }
div:last-of-type { }
ul:nth-of-type(2) { }
p:nth-last-of-type(1) { }
/* ๋ถ์ ์
๋ ํฐ */
input:not([type="password"]) { }
div:not(:nth-of-type(2)) { }
/* ์ ํฉ์ฑ ํ์ธ ์
๋ ํฐ */
input[type="text"]:valid { }
input[type="text"]:invalid { }
๐ ํ ์คํธ ์์ฑ
.box {
color: #155724; /* ๊ธ์ ์์ */
background-color: #d4edda; /* ๋ฐฐ๊ฒฝ ์์ */
border-color: #c3e6cb; /* ํ
๋๋ฆฌ ์์ */
font-family: "SF Pro KR", "MalgunGothic", "Verdana"; /* ๊ธ๊ผด */
font-size: 24px; /* ๊ธ์ ํฌ๊ธฐ */
}
๊ทธ ์ธ
- ์ ๋ ๋จ์: px, pt ๋ฑ
- ์๋ ๋จ์: %, em, rem, ch, vw, vh ๋ฑ
- ๊ตต๊ธฐ: font-weight
- ๋ฐ์ค, ๊ฐ๋ก์ค: text-decoration
- ์๊ฐ: letter-spacing
- ํ๊ฐ: line-height
- ๊ฐ๋ก ์ ๋ ฌ: text-align
- ์ธ๋ก ์ ๋ ฌ: vertical-align (display ์์ฑ์ด ๋ฐ๋์ table-cell)
๐ ๋ฐ์ค ๋ชจ๋ธ
์ค๋ฐ๊ฟ์ด ๋๋ ๋ฐ์ค
- block
- <h1>, <p>
์ค๋ฐ๊ฟ ์์ด ์์ผ๋ก ๋ถ๋ ๋ฐ์ค
- inline, inline-block
- <span>: inline
span {
background: yellow;
display: inline-block; /* inline-block์ผ๋ก ๋ฐ๊พธ๋ ์ฝ๋ */
width: 100px;
height: 100px;
}
block | inline-block | inline | |
์ค๋ฐ๊ฟ | O | X | X |
๊ธฐ๋ณธ ๋๋น (width) | 100% | ๊ธ์๊ฐ ์ฐจ์งํ๋ ๋งํผ | ๊ธ์๊ฐ ์ฐจ์งํ๋ ๋งํผ |
width, height ์ฌ์ฉ ๊ฐ๋ฅ | O | O | X |
๐ ๋ฐ์ค์ ๊ตฌ์ฑ ์์
- border (ํ ๋๋ฆฌ)
- margin (์ธ๋ถ ์ฌ๋ฐฑ)
- padding (๋ด๋ถ ์ฌ๋ฐฑ)
* {
box-sizing: border-box; /* ์ฌ๋ฐฑ๊ณผ ํ
๋๋ฆฌ๋ฅผ ํฌํจํ ํฌ๊ธฐ๋ก ๊ณ์ฐ */
}
p {
border: 1px solid blue; /* 1px์ ํ๋์ ์ค์ ํ
๋๋ฆฌ ์ค์ */
margin: 10px 20px 30px 40px; /* top, right, bottom, left ์ธ๋ถ ์ฌ๋ฐฑ ์ค์ */
margin: 10px 20px; /* top & bottom, left % right ์ธ๋ถ ์ฌ๋ฐฑ ์ค์ */
margin: 10px; /* ๋ชจ๋ ๋ฐฉํฅ ์ธ๋ถ ์ฌ๋ฐฑ ์ค์ */
/* ํน์ ๋ฐฉํฅ ์ธ๋ถ ์ฌ๋ฐฑ ์ค์ */
margin-top: 10px;
margin-right: 20px;
margin-bottom: 30px;
margin-left: 40px;
padding: 10px 20px 30px 40px; /* top, right, bottom, left ๋ด๋ถ ์ฌ๋ฐฑ ์ค์ */
/* ๋ฐ์ค๋ฅผ ๋ฒ์ด๋๋ ์ปจํ
์ธ ์ฒ๋ฆฌ */
height: 40px; /* ๋์ด๋ณด๋ค ์๊ฒ ์ค์ */
overflow: auto; /* ๋ฐ์ค๋ณด๋ค ํฌ๋ฉด ์คํฌ๋กค ํ์ */
}