๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Web/Html&Css

Html&CSS ์œ ์šฉํ•œ ๋ฐฉ๋ฒ•๋“ค

๐Ÿ“’ ์›น ํฐํŠธ ์ฒจ๋ถ€ ๋ฐฉ๋ฒ•

โœ” ํฐํŠธ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•

body {
  font-family: "gulim", 'dotum';
}

โ—ผ body ํƒœ๊ทธ ์•ˆ์— ์žˆ๋Š” ๋ชจ๋“  ๊ธ€์ž๋ฅผ ๊ตด๋ฆผ์ฒด๋กœ ์ ์šฉํ•œ๋‹ค. ๊ตด๋ฆผ์ฒด ์ ์šฉ ์‹œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋‹์Œ์ฒด๊ฐ€ ์ ์šฉ๋œ๋‹ค.

โ—ผ ํด๋ผ์ด์–ธํŠธ ์ปดํ“จํ„ฐ์— ํ•ด๋‹น ํฐํŠธ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ์ ์šฉ๋œ๋‹ค.

โ—ผ font-family๋Š” inherit ๋œ๋‹ค. -> ์ž๋™ ์ƒ์†

 

โœ” ์ปค์Šคํ…€ ํฐํŠธ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•

@font-face {
    font-family: 'ํฐํŠธ ์ด๋ฆ„';
    src: url(ํฐํŠธ ๊ฒฝ๋กœ);
}

โ—ผ @font-face: ๋‚ด๊ฐ€ ์ค€๋น„ํ•œ ํฐํŠธ ํŒŒ์ผ์„ CSS์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋“ฑ๋กํ•œ๋‹ค.

โ—ผ ํด๋ผ์ด์–ธํŠธ ์ปดํ“จํ„ฐ์— ๋“ฑ๋กํ•œ ํฐํŠธ๊ฐ€ ์—†์„ ์‹œ, url๋กœ ์ง€์ •ํ•œ ๊ณณ์—์„œ ๋‹ค์šด ๋ฐ›์•„ ์‚ฌ์šฉ๋œ๋‹ค.

โ—ผ ํ•œ๊ธ€ ํฐํŠธ์˜ ์‚ฌ์ด์ฆˆ๋Š” ๋งค์šฐ ํฌ๊ธฐ ๋•Œ๋ฌธ์—, 1~2๊ฐœ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

   ๐Ÿ’ฅํฐํŠธ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์šฉ๋Ÿ‰์ด ์ ์€ .woff ํ˜•์‹(์›น์šฉ)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

โœ” ํฐํŠธ๋ฅผ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•

p, h4, h3, h2, h1, span {
    transform: rotate(0.03deg);
}

โ—ผ transform: rotate๋กœ ์‚ด์ง ํšŒ์ „์‹œํ‚ค๋ฉด ํฐํŠธ๊ฐ€ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋ณด์—ฌ์ง„๋‹ค.

โ—ผ Window ํ™˜๊ฒฝ์—์„œ ํฐ ํšจ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ“’ CSS ๋””๋ฒ„๊น… ๋ฐฉ๋ฒ•

โœ” ๋‚ด๊ฐ€ ์ง  CSS ์ฝ”๋“œ๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด?

โ—ผ CSS ํŒŒ์ผ๋ถ€ํ„ฐ ์›์ธ์„ ์ฐพ์•„ ๋ด์•ผ ํ•œ๋‹ค. -> ๋„ˆ๋ฌด ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š” ๋œ๋‹ค.

โ—ผ ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์›์ธ์„ ์ฐพ๋Š”๋‹ค.

โ—ผ 1๋ฒˆ์„ ํด๋ฆญํ•œ ๋’ค, ์›ํ•˜๋Š” ์š”์†Œ๋ฅผ ์„ ํƒ(2๋ฒˆ)

โ—ผ ์•„๋ž˜ Styles๋ฅผ ํด๋ฆญํ•˜๋ฉด ํ•ด๋‹น ์š”์†Œ์— ์ ์šฉ๋˜๋Š” ์Šคํƒ€์ผ์„ ๋ณด์—ฌ์ฃผ๊ณ (3๋ฒˆ) ๊ฐ€์žฅ ์œ„์— ์žˆ์„ ์ˆ˜๋ก ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’์€ ์Šคํƒ€์ผ์ด๋‹ค.

โ—ผ element.style์€ ํƒœ๊ทธ ์š”์†Œ์— ์ง์ ‘ style ์†์„ฑ์œผ๋กœ ๋„ฃ์€ ๋ถ€๋ถ„์„ ๋ณด์—ฌ์ค€๋‹ค.

 

๐Ÿ“’ ์•„์ด์ฝ˜ ์‚ฌ์šฉํ•˜๊ธฐ

