๐ HTML&CSS ํ์ต ์ ๋ธ๋ผ์ฐ์ ๋ ๋๋ง์ด๋?
โ ๋ธ๋ผ์ฐ์ ๋ ํ ์คํธ๋ก ์ด๋ฃจ์ด์ง HTML, CSS, JavaScript ํ์ผ์ ์ฝ๊ณ ์น ํ์ด์ง๋ฅผ ๊ทธ๋ ค๋ธ๋ค.
โ ์น ํ์ด์ง๋ฅผ ๊ทธ๋ ค๋ด๋ ๊ณผ์ ์ "ํ์ฑ", "๋ ๋๋ง" ์์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
โ ํ์ฑ ์์ ์ HTML, CSS, JavaScript ๋ฑ์ ๋ฌธ์๋ฅผ ์ฝ๊ณ ์ด๋ฅผ ์กฐ์ํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ๋ก ๋ณํํ๋ ๊ณผ์
โ ๋ ๋๋ง ์์ ์ ํ์ฑ ์์ ์ผ๋ก ์์ฑ๋ ์๋ฃ๊ตฌ์กฐ์ ์ผ์ข ์ธ ๋ ๋ ํธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ธ๋ผ์ฐ์ ํ๋ฉด์ ๊ทธ ๋ด์ฉ์ ์๊ฐ์ ์ผ๋ก ์ถ๋ ฅํ๋ ๊ณผ์
๐ ํ์ฑ๊ณผ ๋ ๋๋ง ๊ณผ์
โ HTML, CSS ๋ฌธ์๋ ํ ์คํธ๋ก ์ด๋ฃจ์ด์ ธ ์์ด, ๋ธ๋ผ์ฐ์ ๊ฐ ํด๋น ์๋ฃ๋ฅผ ์ฌ์ฉํด ์ฌ์ฉ์๊ฐ ์๊ฐ์ ์ผ๋ก ์ธ์งํ ์ ์๋ ๋ด์ฉ์ผ๋ก ๋ ๋๋งํ๋ ค๋ฉด, ์ฐ์ ์ ๋ฌ๋ ๋ฌธ์๋ฅผ ํ์ฑํ๊ณ , ์ด๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๋ ๊ณผ์ ์ด ํ์ํ๋ค.
โ ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ์์ง์ด ์์ ์์ ์ ๋ด๋นํ๋ฉฐ, ์๋ฒ๋ก ๋ถํฐ ์๋ต ๋ฐ์ HTML ํ์ผ์ ํ์ฑํ๊ณ , ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ ์ ์๋ ๋ฌธ์์ธ DOM(Document Object Model)์ ์์ฑํ๋ค.
โ ํ์ฑ ๊ณผ์ ์ ์์์๋ถํฐ ์๋๋ก ์์ฐจ์ ์ผ๋ก ์งํ๋๋ค๊ฐ CSS๋ฅผ ๋ถ๋ฌ์ค๋ ํ๊ทธ(link, style)๋ฅผ ๋ง๋๋ฉด ๋ ๋๋ง ์์ง์ DOM์ ์์ฑ์ ์ผ์์ ์ผ๋ก ์ค๋จ, CSS ํ์ผ์ ์์ฒญํด ํด๋น ๋ด์ฉ์ ๋ฐ์์ค๊ณ ์ด๋ฅผ ํ์ฑํด์ CSSOM(CSS Object Model)์ ์์ฑํ๋ค.
โ CSS์ ํ์ฑ์ด ์๋ฃ๋๋ฉด, ๋ ๋๋ง ์์ง์ ๋ค์ ์ค๋จ๋์๋ ์ง์ ์ผ๋ก ๋์๊ฐ์ ํ์ฑ์ ์งํํ๊ณ , ์ด๋ฐ ๊ณผ์ ์ผ๋ก ์๋ฃ๋ DOM Tree์ CSSOM Tree๋ฅผ ๊ฒฐํฉํด์ ๋ ๋ ํธ๋ฆฌ๋ฅผ ๋ง๋ ๋ค.
โ ๋ง์ผ, script ํ๊ทธ๋ฅผ ๋ง๋๊ฒ ๋๋ฉด, DOM์ ์์ฑ์ ์ค๋จํ๊ณ JavaScript ๋ฆฌ์์ค๋ฅผ ์์ฒญํด์ ๋ฐ์์ค๊ณ ํ์ฑํ๋ค.
โ ํด๋น ๊ณผ์ ์ ๋ด๋นํ๋ ๊ฒ์ ๋ ๋๋ง ์์ง์ด ์๋ JavaScript ์์ง์ด๋ฉฐ, JavaScript ์ฝ๋ ๋ด๋ถ์ DOM์ด๋ CSSOM์ ์กฐ์ํ๋๋ก ๋์ด ์๋ค๋ฉด, ๊ธฐ์กด์ ์์ฑ๋์๋ DOM/CSSOM์ ๋์ ์ผ๋ก ๋ณ๊ฒฝํ๋ค.
โ ๋ง๋ค์ด์ง ๋ ๋ ํธ๋ฆฌ๋ฅผ ๋ฐํ์ผ๋ก ํ๋ฉด์ ๋ ๋๋งํ๋ค.
๐ฅ script ํ๊ทธ๊ฐ ์ ์ผ ๋ง์ง๋ง์ ์์นํด์ผ ํ๋ ์ด์
๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ๊ณผ์ ์ HTML ๋ฌธ์๋ก๋ถํฐ ์์ํ๊ณ , ํ์ฑํ๋ ๊ณผ์ ์์ CSS๋ JavaScript ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํด์ผ ํ ๊ฒฝ์ฐ DOM ์์ฑ์ ์ค๋จํ๊ณ ๋ฆฌ์์ค์ ํด์์ผ๋ก ๋์ด๊ฐ๋ค. ๋ง์ผ DOM ์์ฑ์ด ์๋ฃ๋์ง ์์ ์ํ๋ก JavaScript ๋ฆฌ์์ค๋ก ๋์ด๊ฐ์ ์์ง ์์ฑ๋์ง ์์ DOM์ ์กฐ์ํ๋ ค๊ณ ํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๋ค. ๋ฐ๋ผ์, script ํ๊ทธ๋ฅผ body ํ๊ทธ์ ๊ฐ์ฅ ํ๋จ์ ์์น์ํค๋ฉด, ์ด๋ฏธ ์์ฑ๋ DOM์ ๋ณ๊ฒฝํ๊ธฐ ๋๋ฌธ์, ๋ฌธ์ ๊ฐ ์๊ธฐ์ง ์๊ณ ํ์ด์ง์ ๋ก๋ฉ ์๊ฐ์ด ๋จ์ถ๋๋ค.
๐ HTML (HyperText Markup Language)
โผ ์น ํ์ด์ง๋ฅผ ๋ง๋ค ๋,์ฌ์ฉํ๋ ์ธ์ด
โผ .html ํ์
์ฌ๊ธฐ์ Markup Language๋, ์๋ฃ๋ค์ด ์ด๋ป๊ฒ ์๊ฒผ๋ ๊ตฌ์กฐ๋ฅผ ํํํ๊ธฐ ์ํ ์ธ์ด์ด๋ค.
๐ ๊ธฐ๋ณธ๊ตฌ์กฐ
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<p>์๋
ํ์ธ์</p>
</body>
</html>
๐ ์ค์๊ฐ ๋๋ฒ๊น ํ๊ธฐ(VScode)
โ Live Server Install
โ html ํ์ผ ์ฐ ํด๋ฆญ ํ Open with Live Server ํด๋ฆญํ๊ธฐ
๐ Html ๊ธฐ๋ณธ ํ๊ทธ
ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ ์ด์ : HTML์ Markup Language๋ก, ์๋ฃ๊ฐ ์ด๋์ ์ด๋ป๊ฒ ๋ฐฐ์น๋์ด ์๋ ํํํ๊ธฐ ์ํ ์ธ์ด์ด๊ธฐ ๋๋ฌธ์ด๋ค.
โ p ํ๊ทธ
โผ ๋ณธ๋ฌธ์ ์์ฑํ ๋ ์ฌ์ฉํ๋ค.
โ h ํ๊ทธ
โผ ์ ๋ชฉ์ ์์ฑํ ๋ ์ฌ์ฉํ๋ค.
โผ h1, h2, h3 ๋ฑ ๊ธ์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์๋ค.
โ img ํ๊ทธ
โผ ์ด๋ฏธ์ง๋ฅผ ๋ํ๋ผ ๋ ์ฌ์ฉํ๋ค.
โผ src ์์ฑ์ ์ฌ์ฉํด์ ์ด๋ฏธ์ง ๊ฒฝ๋ก๋ฅผ ๊ธฐ์ ํ๋ค.
โ button ํ๊ทธ
โผ ๋ฒํผ์ ์์ฑํ ๋ ์ฌ์ฉํ๋ค.
โ a ํ๊ทธ
โผ ๋งํฌ๋ฅผ ๊ธฐ์ ํ ๋ ์ฌ์ฉํ๋ค.
โผ href ์์ฑ์ ์ฃผ์๋ฅผ ๊ธฐ์ ํ๋ค.
โ ul ํ๊ทธ / ol ํ๊ทธ / li ํ๊ทธ
โผ ๋ฆฌ์คํธ๋ฅผ ๋ํ๋ผ ๋ ์ฌ์ฉํ๋ค.
โผ ul์ unordered list๋ก ์์ ๋๊ทธ๋ผ๋ฏธ๊ฐ ๋ถ๋๋ค.
โผ ol์ ordered list๋ก ์์ ๋ฒํธ๊ฐ ๋ถ๋๋ค.
โผ li์ list item์ผ๋ก ๋ฆฌ์คํธ ๋ด์ฉ์ ๊ธฐ์ ํ๋ค.
โ span ํ๊ทธ
โผ ๊ธ์๋ฅผ ๊ฐ์ ๋ ๋ณ ๋ป ์์ด ์ฌ์ฉํ๋ค.
โ div ํ๊ทธ
โผ ๊ณต๊ฐ์ ๋ฃ์ ๋ ์ฌ์ฉํ๋ค. (์ฌ๊ฐํ ํํ์ ๋ณ๋ ๊ณต๊ฐ์ด ์์ฑ๋๋ค.)
โผ ํ๋ฉด ๋ถํ ์ญํ
โ nav ํ๊ทธ
โผdiv์ ๋์ผ ๊ธฐ๋ฅ์ด์ง๋ง, navbar๋ผ๋ ๊ฒ์ ๋ช ์ํ ์ ์๋ค.
โ form ํ๊ทธ
โผ ์์ฑํ ๋ด์ฉ์ ์๋ฒ๋ก ์ ๋ฌํ๋ ์ญํ
โผ action ์์ฑ์ผ๋ก ์ด๋ค ์๋ฒ ๊ฒฝ๋ก๋ก ์ ๋ฌํ ์ง ์ค์ ํ ์ ์๋ค.
โผ method ์์ฑ์ผ๋ก ์ด๋ค ๋ฐฉ์์ผ๋ก ์๋ฒ์ ์ ๋ฌํ ์ง ์ค์ ํ ์ ์๋ค.
โผ type ์์ฑ์ผ๋ก ์ด๋ค ํ์ ์ ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ์์ง ์ค์ ํ ์ ์๋ค.
โ table ํ๊ทธ / tr ํ๊ทธ / td ํ๊ทธ / th ํ๊ทธ / thead ํ๊ทธ / tbody ํ๊ทธ
โผ table ํ๊ทธ ํ๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉํ๋ค.
โผ tr ํ๊ทธ ๊ฐ๋ก ์ค์ ๋ง๋ค ๋ ์ฌ์ฉํ๋ค.
โผ td ํ๊ทธ ์ธ๋ก ์ค์ ๋ง๋ค ๋ ์ฌ์ฉํ๋ค.
โผ th ํ๊ทธ ์ ๋ชฉ ์ฉ ์ด์ ๋ง๋ค ๋ ์ฌ์ฉํ๋ค.
โผ thead ํ๊ทธ ์ ๋ชฉ ํ์ ๋ฃ์ ๋ ์ฌ์ฉํ๋ค.
โผ tbody ํ๊ทธ ๋ด์ฉ ํ์ ๋ฃ์ ๋ ์ฌ์ฉํ๋ค.
โโ ํ๊ทธ ์์ ์์ฑ์ ๋ฃ์ ์ ์๊ณ , ํ๊ทธ ์์ ํ๊ทธ๋ฅผ ๋ฃ์ ์๋ ์๋ค.
<img src="html_part_1_img.png" />
<p>๊ตฌ๊ธ <a href="https://google.com">๋งํฌ</a></p>
๐ Html ํ๊ทธ ๊พธ๋ฏธ๊ธฐ
style ์์ฑ์ ์ฌ์ฉํด์ ๊พธ๋ฐ ์ ์๋ค.
โ div ์คํ์ผ๋ง ๋ฐฉ๋ฒ
โผ margin: ํ๊ทธ์ ์ธ๋ถ์ ์ํ์ข์ฐ ์ฌ๋ฐฑ
โผ padding: ํ๊ทธ ๋ด๋ถ์ ์ํ์ข์ฐ ์ฌ๋ฐฑ
โผ border: ํ ๋๋ฆฌ (๋๊ป, ์ข ๋ฅ, ์์)
โผ border-radius: ํ ๋๋ฆฌ ๋ฅ๊ธ๊ฒ (๋๊ป)
โผ box-shadow: ๋ฐ์ค์ ๊ทธ๋ฆผ์ ์ฃผ๊ธฐ (x, y, ์์)
โผ display: block์ด ๊ธฐ๋ณธ์ผ๋ก ์ค์ ๋์ด ์๋ค.
โ display: block์ ๊ฐ๋กํ์ ์ ๋ถ ์ฐจ์งํ๋ค.
โผ ์ผ๋ถ ์คํ์ผ์ inherit(์์)๋๋ค. -> ๋ถ๋ชจ ํ๊ทธ์ ์คํ์ผ์ด ์์ ํ๊ทธ์๋ ์ ์ฉ๋๋ค.
โ font-size, color...
โ ๊ธ์ ์คํ์ผ๋ง ๋ฐฉ๋ฒ
โผ ํฐํธ ์ฌ์ด์ฆ - font-size: 16px
โผ ํฐํธ ์ข ๋ฅ - font-family : 'gulim'
โผ ํฐํธ ์์ - color: red
โผ ์๊ฐ ๊ฐ๊ฒฉ - letter-spacing: 1px
โผ ์ ๋ ฌ - text-align: center
โผ ๊ธ์ ๊ตต๊ธฐ - font-weight: 100~900
โผ idth, height ์ด์ ๋์ด๊ฐ๋ ๋งํผ ์คํฌ๋กค๋ก ๋ณ๊ฒฝํ๊ธฐ - overflow-y: scroll
โผ ์ผ๋ถ ์คํ์ผ๋ง
<p><span style="color: red">Kafka</span>๋ ๋ฉ์์ง ๋ธ๋ก์ปค ํ๋ก์ ํธ์ด๋ค.</p>
โ ๋ชจ๋ ๋ฐฉ๋ฒ์ ์ธ์ฐ๋ ๊ฒ๋ณด๋ค ํ์ํ ๋๋ง๋ค ๊ฒ์ํด์ ์ ์ฉํ๋ ๊ฒ์ด ์ข์ ๊ฒ ๊ฐ๋ค.
๐ CSS ํ์ผ ์ ์ฉํ๊ธฐ
โ style ์์ฑ์ css ํ์ผ๋ก ๋ง๋ค์ด์ ํ๊ทธ์ ์ ์ฉํ ์ ์๋ค.
โ header ํ๊ทธ ์์ <link href="css ํ์ผ ๊ฒฝ๋ก"> ์ ๋ ฅ ํ, rel ์์ฑ์ผ๋ก "stylesheet" ์ ๋ ฅ
<head>
<meta charset="UTF-8" />
<title>Document</title>
<link href="css/profile.css" rel="stylesheet" />
</head>
โ .css ํ์ผ ์์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค.
.profile_image {
width: 200px;
display: block;
margin-left: auto;
margin-right: auto;
}
โ class ์์ฑ์ ํด๋น ํด๋์ค ์ด๋ฆ์ ๋ฃ์ด์ค๋ค.
<img class="profile_image" src="html_part_1_img.png" />
๐ฅ CSS ์ ํ์(selector)
1. ํ๊ทธ ์ ํ์
{tag_name} {
~~~
}
2. ํด๋์ค ์ ํ์
.{class_name} {
~~~
}
3. ์์ด๋ ์ ํ์
#{id_name} {
~~~
}
โผ ํด๋์ค ์ ํ์ vs ์์ด๋ ์ ํ์: ํ์ฌ๋ ํด๋์ค ์ ํ์๋ฅผ css ์ ์ฉ์ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
โผ Css ์ ์ฉ ์ฐ์ ์์: style ์์ฑ > ์์ด๋ > ํด๋์ค > ํ๊ทธ
โผ selector ๋ฌธ๋ฒ ์ค ๊ณต๋ฐฑ์ ๋ฃ์ผ๋ฉด ~ ์์ ์๋ ๋ชจ๋ ์์ ํ๊ทธ์ style์ ์ค ์ ์๋ค.
.navbar li {
display: inline-block;
}
โผ selector ๋ฌธ๋ฒ ์ค >์ ๋ฃ์ผ๋ฉด ~ ์์ ์๋ ์ง๊ณ ์์ ํ๊ทธ์ style์ ์ค ์ ์๋ค.
.navbar>li {
display: inline-block;
}
๐ ๋ ์ด์์ ๋ง๋ค๊ธฐ
div ํ๊ทธ๋ default๋ก display: block์ด๊ธฐ ๋๋ฌธ์, ๋ชจ๋ ํ์ ๋ค ์ฐจ์งํด ์ฌ๋ฌ ๊ฐ๋ฅผ ์ค๋ณต ์ ๋ ฅํ๋ฉด ์๋๋ก ์ฝ์ ๋๋ค.
โ float ์ฌ์ฉ
โผ float: left -> width ๋งํผ ๋ถ ๋ ์ ์ผ์ชฝ์ ๋ฑ ๋ถ์ธ๋ค.
โผ float: right-> width ๋งํผ ๋ถ ๋ ์ ์ค๋ฅธ์ชฝ์ ๋ฑ ๋ถ์ธ๋ค.
โผ clear: both-> float ๋ค์ ์์ฑ์ ๋ฃ์ผ๋ฉด, ๋ถ ๋ฌ ๋ถ๋ถ ์๋์ ๋ฐฐ์น์ํจ๋ค.
โ float๋ฅผ ์ฌ์ฉํ ๋ค์ ์์ฑ์ ๋ณดํต ์ ์ฉํ๋ค.
.header {
width: 100%;
height: 150px;
background-color: aquamarine;
}
.left-menu {
width: 30%;
height: 500px;
background-color: blue;
float: left;
}
.right-menu {
width: 60%;
height: 500px;
background-color: crimson;
float: right;
}
.footer {
width: 100%;
height: 150px;
background-color: gray;
clear: both;
}
โ inline์ฌ์ฉ
โผ display: inline-block -> ๋ด ํฌ๊ธฐ ๋งํผ๋ง ์ฐจ์งํ๊ฒ ๋ง๋ ๋ค.
๐ฅ inline-block์ ์ฌ์ฉํ๋ฉด์ <div />(1) <div />(2) ๋ ํ๊ทธ ์ฌ์ด์ ' ', '/n'์ด ์กด์ฌํ๋ฉด, 1๋ฒ ํ๊ทธ์ width=30%, 2๋ฒ ํ๊ทธ์ width=70%์ผ ๊ฒฝ์ฐ ๊ณต๋ฐฑ์ด๋ ์ํฐ๋ก ์ธํด 2๋ฒ ํ๊ทธ๊ฐ ์๋๋ก ๋ด๋ ค๊ฐ์ง๋ค.
โ ํด๊ฒฐ ๋ฐฉ๋ฒ: ๋ถ๋ชจ ํ๊ทธ์ font-size=0์ ์ ์ฉํ๋ค.
๐ฅ inline-block์ ์ฌ์ฉํ๋ฉด์ div ํ๊ทธ ์์ ๊ธ์จ๋ฅผ ์์ฑํ๋ฉด ๊ฐ๋ก ๋ฐฐ์ด์ด ๊นจ์ง๊ฒ ๋๋ค. -> inline-block ์์ ๋ค์ด baseline ์๋ก ์ค๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
โ ํด๊ฒฐ ๋ฐฉ๋ฒ: vertical-align(์ํ ์ ๋ ฌ): top ์ต์ ์ ์ ์ฉํ๋ค. (์๋ก ์ ๋ ฌํ๋ค.)
.container {
width: 100%;
font-size: 0;
}
.header {
width: 100%;
height: 150px;
background-color: aquamarine;
}
.left-menu {
width: 30%;
height: 500px;
background-color: blue;
display: inline-block;
}
.right-menu {
width: 70%;
height: 500px;
background-color: crimson;
display: inline-block;
font-size: 20px;
vertical-align: top;
}
.footer {
width: 100%;
height: 150px;
background-color: gray;
}
body {
margin: 0;
padding: 0;
}
โ flex ์ฌ์ฉ
โผ ๋ฐ์ค ๊ฐ๋ก ๋ฐฐ์น๊ฐ ์ฌ์์ง๋ค.
โผ ๋ถ๋ชจ ํ๊ทธ์ display: flex ์ต์ ์ ์ค๋ค.
โผ ์์ ํ๊ทธ์ width๋ฅผ ์ค์ ํ๋ฉด, ์ต๋ํ ํด๋น width๋ฅผ ์ฐจ์งํ๋ ค๊ณ ๋ ธ๋ ฅํ ๋ฟ ์ ๋ง ๊ทธ ์ฌ์ด์ฆ๋ฅผ ๊ฐ์ง์ง ์๋๋ค.
โผ justify-content(๋ถ๋ชจ) ์ต์ ์ผ๋ก ์์ ์์๋ค์๊ฒ ์ ๋ ฌ์ ์ค ์ ์๋ค.
โ justify-content: flex-start -> ์ฐ์ธก ์ ๋ ฌ
โ justify-content: center -> ๊ฐ์ด๋ฐ ์ ๋ ฌ
โ justify-content: flex-end -> ์ข์ธก ์ ๋ ฌ
โผ flex-direction: column(๋ถ๋ชจ)์ผ๋ก ์ธ๋ก ๋ฐฐ์น๋ฅผ ํ ์ ์๋ค.
โผ flex-wrap:wrap(๋ถ๋ชจ) ๊ฐ๋ก๋ฅผ ๋์ด๊ฐ๋ฉด ์ต๋ํ ์ฐจ์งํ๊ฒ ํ์ง ์๊ณ ์๋๋ก ๋ด๋ ค๋ณด๋ธ๋ค.
โผ align-items(๋ถ๋ชจ) ์ํ ์ ๋ ฌ ์ต์
โผ flex-grow(์์) ์์์ ๋ฐ์ค ํฌ๊ธฐ๋ฅผ ๋น์จ๋ก ์ค์ ํ ์ ์๋ค.
โ grid์ฌ์ฉ
โผ ๋ ์ด์์์ ๋ ์ฝ๊ฒ ์ก์ ์ ์๋๋ก ๋์์ค๋ค.
โผ ๋ชจ๋ ์ข ์ด๋ฅผ ๊ทธ๋ ค ์์น ํ๋ ์์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋๋ก ๋์์ค๋ค.
โผ div ๋ฐ์ค๋ฅผ ์์ ๋กญ๊ฒ ๋ฐฐ์นํ ์ ์๋ค.
โผ Edge ์ด์์์๋ง ์ฌ์ฉํ ์ ์๋ค.
/* 1๋ฒ ๋ฐฉ๋ฒ */
.grid-container {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 100px 100px 100px 100px;
}
.grid-container div {
border: 1px solid black;
}
.header {
grid-column: 1 / 4;
}
.sidebar {
grid-row: 2 / 5;
}
/* 2๋ฒ ๋ฐฉ๋ฒ */
.grid-container {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 100px 100px 100px 100px;
grid-template-areas:
"ํค๋ ํค๋ ํค๋ ํค๋"
"์ฌ์ด๋ . . ."
"์ฌ์ด๋ . . .";
}
.grid-container div {
border: 1px solid black;
}
.header {
grid-area: ํค๋;
}
.sidebar {
grid-area: ์ฌ์ด๋;
}
<body>
<div class="grid-container">
<div class="header"></div>
<div class="sidebar"></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</body>
โผ ๋ถ๋ชจ div์ display: grid๋ฅผ ์ฃผ๋ฉด, ์์๋ค์ ๋ชจ๋์ข ์ด๊ฐ ๋๋ค.
โผ ๋ถ๋ชจ div์ grid-template-columns ์์ฑ์ ์ค์ ํ๋ฉด ์ด์ ์ง์ ํ ์ ์๋ค.
โผ ๋ถ๋ชจ div์ grid-template-rows ์์ฑ์ ์ค์ ํ๋ฉด ํ์ ์ง์ ํ ์ ์๋ค.
โผ ์ ์ฝ๋์์๋ 4ํ 3์ด๋ก ์์ฑ๋๋ค.
โผ fr ๋จ์๋ฅผ ์ฌ์ฉํ์ฌ ํญ์ ์ง์ ํ ์ ์๋๋ฐ, ๋ฐฐ์๋ฅผ ์ง์ ํ ์ ์๋ค. ์ ์ฝ๋์์๋ ์ ์ฒด ํญ์์ 1๋ฐฐ์์ฉ ์ฐจ์งํ๋ผ๊ณ ์ง์ ํ๋ค.
โผ grid-gap ์์ฑ์ ์ฌ์ฉํ์ฌ ๊ฒฉ์ ๊ฐ์ ๊ฐ๊ฒฉ์ ์ค์ ํ ์ ์๋ค.
โจ Grid ๊ณต๊ฐ ๋๋๊ธฐ 1๋ฒ ๋ฐฉ๋ฒ
โผ grid-column ์์ฑ์ grid ์์์๊ฒ ์ ์ฉํ ์ ์์ผ๋ฉฐ, 1 / 4์ผ ๊ฒฝ์ฐ์๋ ์ธ๋ก์ 1๋ฒ ๋ถํฐ 4๋ฒ๊น์ง 1๊ฐ๋ก ๋ง๋ค์ด๋ฌ๋ผ๋ ์๋ฏธ์ด๋ค. ์ ๊ฒฉ์๋ฅผ ๋ณด๋ฉด ์ธ๋ก์ 4๊ฐ์ ๊ฐ๋ก์ 5๊ฐ๊ฐ ์๋ค.
โผ grid-row์์ฑ์ grid ์์์๊ฒ ์ ์ฉํ ์ ์์ผ๋ฉฐ, 2 / 5์ผ ๊ฒฝ์ฐ์๋ ๊ฐ๋ก์ 2๋ฒ ๋ถํฐ 5๋ฒ๊น์ง 1๊ฐ๋ก ๋ง๋ค์ด๋ฌ๋ผ๋ ์๋ฏธ์ด๋ค.
โจ Grid ๊ณต๊ฐ ๋๋๊ธฐ 2๋ฒ ๋ฐฉ๋ฒ
โผ grid-area๋ก ์์์๊ฒ ์ด๋ฆ์ ๋ถ์ฌ์ค๋ค.
โผ grid-template-areas ์์ฑ์ผ๋ก grid ๋ถ๋ชจ์๊ฒ ์์ญ์ ์ค์ ํ ๋นํ๋ฏ์ด ์์ฑํ๋ค.
๐ฅ 1๋ฒ 2๋ฒ ๋ชจ๋ ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ถ๋๋ค.
๐ Pseudo-class / Pseudo-element
โ pseudo-class
ํน์ ์์๊ฐ ๋ค๋ฅธ ์ํ์ผ ๋, ์คํ์ผ ์ค ์ ์๋๋ก ๋์์ค๋ค.
.pseudo:hover {
color: red;
}
โผ class="pseudo" ์์์ ๋ง์ฐ์ค๋ฅผ ๊ฐ์ ธ๋ค ๋๋ฉด, ์๊น์ด ๋นจ๊ฐ์์ผ๋ก ๋ณ๊ฒฝ๋๋ค.
โ pseudo-element
๋ด๋ถ์ ์ผ๋ถ๋ถ๋ง ์คํ์ผ ์ค ๋, ์ฌ์ฉํ๋ค.
.pseudo::first-letter {
color: red;
font-size: 30px;
}
โผ class="pseudo" ์์์ ์ฒซ ๊ธ์๋ง ์์์ ๋นจ๊ฐ์, ๊ธ์ ํฌ๊ธฐ๋ 30px๋ก ๋ณ๊ฒฝ๋๋ค.
.pseudo::before {
content: '์์ 1';
}
.pseudo::after {
content: '์์ 2';
}
โผ before: class="pseudo" ์์์ ์ ๋ถ๋ถ์ "์์ 1"์ด ์ถ๊ฐ๋๋ค.
โผ after: class="pseudo" ์์์ ๋ท ๋ถ๋ถ์ "์์ 2"๊ฐ ์ถ๊ฐ๋๋ค.
.input-file::file-selector-button {
background-color: skyblue;
border: none;
}
.input-file::file-selector-button:hover {
background-color: red;
}
โผ pseudo-element๋ฅผ ์ฌ์ฉํด์, input ํ๊ทธ์ file ๋ฒํผ์ ์์ ํ ์๋ ์๋ค.
โผ hover๋ ์ฐ์์ ์ผ๋ก ์ ์ฉํ ์ ์๋ค.
๐ Shadow-Dom
โผ input ํ๊ทธ์ file ํ์ ์ ๋ฒํผ๊ณผ ๊ธ์ 2๊ฐ๊ฐ ๋์์ ์์ฑ๋๊ณ , ์ด๋ Shadow-Dom์ผ๋ก ์ธํด ์์ฑ๋๋ ๊ฒ์ด๋ค.
โผ ๊ฐ๋ฐ์์ ํธ์๋ฅผ ์ํด์ ์๊ฒจ๋ฌ๋ค.
โผ ํฌ๋กฌ ๊ฐ๋ฐ์ ๋๊ตฌ์ ์ค์ ์์ Show user agent shadow DOM์ ์ ํํ๋ฉด ์์ ๊ฐ์ด ์จ๊ฒจ์ง ์์๋ค์ ํ์ธํ ์ ์๋ค.
โ shadow-dom ๋ด์ ์์ ๊พธ๋ฏธ๊ธฐ
<input type="file" style="color: red" />
โผ ์์ ๊ฐ์ด color: red๋ฅผ ๋ฃ์ด๋, ๊ธ์๋ง ๋ณ๊ฒฝ๋๋ค.
โผ ์ด๋ด ๋, pseudo-element๋ฅผ ์ฌ์ฉํด์ ์คํ์ผ๋งํ ์ ์๋ค.
input[type="file"]::-webkit-file-upload-button {
background-color: black;
color: white;
}
โผ ์์ ๊ฐ์ด ์ฝ๋๋ฅผ ์ฌ์ฉํด์, input ํ๊ทธ ๋ด๋ถ์ ์์๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค.
โผ -webkit-์ ํฌ๋กฌ, ์ฌํ๋ฆฌ, Edge์์๋ง ์ ์ฉ๋๋ ์คํ์ผ์ ์๋ฏธํ๋ค.
โผ -moz-๋ Firefox์์๋ง ์ ์ฉ๋๋ ์คํ์ผ์ ์๋ฏธํ๋ค.
โ ์์ฆ์ input file ํ๊ทธ ๊พธ๋ฏธ๊ธฐ
<label for="input-file">ํ์ผ ์
๋ก๋</label>
<input id="input-file" type="file" style="display: none" />
โผ label ํ๊ทธ๋ฅผ ํ์ฉํ์ฌ, ์ค์ input file ํ๊ทธ๋ display: none์ ์ ์ฉํ๊ณ label ํ๊ทธ๋ฅผ ๊พธ๋ฉฐ์ ์ฌ์ฉํ๋ค.
โ input range ํ๊ทธ ๊พธ๋ฏธ๊ธฐ
input[type="range"] {
appearance: none;
}
input[type="range"]::-webkit-slider-thumb {
appearance: none;
background-color: red;
width: 50px;
height: 50px;
}
โผ appearance: none์ ์ฌ์ฉํ๋ ์ด์ ๋ ๊ธฐ๋ณธ ๋ธ๋ผ์ฐ์ ์ css๋ฅผ ํ์ฉํ์ง ์๊ธฐ ์ํด์ ์ ์ฉํ๋ค.
๐ Video ์ฌ์ฉํ๊ธฐ
// 1๋ฒ
<video src="{๋น๋์ค source}" controls></video>
// 2๋ฒ
<video controls autoplay muted preload="{์์ฑ}" poster="{์ด๋ฏธ์ง ๊ฒฝ๋ก}" loop>
<source src="~.mp4" type="video/m4" />
<source src="~-m.webm" type="video/m4" />
</video>
โผ controls ๋ฅผ ์ถ๊ฐํด์ผ ๋น๋์ค ์ปจํธ๋กค๋ฌ๊ฐ ์์ฑ๋์ด, ๋น๋์ค๋ฅผ ์ฌ์ ๋ฐ ์กฐ์ ํ ์ ์๋ค.
โผ autoplay๋ฅผ ์ถ๊ฐํ๋ฉด ๋น๋์ค๊ฐ ์๋์ฌ์ ๋๋ค.
โผ muted๋ฅผ autoplay์ ํจ๊ป ์ถ๊ฐํด์ผ ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ์์์ ์๋ ์ฌ์ ๋๋ค.
โผ preload๋ฅผ ์ถ๊ฐํ๋ฉด ๋น๋์ค๋ฅผ ๋ฏธ๋ฆฌ ๋ฐ์์ง ์ค์ ํ ์ ์๋ค. (none: ๋ฏธ๋ฆฌ ๋ค์ด X, auto: ๋ฏธ๋ฆฌ ๋ค์ด, metadata: ๋ฏธ๋ฆฌ ์ ๋นํ ๋ค์ด(์ธ๋ค์ผ, ์ด๋ฐ ๋ช ํ๋ ์))
โผ poster๋ฅผ ์ถ๊ฐํ๋ฉด ์ธ๋ค์ผ ์ด๋ฏธ์ง๋ฅผ ์ง์ ํ ์ ์๋ค.
โผ loop์ ์ถ๊ฐํ๋ฉด ๋ฌดํ ๋ฐ๋ณต ์ฌ์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋ค.
โผ source ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ธ๋ผ์ฐ์ ๋ง๋ค ์ง์ํ๋ ํ์ฅ์๊ฐ ๋ฌ๋ผ, ์์ ํ๊ทธ๋ฅผ ์คํํ๊ณ ์๋๋ฉด ์๋ ํ๊ทธ๋ฅผ ์คํํ๋ ํธํ์ฑ์ ์ฑ๊ธธ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
'Web > Html&Css' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
SASS ์ฌ์ฉ๋ฒ (0) | 2023.04.21 |
---|---|
Html&CSS ์ ์ฉํ ๋ฐฉ๋ฒ๋ค (0) | 2023.04.21 |
๋ฐ์ํ ๋ ์ด์์ (0) | 2023.04.01 |