์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- React.js
- ๊ฐ๋ฐ์๋ถํธ์บ ํ
- ํ๋ก์ ํธ์บ ํ
- #ํ๋ก์ ํธ์บ ํ #ํ๋ก์ ํธ์บ ํํ๊ธฐ #์ ๋ฐ๋ฏธ #์ค๋์ดํผํฉํ ๋ฆฌ #์ ์ง์ฝํฌ๋น #์ธ์ฌ์ด๋์์ #IT๊ฐ๋ฐ์บ ํ #๊ฐ๋ฐ์๋ถํธ์บ ํ #๋ฆฌ์กํธ #react #๋ถํธ์บ ํ #๋ฆฌ์กํธ์บ ํ
- ์ ๋ฐ๋ฏธ
- ip
- ํด์
- javascript
- ์ธ์ฌ์ด๋์์
- ํ๋ก์ธ์ค
- ๋ฉ๋ชจ๋ฆฌ
- ์ค๋์ดํผํฉํ ๋ฆฌ
- typescript
- CS
- react
- cs #๋คํธ์ํฌ
- ๋คํธ์ํฌ
- IT๊ฐ๋ฐ์บ ํ
- App Runner
- ์ ์ง์ฝํฌ๋น
- BFS
- react-query
- ์ค๋ ๋
- ํ์ ์คํฌ๋ฆฝํธ
- ๋ฆฌ์กํธ
- ์๋ฐ์คํฌ๋ฆฝํธ
- Algorithm
- ์๊ณ ๋ฆฌ์ฆ
- ํ๋ก๊ทธ๋๋จธ์ค
- html
- Today
- Total
Bin's Blog
[์ ๋ฐ๋ฏธx์ค๋์ดํผํฉํ ๋ฆฌ] 10์ฃผ ์์ฑ ํ๋ก์ ํธ ์บ ํ 9์ผ์ฐจ - CSS ํ์ฉ ๋ณธ๋ฌธ
[์ ๋ฐ๋ฏธx์ค๋์ดํผํฉํ ๋ฆฌ] 10์ฃผ ์์ฑ ํ๋ก์ ํธ ์บ ํ 9์ผ์ฐจ - CSS ํ์ฉ
hotIce 2023. 6. 15. 00:27๐ค CSS๋?
๐ CSS๋ Cascading Style Sheets์ ์ฝ์์ด๋ค.
๐ ํ ๋ฒ์ ์ฌ๋ฌ ์น ํ์ด์ง์ ๋ ์ด์์์ ์ ์ดํ ์ ์๋ค.
๐ ์ธ๋ถ ์คํ์ผ์ํธ๋ CSS ํ์ผ์ ์ ์ฅ๋๋ค.
๐ Cascading: ์ฐ์ํ => CSS์์ ์คํ์ผ์ด ์ ์ฉ๋ ๋๋, ์ฐ์ ์์๋ฅผ ๊ฐ์ง๊ณ ์ ์ฉ๋๋ค. ์ด ์ฐ์ ์์๊ฐ ์ ์ฉ๋๋ ๊ณผ์ ์ด ๋ง์น ํญํฌ์ฒ๋ผ ์์์ ์๋๋ก ๋จ์ด์ง๋ ๋ชจ์์ด๊ธฐ ๋๋ฌธ์ Cascade๋ผ๋ ๋จ์ด๊ฐ ๋ถ๋๋ค.
1๏ธโฃ CSS Selector
๐ css ์ ํ๊ธฐ๋ ์คํ์ผ์ ์ง์ ํ HTML ์์๋ฅผ "์ฐพ๋"(๋๋ ์ ํํ๋)๋ฐ ์ฌ์ฉ๋๋ค.
<!--์์ ์ด๋ฆ์ ๊ธฐ๋ฐ์ผ๋ก HTML ์์๋ฅผ ์ ํํ๋ค-->
p {
text-align: center;
color: red;
}
<!--id ์ ํ์๋ HTML ์์์ id ์์ฑ์ ์ฌ์ฉํ์ฌ ํน์ ์์๋ฅผ ์ ํํ๋ค.-->
#para1 {
text-align: center;
color: red;
}
<!-- ํด๋์ค ์ ํ๊ธฐ๋ ํน์ ํด๋์ค ์์ฑ์ ๊ฐ์ง HTML ์์๋ฅผ ์ ํํ๋ค-->
.center {
text-align: center;
color: red;
}
๐ ์ฝ๋๋ฅผ ์ต์ํํ๋ ค๋ฉด ์ ํ๊ธฐ๋ฅผ ๊ทธ๋ฃนํํ๋ ๊ฒ์ด ์ข๋ค.
h1, h2, p {
text-align: center;
color: red;
}
2๏ธโฃ CSS ์ฝ์ ํ๋ ๋ฒ
<!-- 1.๋ด๋ถ ์คํ์ผ ์ํธ-->
<head>
<style>
body {
background-color: red;
}
h1 {
color: maroon;
margin-left: 40px;
}
<style>
</head>
<!-- 2.์ธ๋ถ ์คํ์ผ ์ํธ๋ฅผ import ํ์ฌ ์ฌ์ฉ-->
<link rel="stylesheet" type="text/css" href="mystyle.css">
<link rel="stylesheet" type="text/css" href="http://cdn.site.com/css/mystyle.css">
<!-- 3.์ธ๋ผ์ธ ์คํ์ผ ์ํธ: html ํ์ผ์์ ์คํ์ผ ์ง์ ์ง์ -->
<h1 style="color:blue; margin-left:30px;">This is a heading</h1>
3๏ธโฃ CSS ์ฐ์ ์ ์ฉ ์์
๐ ์ฐ์ ์์ 1: ์์ฑ๊ฐ ๋ค์ !important๊ฐ ๋ถ์ด ์๋ ์์ฑ
๐ ์ฐ์ ์์ 2: ์ธ๋ผ์ธ ์คํ์ผ๋ก ์ ์ฉ๋์ด ์๋ ์์ฑ
๐ ์ฐ์ ์์ 3: ์ ํ์์ id๊ฐ ์ฐ์ธ ์์ฑ
๐ ์ฐ์ ์์ 4: class, attribute, pseudo-class๋ก ์ง์ ํ ์์ฑ
๐ ์ฐ์ ์์ 5: ํ๊ทธ ์ด๋ฆ์ผ๋ก ์ง์ ํ ์์ฑ
๐ ์ฐ์ ์์ 6: ๋ถ๋ชจ ์์์ ์ํด ์์๋ ์์ฑ
4๏ธโฃ ๊ธฐ๋ณธ ๋์์ธ ์์
์์ฑ๋ช | ์๋ฏธ | ์์ฑ๋ช | ์๋ฏธ |
background-color | ๋ฐฐ๊ฒฝ์ | margin | ๋ฐ๊นฅ ์ฌ๋ฐฑ ์ค์ |
background-image | ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง ์ ์ | padding | ์์ชฝ ์ฌ๋ฐฑ ์ค์ |
border | ๊ฒฝ๊ณ์ ์คํ์ผ ์ ์ | color | ๊ธ์์์ ๋ณ๊ฒฝ |
border-radius | ํ ๋๋ฆฌ ๋ฅ๊ธ๊ฒ ์ฒ๋ฆฌ | text-align | ๊ธ์ ์ํ ์ค์ ์ ๋ ฌ |
letter-spacing | text ์๊ฐ ์ค์ | display | none: ํด๋น ๋ถ๋ถ์ ์จ๊น block: ํด๋น ๋ถ๋ถ์ ๋ณด์ |
5๏ธโฃ CSS ํ ๋๋ฆฌ ์คํ์ผ
๐ auto - ๊ธฐ๋ณธ๊ฐ์ด๋ค. ๋ธ๋ผ์ฐ์ ๋ ๋์ด์ ๋๋น๋ฅผ ๊ณ์ฐํ๋ค.
๐ length - ๋์ด/๋๋น๋ฅผ px, cm ๋ฑ์ผ๋ก ์ ์ํ๋ค.
๐ % - ์ปจํ ์ด๋ ๋ธ๋ก์ ๋ฐฑ๋ถ์จ๋ก ๋์ด/๋๋น๋ฅผ ์ ์ํ๋ค.
๐ initial - ๋์ด/๋๋น๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ํ๋ค.
๐ inherit - ๋์ด/๋๋น๋ ๋ถ๋ชจ ๊ฐ์์ ์์๋๋ค.
6๏ธโฃ ์์ด์ฝ & ๊ธ๊ผด
<!-- ์์ด์ฝ -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>fontawesome</title>
</head>
<body>
<script src="https://kit.fontawesome.com/cd8d608180.js" crossorigin="anonymous"></script>
<!-- https://fontawesome.com/search?s=light&f=sharp&o=r -->
<i class="fa-sharp fa-solid fa-house"></i>
<i class="fa-sharp fa-solid fa-paperclip"></i>
<i class="fa-sharp fa-solid fa-bomb"></i>
</div>
</body>
</html>
<!-- ๊ธ๊ผด -->
<head>
<link rel="stylsheet" href="https://fonts.googleapis.com/css?family-Sofia">
<style>
body {
font-family: "Sofia", sans-serif;
}
</style>
</head>
7๏ธโฃ ์์ฃผ ์ฐ๋ CSS Pseudo-class Selector
Selector | ์์ | ์ค๋ช |
:active | a:active | ํ์ฑ ๋งํฌ๋ฅผ ์ ํ |
:hover | a:hover | ๋ง์ฐ์ค ์ค๋ฒ๊ฐ ๋๋ ๋งํฌ๋ฅผ ์ ํ |
:visited | a:visited | ๋ฐฉ๋ฌธํ ๋ชจ๋ ๋งํฌ ์ ํ |
:first-child | p:first-child | ๋ถ๋ชจ์ ์ฒซ ๋ฒ์งธ ์์์ธ ๋ชจ๋ <p> ์์๋ฅผ ์ ํ |
:nth-child(n) | p:nth-child(2) | ๋ถ๋ชจ์ ๋ ๋ฒ์งธ ์์์ธ ๋ชจ๋ <p> ์์๋ฅผ ์ ํ |
๐ค ๋ด๊ฐ ๋ชฐ๋๋ ๋ถ๋ถ๋ค
1๏ธโฃ align-items vs align-content
๐ align-items๋ ๋จ์ผ ๋ผ์ธ์์ ์์ดํ ๋ค์ ์ด๋ป๊ฒ ์ ๋ ฌํ ์ง ๊ฒฐ์ ํ๋ค. ๋ฐ๋ฉด์ align-content๋ ์ฌ๋ฌ ๋ผ์ธ์ ์์ดํ ๋ค ์ฌ์ด์ ๊ณต๊ฐ์ ์ด๋ป๊ฒ ๋ฐฐ๋ถํ ์ง ๊ฒฐ์ ํ๋ค.
2๏ธโฃ bootstrap์ ์ฌ์ฉํ์ง ์์ grid
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>2ํ 4์ด ๊ทธ๋ฆฌ๋</title>
<style>
.container {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: repeat(2, 1fr);
grid-gap: 20px;
}
</style>
</head>
<body>
<div class="container">
<div class="item">๋ด์ฉ 1</div>
<div class="item">๋ด์ฉ 2</div>
<div class="item">๋ด์ฉ 3</div>
<div class="item">๋ด์ฉ 4</div>
<div class="item">๋ด์ฉ 5</div>
<div class="item">๋ด์ฉ 6</div>
</div>
</body>
</html>
๐ display: grid๋ ํด๋น ์์๋ฅผ ๊ทธ๋ฆฌ๋ ์ปจํ ์ด๋๋ก ๋ง๋ ๋ค.
๐ grid-template-columns: repeat(4, 1fr); ์ด ์์ฑ์ ๊ทธ๋ฆฌ๋์ ์ด ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ค. ๋ค ๊ฐ์ ๋์ผํ ํฌ๊ธฐ์ ์ด์ ๋ง๋ค๊ณ 1fr์ ์ฌ์ฉ๊ฐ๋ฅํ fraction์ ์๋ฏธํ๋ค. ์ด์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฐ๋ก ๊ณต๊ฐ์ 4๋ฑ๋ถํ๋ค.
๐ grid-template-rows: repeat(2, 1fr); ์ด ์์ฑ์ ๊ทธ๋ฆฌ๋์ ํ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ค. ๋ ๊ฐ์ ๋์ผํ ํฌ๊ธฐ์ ํ์ ๋ง๋ค๊ณ 1fr์ ์ฌ์ฉ๊ฐ๋ฅํ fraction์ ์๋ฏธํ๋ค. ํ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ธ๋ก ๊ณต๊ฐ์ 2๋ฑ๋ถํ๋ค.
๐ grid-gap:20px ์ ๊ทธ๋ฆฌ๋ ์์ดํ ๋ค ์ฌ์ด์ ๊ฐ๊ฒฉ์ ์ ์ํ๋ค.
3๏ธโฃ transform๊ณผ animation
๐ transform: ์ด ์์ฑ์ ์์๋ฅผ ๋ณํ์ํค๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์ด ๋ณํ์ ์ด๋(translate), ํ๋/์ถ์(scale), ํ์ (rotate),๋ฑ์ ํฌํจํ๋ค. ์๋ฅผ ๋ค์ด, ์์๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก 50px, ์๋๋ก 100px ์ด๋์ํค๋ ค๋ฉด transform: translate(50px, 100px);๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ์์๋ฅผ ๋ ๋ฐฐ๋ก ํ๋ํ๋ ค๋ฉด transform: scale(2);๋ฅผ ์ฌ์ฉํ๋ฉด ๋๊ณ , ์์๋ฅผ 45๋ ํ์ ์ํค๋ ค๋ฉด transform: rotate(45deg);๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. ์ฌ๋ฌ ๋ณํ์ ๋์์ ์ ์ฉํ๋ ค๋ฉด ๊ทธ๋ฅ ํ ์ค์ ๋์ดํ๋ฉด ๋๋ค. ์๋ฅผ ๋ค์ด, transform: translate(50px, 100px) scale(2) rotate(45deg);.
๐ animation :์ด ์์ฑ์ ์ ๋๋ฉ์ด์ ์ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์ ๋๋ฉ์ด์ ์ ํค ํ๋ ์(@keyframes)์ ์ ์ํ์ฌ ์ฌ์ฉํ๋ค. ํค ํ๋ ์์ ์ ๋๋ฉ์ด์ ์ ์ฌ๋ฌ ๋จ๊ณ๋ฅผ ๋ํ๋ด๋ฉฐ, ๊ฐ ๋จ๊ณ์์ ์์์ ์คํ์ผ์ ์ ์ํ๋ค. ์๋ฅผ ๋ค์ด, ์์์ ๋ฐฐ๊ฒฝ์์ 2์ด ๋์ ๋นจ๊ฐ์์์ ํ๋์์ผ๋ก ๋ณ๊ฒฝํ๋ ์ ๋๋ฉ์ด์ ์ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด, ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค.
@keyframes change-color {
from {
background-color: red;
}
to {
background-color: blue;
}
}
.my-element {
animation: change-color 2s;
}
์ด ์ฝ๋์์ change-color๋ ์๋๋ฉ์ด์ ์ ์ด๋ฆ์ด๊ณ , 2s๋ ์๋๋ฉ์ด์ ์ ์ ์ฒด ์๊ฐ์ด๋ค. from์ ์๋๋ฉ์ด์ ์ ์์ ์ํ๋ฅผ, to๋ ์๋๋ฉ์ด์ ์ ์ข ๋ฃ ์ํ๋ฅผ ๋ํ๋ธ๋ค.
4๏ธโฃ ::before๊ณผ ::after ์ฐจ์ด
๐ ::before์ ::after๋ ๊ฐ์ ์์๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, ์ ํํ ์์์ ๋ด์ฉ ์์ด๋ ๋ค์ ์ฝํ ์ธ ๋ฅผ ์ฝ์ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
๐ ::before: ์ด ๊ฐ์ ์์๋ ์ ํํ ์์์ ๋ด์ฉ ์์ ์ฝํ ์ธ ๋ฅผ ์ฝ์ ํ๋ค. ์๋ฅผ ๋ค์ด, ๊ฐ ํค๋ฉ ์์ ์๋์ผ๋ก ๋ณํ๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์ ์๋ค
h2::before {
content: "* ";
}
๐ ::after: ์ด ๊ฐ์ ์์๋ ์ ํํ ์์์ ๋ด์ฉ ๋ค์ ์ฝํ ์ธ ๋ฅผ ์ฝ์ ํ๋ค. ์๋ฅผ ๋ค์ด, ๊ฐ ๋งํฌ ๋ค์ ํ์ดํ๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์ ์๋ค.
a::after {
content: " →";
}
๐ ๋ ๋ค ํ ์คํธ๋ ์ธ๋ผ์ธ ์์์ ์์ด๋ ๋ค์๋ง ์ฝ์ ํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ผญ content ์์ฑ์ ์ง์ ํด์ผ ํ๋ค. ํ ์คํธ๋, ์ด๋ฏธ์ง or ์๋ฌด๊ฒ๋ ์์ด์ "" ๊ณต๋ฐฑ๋ง ๋จ๊ธธ ์ ์๋ค.
5๏ธโฃ transition
๐ transition์ CSS ์์ฑ์ ๋ณํ๋ฅผ ๋ถ๋๋ฝ๊ฒ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์ฆ, ํ ์ํ์์ ๋ค๋ฅธ ์ํ๋ก ์์๋ฅผ ์ ๋๋ฉ์ด์ ํํ๋ค. ์๋ฅผ ๋ค์ด, ๋ฒํผ์ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ ธ์ ๋ ๋ฐฐ๊ฒฝ์์ด ๋ถ๋๋ฝ๊ฒ ๋ณ๊ฒฝ๋๋๋ก ๋ง๋๋ ๊ฒ์ด๋ค.
๐ transition ์์ฑ์๋ ์ต๋ ๋ค ๊ฐ์ง ๊ฐ์ ์ง์ ํ ์ ์๋ค.
- ransition-property: ๋ณํ๋ฅผ ์ค CSS ์์ฑ์ ์ง์ ํ๋ค. ์๋ฅผ ๋ค์ด background-color, height, width ๋ฑ์ด ๋ ์ ์๋ค. ๋ชจ๋ ์์ฑ์ ๋ํด ์ ํ์ ์ ์ฉํ๋ ค๋ฉด all์ ์ฌ์ฉํ ์ ์๋ค.
- transition-duration: ์ ํ ํจ๊ณผ์ ์ง์ ์๊ฐ์ ์ง์ ํ๋ค. ์ด ๊ฐ์ ์ผ๋ฐ์ ์ผ๋ก ์ด(s)๋ ๋ฐ๋ฆฌ์ด(ms)๋ก ํ์๋๋ค.
- transition-timing-function: ์์ฑ ๊ฐ์ ์ค๊ฐ ์ํ๋ฅผ ๊ณ์ฐํ๋ ๋ฐฉ๋ฒ์ ์ง์ ํ๋ค. ์ด๋ ์ ํ ํจ๊ณผ๊ฐ ์์๊ณผ ๋์์ ์ผ๋ง๋ ๋น ๋ฅด๊ฒ ์งํ๋๋์ง ๊ฒฐ์ ํ๋ค๋ค. ์ผ๋ฐ์ ์ธ ๊ฐ์ผ๋ก๋ linear, ease, ease-in, ease-out, ease-in-out ๋ฑ์ด ์๋ค.
- transition-delay: ์ ํ ํจ๊ณผ๊ฐ ์์ํ๊ธฐ ์ ์ ๋๊ธฐํ๋ ์๊ฐ์ ์ง์ ํ๋ค.
์๋ฅผ ๋ค์ด, ๋ฐฐ๊ฒฝ์์ด 2์ด ๋์ ๋ถ๋๋ฝ๊ฒ ํ๋์์์ ๋นจ๊ฐ์์ผ๋ก ๋ณ๊ฒฝ๋๋๋ก ๋ง๋ค๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์ ์๋ค.
div {
background-color: blue;
transition: background-color 2s;
}
div:hover {
background-color: red;
}
โ๏ธ๋๋์
๐ ์ด์ html ๊ทธ๋ฆฌ๊ณ ์ค๋ css ์์ ์ ๋ค์ผ๋ฉด์ ๋ด๊ฐ ์๊ฐ๋ณด๋ค ์ ์์ง ๋ชปํ๊ณ ๊ทธ๋ฅ ์ฐ๊ณ ์์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์๋ค. ๋ค์์๋ก ์๋ก์ด ๋ถ๋ถ๋ ๋ง๊ณ ๋ ๊น๊ฒ ์์๊ฐ๋ ๊ณผ์ ์ ๊ฐ์ ธ์ ๋๋ฌด ์ข๋ค.
๐ mdn ๋ฌธ์๋ฅผ ์ ๊ทน์ ์ผ๋ก ํ์ฉํ๋ฉด์ ๋ค์ํ ๊ฒ์ ์ง์ ๋ง๋ค์ด๋ด์ผ๊ฒ ๋ค.
๋ณธ ํ๊ธฐ๋ ์ ๋ฐ๋ฏธ-์ค๋์ดํผํฉํ ๋ฆฌ 10์ฃผ ์์ฑ ํ๋ก์ ํธ์บ ํ ํ์ต ์ผ์ง ํ๊ธฐ๋ก ์์ฑ ๋์์ต๋๋ค.