๐Ÿ’ฅ Font Awesome ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

โœ” CDN์œผ๋กœ ์„ค์น˜ํ•˜๊ธฐ

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">

โ—ผ head ํƒœ๊ทธ์— ์œ„ ์ฝ”๋“œ๋ฅผ ์ฒจ๋ถ€ํ•œ๋‹ค.

โ—ผ ๋งํฌ ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด ๋˜๋ฉด ํ•ด๋‹น css ํŒŒ์ผ์„ ๋‹ค์šด ๋ฐ›์•„ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค.

 

โœ” ์ง์ ‘ ๋‹ค์šด๋กœ๋“œ ํ•˜๊ธฐ

https://fontawesome.com/download

 

Font Awesome

The internet's icon library + toolkit. Used by millions of designers, devs, & content creators. Open-source. Always free. Always awesome.

fontawesome.com

โ—ผ ํ•ด๋‹น ์‚ฌ์ดํŠธ์—์„œ ๋‹ค์šด ๋ฐ›๊ณ , ์‹ค์ œ ์ž‘์—…ํ•˜๋Š” css ํด๋”์— ๋„ฃ๊ณ  ์‚ฌ์šฉํ•œ๋‹ค.

โ—ผ css, webfont ํด๋”๋งŒ ๋‚จ๊ธฐ๊ณ , css ํด๋” ์•ˆ์—์„œ๋Š” all, all.min๋งŒ ๋‚จ๊ธฐ๊ณ  ์ „๋ถ€ ์‚ญ์ œํ•ด๋„ ๋œ๋‹ค.

 

โœ” ๊ถŒํ•œ ์ž‘์„ฑ

<script src="https://kit.fontawesome.com/{something} "crossorigin="anonymous"></script>

โ—ผ FontAwesome์—์„œ Free๋กœ ํšŒ์› ๊ฐ€์ž… ํ•œ ๋’ค, ์ธ์ฆ script๋ฅผ ๋ฐ›์•„ head ํƒœ๊ทธ ์•ˆ์— ๋„ฃ๋Š”๋‹ค.

 

โœ” ์•„์ด์ฝ˜ ๋„ฃ๊ธฐ

<i class="fa-solid fa-star fa-3x"></i>

โ—ผ FontAwesome ์‚ฌ์ดํŠธ์—์„œ ์›ํ•˜๋Š” ์•„์ด์ฝ˜์„ ์ฐพ์€ ๋’ค, ์œ„ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•ด์„œ ์›ํ•˜๋Š” ๊ณณ์— ๋ถ™์—ฌ ๋„ฃ๋Š”๋‹ค.

โ—ผ fa-3x ์ฒ˜๋Ÿผ ์Šคํƒ€์ผ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ“’ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋งŒ๋“ค๊ธฐ

โ—ONE-WAY ์• ๋‹ˆ๋ฉ”์ด์…˜

โœ” Step

โ—ผ ์‹œ์ž‘ ์Šคํƒ€์ผ ๋งŒ๋“ค๊ธฐ

โ—ผ ์ตœ์ข… ์Šคํƒ€์ผ ๋งŒ๋“ค๊ธฐ

โ—ผ ์–ธ์ œ ์ตœ์ข… ์Šคํƒ€์ผ๋กœ ๋ณ€ํ•˜๋Š” ํŠธ๋ฆฌ๊ฑฐ ์„ค์ •

โ—ผ transition์œผ๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ ์ฃผ๊ธฐ

   โ—transition -> ์Šคํƒ€์ผ์ด ๋ณ€ํ•˜๋ฉด, ์„œ์„œํžˆ ๋ณ€๊ฒฝํ•˜๋„๋ก ์ง€์ •

.overlay {
  position: absolute;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.5);
  opacity: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  transition: opacity 1s;
  align-items: center;
}

.overlay p {
  font-size: 20px;
  color: red;
}

.overlay:hover {
  opacity: 1;
}

โ—ผ hover ์‹œ, opacity ์†์„ฑ์„ 0์—์„œ 1๋กœ 1์ดˆ ๋™์•ˆ ์„œ์„œํžˆ ๋ณด์—ฌ์ฃผ๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

โœ” ํƒ€ ์‚ฌ์ดํŠธ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํ™•์ธํ•˜๊ธฐ

โ—ผ ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—์„œ Animations๋ฅผ ํด๋ฆญํ•œ ๋’ค, ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์š”์†Œ๋ฅผ hoverํ•˜๋ฉด Animations ํƒญ์— ๊ธฐ๋ก๋˜๊ณ  ์–ด๋–ค ์š”์†Œ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ“’ BootStrap ์‚ฌ์šฉํ•˜๊ธฐ

