[TIL] Grid, pseudo, ๊ฐ€๋ณ€๋„ˆ๋น„

jay__ssยท2021๋…„ 11์›” 16์ผ
1
post-thumbnail

1. Grid ๐Ÿ˜Ž

grid๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์—ด๊ฐฏ์ˆ˜์™€ ํ–‰๊ฐฏ์ˆ˜๋ฅผ ์ง€์ •ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค๊ณ  ํ–ˆ์ง€๋งŒ, ๊ทธ ์™ธ์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

.container {
  grid-template-areas: 'header header header'
                       'section section aside'
                       'footer footer footer';

์ด๋ ‡๊ฒŒ container์— ์˜์—ญ์„ ์ง์ ‘ ๋””์ž์ธ์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
์—ฌ๊ธฐ์„œ ๋์ด ์•„๋‹ˆ๋ผ, ๋””์ž์ธํ•œ ์ด๋ฆ„์„ item์—๋‹ค๊ฐ€ ์„ ์–ธ์„ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

.header {
    grid-area: header;
}
.section {
    grid-area: section;
}
.aside {
    grid-area: aside;
}
.footer {
    grid-area: footer;
}

์ด๋ ‡๊ฒŒ, item๋“ค์ด '์ด ์˜์—ญ์„ ๋‚ด๊ฐ€ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค.'๋ผ๋Š” ์˜๋ฏธ๋ฅผ ์„ ์–ธํ•ด์•ผ ํ•œ๋‹ค.

์•„๋ž˜๋Š” ๊ตฌํ˜„๋œ ์ƒํ™ฉ์ด๋‹ค. (gap์ด๋‚˜ padding, background-color ๋“ฑ์€ ์œ„์—์„œ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์•˜์Œ.)

2. ๊ฐ€์ƒ์š”์†Œ ์„ ํƒ์ž!

<ul>
  <li>list-1</li>
  <li class="item">list-2</li>
  <li class="item">list-3</li>
  <li class="item">list-4</li>
</ul>  
.item:first-child {
  color: red;

์œ„์˜ ์ƒํ™ฉ์—์„œ list-2์˜ ์ƒ‰์€ ๋ณ€๊ฒฝ์ด ๋˜๋Š”๊ฐ€?
๋‹ต์€, ์•„๋‹ˆ๋‹ค.
.item:first-child์„ ์–ด๋–ป๊ฒŒ ํ•ด์„ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž.

  1. ์šฐ์„  ์ฐจ์ผ๋“œ๋ฅผ ํ™•์ธํ–ˆ์œผ๋ฉด, ๊ทธ ์š”์†Œ์˜ ์ง๊ณ„ ๋ถ€๋ชจ๋ฅผ ๋จผ์ € ์ฐพ๋Š”๋‹ค.
  2. ๊ทธ ์ง๊ณ„๋ถ€๋ชจ์˜ ์ž์‹์ค‘, ํด๋ž˜์Šค๊ฐ€ item์ธ ์ฒซ๋ฒˆ์งธ ์ž์‹์„ ์ฐพ๋Š”๋‹ค.
  3. ํด๋ž˜์Šค๊ฐ€ item์ด๋ฉด์„œ ์ฒซ๋ฒˆ์งธ ์ž์‹์ธ ์š”์†Œ๋Š” ์—†์œผ๋ฏ€๋กœ ๋ณ€ํ™”๊ฐ€ ์—†๋‹ค.

์›ํ•˜๋Š” ์Šคํƒ€์ผ(list-2์— ๋นจ๊ฐ„๊ธ€์”จ) ์„ ์ง€์ •ํ•ด์ฃผ๊ณ ์ž ํ•˜๋ฉด

.item:nth-child(2) {
  color: red;
}

์œ„์˜ ์Šคํƒ€์ผ์„ ์ง€์ •ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
item์˜ ๋ถ€๋ชจ์˜ ์ง๊ณ„์ž์‹ ์ค‘, class๊ฐ€ item์ด๋ฉด์„œ, 2๋ฒˆ์งธ์ธ ์ž์‹์„ ์ฐพ๋Š”๋‹ค.

3. ๊ฐ€๋ณ€๋„ˆ๋น„

calc(a ๋ถ€ํ˜ธ b) : ๊ณ„์‚ฐ์‹์ด ๋“ค์–ด๊ฐ„๋‹ค. (100% - 100px) ์ด๋Ÿฐ์‹์œผ๋กœ!
vmin : ๋ทฐํฌํŠธ์˜ ๋„ˆ๋น„์™€ ๋†’์ด์ค‘ ๋” ์ž‘์€ ํฌ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
min-width : ์ตœ์†Œ๋„ˆ๋น„๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ด ํฌ๊ธฐ๋ณด๋‹ค ์ค„์ง€ ์•Š๋Š”๋‹ค.
max-width : ์ตœ๋Œ€๋„ˆ๋น„๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ด ํฌ๊ธฐ๋ณด๋‹ค ๋Š˜์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค.
% : ๋ถ€๋ชจ์š”์†Œ์˜ ํฌ๊ธฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•œ๋‹ค.
vw : ๋ทฐํฌํŠธ์˜ ๋„ˆ๋น„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•œ๋‹ค.(๋ทฐํฌํŠธ๋ฅผ ์–‘์˜†์œผ๋กœ ์ค„์ด๋ฉด ๊ฐ™์ด ์ค„์–ด๋“ ๋‹ค.)
vh : ๋ทฐํฌํŠธ์˜ ๋†’์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•œ๋‹ค.(๋ทฐํฌํŠธ๋ฅผ ์œ„์•„๋ž˜๋กœ ์ค„์ด๋ฉด ๊ฐ™์ด ์ค„์–ด๋“ ๋‹ค.)
min(a, b) : a, b ์ค‘ ๋” ์ž‘์€ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.

https://ssssssjay.github.io/learning/variable-size.html

ํ—ท๊ฐˆ๋ฆด๋•Œ๋งˆ๋‹ค ์œ„์˜ ๋งํฌํƒ€๊ณ  ๋“ค์–ด๊ฐ€ ์ง์ ‘ ์ฐฝํฌ๊ธฐ๋ฅผ ์ค„์ด๊ณ  ๋Š˜๋ ค๋ณด์ž!!!!!

click-card โ™ ๏ธ

https://codepen.io/bbozzay/pen/vaPPmw
์ฝ”๋“œํŽœ์— ์žˆ๋Š” ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ๋Š๋‚€ ์–ด๋ ค์šด์ ์„ ์ ์–ด๋ณธ๋‹ค.

1. ์œ„๋กœ ๋œจ๋Š” ๊ฒƒ ๊ฐ™์€ ์›€์ง์ž„

๋งˆ์šฐ์Šค ์˜ค๋ฒ„์‹œ์— ์œ„๋กœ ๋ถ• ๋œจ๋Š” ๊ฒƒ ๊ฐ™์€ ์›€์ง์ž„์„ ์ฃผ๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ, ์ด๋™์„ x์ถ•์œผ๋กœ ์–‘์ˆ˜ y์ถ•์œผ๋กœ ์–‘์ˆ˜๋ฅผ ์ฃผ๋ฉด ๋Š๋‚Œ์ด ์•ˆ๋‚ฌ๋‹ค.
์ข…์ดํ•˜๋‚˜๋ฅผ ๊ฐ€์ง€๊ณ  ์ƒ๊ฐํ•ด๋ณด๋‹ˆ, ๋‹น์—ฐํžˆ x, y์ถ• ๋ชจ๋‘ ์Œ์ˆ˜๊ฐ’์„ ์ฃผ์–ด์•ผ ํ–ˆ๋‹ค.

2. ๊ทธ๋ฆผ์ž๋ฅผ ์ง์ ‘ ์ƒ์„ฑ๊ณผ ๊ฐ€์ƒ์š”์†Œ๋กœ ์ƒ์„ฑ

์•„๋ž˜๋Š” ์ง์ ‘ ๊ทธ๋ฆผ์ž๋ฅผ ์ฃผ๋Š” ํšจ๊ณผ์ด๋‹ค.

box-shadow: 10px 10px 5px rgba(0, 0, 0, 0.5);

์•„๋ž˜๋Š” ๊ทธ๋ฆผ์ž์ƒ‰์„ ๊ฐ€์ง„ ์นด๋“œ ํฌ๊ธฐ๋งŒํผ์˜ ๊ฐ€์ƒ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , z-index๋ฅผ ์ฃผ์–ด ๋’ค๋กœ ๋ฐ€์–ด๋ฒ„๋ฆฌ๋Š” ์ž‘์—…์ด๋‹ค. (3์ฐจ์›์˜ ๋’ค๋ฅผ ์ด์•ผ๊ธฐํ•จ. z์ถ•)

.board-item::after {
      z-index: -1;
      content: '';
      position: absolute;
      top: 10px;
      left: 10px;
      background-color: rgba(9, 9, 9, .3);
      width: 100px;
      height: 100px;
      }

3. z-index ํ’€๋ฆผํ˜„์ƒ (ํ˜น์€ ๋ฒ„๊ทธ..?)

๊ทธ๋Ÿฌ๋‚˜, ์œ„์˜ ๊ฐ€์ƒ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ์„œ

.board-item:hover {
  transform: translate(-10px, -10px);
}

๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด, ๊ฐ€์ƒ์š”์†Œ์˜ z-index๊ฐ€ ํ’€๋ฆฌ๋Š” ํ˜„์ƒ์ด ๋‚˜ํƒ€๋‚œ๋‹ค.
๊ทธ๋ฆผ์ž์ธ๋ฐ ์นด๋“œ ์•ž์œผ๋กœ ๋‚˜์™€๋ฒ„๋ฆฌ๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์ด๋Š” transform์‚ฌ์šฉ ์‹œ z-index๊ฐ€ ํ’€๋ฆฌ๋Š” ํ˜„์ƒ๋•Œ๋ฌธ์ด๋‹ค.

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์œ„ํ•ด, transform์ด ์•„๋‹Œ, relative์†์„ฑ์„ ์ด์šฉํ•˜์—ฌ
top๊ณผ left๋กœ ํ•ด๊ฒฐํ•ด์ฃผ์—ˆ๋‹ค.

4. ๊ทธ๋ฆผ์ž๋ฅผ ๋ฐ”๋‹ฅ์— ๊ณ ์ •์‹œํ‚ค๊ธฐ

๊ทธ๋ฆผ์ž๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜๋˜, ๊ฐ€์ƒ์š”์†Œ๋ฅผ ๋งŒ๋“ค๋˜ ๊ทธ๋ฆผ์ž๋Š” ๊ฒฐ๊ตญ ๋ถ€๋ชจ์ธ ์นด๋“œ์˜ ์ž์‹๋“ค์ด๋‹ค.
์ฆ‰, ๋ถ€๋ชจ๊ฐ€ ์›€์ง์ด๋ฉด ๋”ฐ๋ผ์„œ ๊ฐ™์ด ์›€์ง์ธ๋‹ค.
ํ•˜์ง€๋งŒ ๋‚˜๋Š” ๊ทธ๋ฆผ์ž๋Š” ๋ฐ”๋‹ฅ์— ๋ถ™์–ด์žˆ๋Š” ๋ชจ์–‘์ƒˆ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ๋ฅผ ์›ํ–ˆ๋‹ค.

๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ–ˆ๋‹ค.
๋ถ€๋ชจ๊ฐ€ ์ด๋™ํ•œ๋งŒํผ, ๋ฐ˜๋Œ€๋ฐฉํ–ฅ์œผ๋กœ ์ž์‹์„ ์ด๋™์‹œ์ผœ์ฃผ๋ฉด ๋œ๋‹ค!!!

.board-item:hover::after {
   /* ๋ถ€๋ชจ๋Š” top: -15px; left: -15px; ์ด๋™ํ–ˆ๋‹ค */
   /* ๊ฑฐ๊ธฐ์— ๊ธฐ์กด์˜ ๊ฐ€์ƒ์š”์†Œ์˜ 10px ๋งŒํผ์”ฉ ๋”ํ•ด์ค€ ๊ฐ’์ด๋‹ค */
     top: 25px;
     left: 25px;
}     
.board-item:hover {
  /* ๊ทธ๋ฆผ์ž๋„ ๋งˆ์ฐฌ๊ฐ€์ง€. ๋ถ€๋ชจ์ด๋™๊ฐ’ 15px + ์›๋ž˜๊ทธ๋ฆผ์ž๊ฐ’ 10px */
  box-shadow: 25px 25px 5px rgba(0, 0, 0, 0.5);
}

https://ssssssjay.github.io/click-card/click-card-game-2

profile
๐Ÿ˜‚๊ทธ๋ƒฅ ์ง์ง„ํ•˜๋Š” (์˜ˆ๋น„)๊ฐœ๋ฐœ์ž

1๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2021๋…„ 11์›” 17์ผ

๊ณ ์ƒํ•˜์…จ์–ด์š” ๐Ÿ‘๐Ÿ‘

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