โœ” ์‚ฌ์šฉ ์ด์œ 

โ—ผ HTML CSS ๊ฐœ๋ฐœ ์‹œ๊ฐ„ ๋‹จ์ถ•

โœ” Html ํŒŒ์ผ์— ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ๋ถ™์—ฌ ๋„ฃ๋Š”๋‹ค.

https://getbootstrap.com/docs/5.3/getting-started/introduction/

 

Get started with Bootstrap

Bootstrap is a powerful, feature-packed frontend toolkit. Build anything—from prototype to production—in minutes.

getbootstrap.com

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Bootstrap demo</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-aFq/bzH65dt+w6FI2ooMVUpc+21e0SRygnTpmBvdBgSdnuTN7QbdgL+OapgHtvPp" crossorigin="anonymous">
  </head>
  <body>
    <h1>Hello, world!</h1>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha2/dist/js/bootstrap.bundle.min.js" integrity="sha384-qKXV1j0HvMUeCBQ+QVp7JcfGl760yU08IQ+GpUo5hlbpg51QRiuqHAJz8+BrxE/N" crossorigin="anonymous"></script>
  </body>
</html>

โœ” BootStrap Docs์—์„œ ํ•„์š”ํ•œ ๋ฌด๋ฃŒ Component๋ฅผ ์ฐพ์•„ ๋ณต์‚ฌํ•ด์„œ ๋ถ™์—ฌ๋„ฃ์–ด ์‚ฌ์šฉํ•œ๋‹ค.

<button type="button" class="btn btn-primary">Primary</button>

 

โ—ผ ๋ณดํ†ต ๋ผˆ๋Œ€์šฉ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

 

๐Ÿ“’ CSS ๋ฎ์–ด์“ฐ๊ธฐ

CSS ์ˆ˜์ • ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋‹ค๋ณด๋ฉด, ์–ด๋Š ํŒŒ์ผ์—์„œ ์–ด๋Š ๋ถ€๋ถ„์ด ์Šคํƒ€์ผ์„ ์ ์šฉํ•˜๋Š”์ง€ ๋ชจ๋ฅผ ๋•Œ๊ฐ€ ์žˆ๋‹ค. ์ด๋Ÿด ๋•Œ CSS ๋ฎ์–ด์“ฐ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ƒˆ๋กœ์šด ๊ฒƒ์œผ๋กœ ๋ฎ์–ด๋ฒ„๋ฆด ์ˆ˜ ์žˆ๋‹ค.

โœ” ๊ฐ™์€ Class์ผ ๊ฒฝ์šฐ

.custom {
  color: red;
}

.custom {
  color: white;
}

โ—ผ main.css ํŒŒ์ผ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑ๋˜์–ด ์žˆ๊ณ , class="custom"์„ ์‚ฌ์šฉํ•˜๋ฉด red ๋Œ€์‹  white๊ฐ€ ์ ์šฉ๋œ๋‹ค. ์•„๋ž˜์— ์žˆ๋Š” ๊ฒƒ์ผ ์ˆ˜๋ก ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค.

 

โœ” ๋‹ค๋ฅธ Class์ผ ๊ฒฝ์šฐ

<link href="css/main.css" rel="stylesheet" />
<link href="css/main2.css" rel="stylesheet" />

/* main.css */
.custom {
  color: red;
}

/* main2.css */
.custom {
  color: white;
}

โ—ผ ํ—ค๋”์— link ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ ์šฉํ•œ css ์ค‘ ์•„๋ž˜์— ์žˆ๋Š” css ํŒŒ์ผ์ด ์ ์šฉ๋œ๋‹ค. ์ฆ‰, main2.css ํŒŒ์ผ์˜ custom์ด ์ ์šฉ๋œ๋‹ค.

 

โœ” CSS ์„ ํƒ์ž ์šฐ์„  ์ˆœ์œ„๋กœ ๋ฎ์–ด์“ฐ๊ธฐ

ํƒœ๊ทธ < .(class) < #(id) < style

 

โœ” ๋ช…๋ น์–ด ์‚ฌ์šฉ

/* main.css */
.custom {
  color: red; !important
}

/* main2.css */
.custom {
  color: white;
}

โ—ผ !important๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ตœ์šฐ์„ ์ ์œผ๋กœ ์ ์šฉ๋œ๋‹ค. (์ถ”์ฒœํ•˜์ง€ ์•Š๋Š”๋‹ค.)

 

๐Ÿ“’ ๋ณต์žกํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋งŒ๋“ค๊ธฐ

โ—A -> B -> C, A -> B -> A, A -> 1์ดˆ ์ •์ง€ -> B ๋“ฑ ์—ฌ๋Ÿฌ ์ƒํƒœ๋กœ ๋ณ€๊ฒฝ๋˜๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋งŒ๋“ค๊ธฐ

 

โ—ผ @keyframes๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

โ—ผ transform์€ ์š”์†Œ์˜ ์œ„์น˜ ๋ฐ ๋ฐฉํ–ฅ ๋“ฑ์„ ์„ค์ •, ํ•ด๋‹น ์˜ต์…˜์œผ๋กœ ์œ„์น˜๋ฅผ ์„ค์ •ํ•˜๋ฉด ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ œ์ž‘ ์‹œ margin๋ณด๋‹ค ๋” ๋ถ€๋“œ๋Ÿฌ์šด ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

โ—ผ transform๋ณด๋‹ค margin ๋ณ€๊ฒฝ์ด ๋” ๋Š๋ฆฌ๋‹ค.

 

โœ” ์ขŒ์šฐ ์ด๋™ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋งŒ๋“ค๊ธฐ

.ani-text {
  text-align: center;
}

.ani-text:hover {
  animation-name: ์ขŒ์šฐ์ด๋™;
  animation-duration: 1s;
}

@keyframes ์ขŒ์šฐ์ด๋™ {
  0% {
    transform: translateX(0px);
  }

  50% {
    transform: translateX(-100px);
  }

  100% {
    transform: translateX(100px);
  }
}

โ—ผ 0%, 50%, 100%๋Š” ๊ฐ ์ง„ํ–‰ ์‹œ ์ ์šฉํ•  ์Šคํƒ€์ผ์„ ๋ช…์‹œํ•œ๋‹ค.

โ—ผ ์ž‘์„ฑํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜ keyframes๋ฅผ animation-name ์†์„ฑ์— ์ ์šฉํ•˜๊ณ , animation-duration์œผ๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹œ๊ฐ„์„ ์ ์šฉํ•œ๋‹ค.

โ—ผ animation-iteration-count: ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฐ˜๋ณต ํšŸ์ˆ˜

โ—ผ animation-delay: ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋”œ๋ ˆ์ด์–‘

 

๐Ÿ“’ Position: sticky ์‚ฌ์šฉํ•˜๊ธฐ

โ— ์Šคํฌ๋กค์„ ๋‚ด๋ ธ์„ ๋•Œ, ์ขŒ์ธก ์šฐ์ธก์œผ๋กœ ์ด๋™ํ•˜๋Š” ๋ฒ•

โ— ์Šคํฌ๋กค์„ ๋‚ด๋ ธ์„ ๋•Œ, ์ขŒ์ธก๋งŒ ์›€์ง์ด๊ณ  ์šฐ์ธก์€ ๊ฐ€๋งŒํžˆ ๊ณ ์ •์‹œํ‚ค๋Š” ๋ฒ•

 

.grey {
  background-color: lightgray;
  height: 2000px;
  margin-top: 500px;
}

.image {
  float: right;
  width: 400px;
  position: sticky;
  top: 10px;
}

.text {
  float: left;
  width: 300px;
}
<body style="background: gray; height: 3000px">
   <div class="grey">
     <div class="image">
       <img src="html_part_1_img.png" width="100%" />
     </div>
     <div class="text">
       position: sticky test position: sticky test position: sticky test
       position: sticky test position: sticky test position: sticky test
       position: sticky test position: sticky test position: sticky test
     </div>
   </div>
</body>

โ—ผ position: sticky๋Š” ์กฐ๊ฑด๋ถ€๋กœ fixed ํ•  ์ˆ˜ ์žˆ๋‹ค.

โ—ผ ์œ„์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ ์šฉํ•˜๋ฉด, ์Šคํฌ๋กค์„ ๋‚ด๋ฆฌ๋‹ค๊ฐ€ image๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋˜๋ฉด, ์ด๋ฏธ์ง€๋Š” ๊ณ ์ •๋˜๊ณ  ์Šคํฌ๋กค์„ ์ด์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

โ—ผ ๋ถ€๋ชจ ๋ฐ•์Šค๋ฅผ ๋„˜์–ด๊ฐ€๋ฉด ์กฐ๊ฑด์ด ํ•ด์ œ๋˜์–ด ๊ณ ์ •์ด ํ’€๋ฆฌ๊ฒŒ ๋œ๋‹ค.

'Web > Html&Css' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

SASS ์‚ฌ์šฉ๋ฒ•  (0) 2023.04.21
๋ฐ˜์‘ํ˜• ๋ ˆ์ด์•„์›ƒ  (0) 2023.04.01
Html&CSS ์‚ฌ์šฉํ•˜๊ธฐ  (0) 2023.03.31