[TIL] input, label / flex ๐Ÿ˜Ž

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

CSS๋งŒ์œผ๋กœ ์ฒดํฌ๋ฐ•์Šค ๊ตฌํ˜„ํ•˜๊ธฐ

html์—์„œ ์ œ๊ณต๋˜๋Š” ์ฒดํฌ๋ฐ•์Šค์˜ ๋ชจ์–‘์ด ์•„๋‹ˆ๋ผ, ์›ํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ CSS๋งŒ์„ ์ด์šฉํ•ด์„œ ์ฒดํฌ๋ฐ•์Šค๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด์ž.

๊ธฐ๋ณธ์ ์ธ ์›๋ฆฌ๋Š” ์ด๋Ÿฌํ•˜๋‹ค.

checkboxํƒ€์ž…์ธ input์˜ label์„ ๋ˆŒ๋Ÿฌ๋„ ์ฒดํฌ๋ฐ•์Šค๋ฅผ ํด๋ฆญํ•œ๊ฒƒ๊ณผ ๊ฐ™์€ ํšจ๊ณผ๋ฅผ ์ด์šฉํ•œ๋‹ค.
์šฐ์„  ์ฒดํฌ๋ฐ•์Šค์— blindํด๋ž˜์Šค๋ฅผ ์ฃผ์–ด์„œ ํ™”๋ฉด์ƒ์—์„œ๋Š” ๋ณด์ด์ง€ ์•Š๊ฒŒ ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ผ๋ฒจ์— ๊ฐ€์ƒ์š”์†Œ๋ฅผ ์ด์šฉํ•˜์—ฌ before์— ์›ํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์‚ฝ์ž…ํ•œ๋‹ค.

์ฒดํฌ๋ฐ•์Šค๊ฐ€ ์„ ํƒ๋˜์—ˆ์„ ๋•Œ(:checked) ์ธ์ ‘ ํ˜•์ œ ์„ ํƒ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ์„ ํƒ๋˜์—ˆ์„ ๋•Œ์˜ ์ด๋ฏธ์ง€๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค.

<input type="checkbox" id="chkbox" name="checkbox" class="btn-stay blind">
<label for="chkbox" class="btn-stay">๋กœ๊ทธ์ธ ์ƒํƒœ์œ ์ง€</label>
.btn-stay {
    display: inline-block;
    margin-bottom: 21px;
    color: #767676;
}

.btn-stay::before {
    display: inline-block;
    content: '';
    width: 22px;
    height: 22px;
    background-image: url(../check-box-unchecked.png);
    background-size: 22px;
    vertical-align: middle;
    margin-right: 8px;
}
.btn-stay:checked + .btn-stay::before {
    background-image: url(../check-box-checked.png);
}

์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, label์ด input์˜ ๋’ค์— ์˜ค๊ฒŒ ๋˜๋Š”๋ฐ, ๋งˆํฌ์—… ๊ตฌ์กฐ์ƒ ๋งž๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค๐Ÿ˜…

Flex

<ul class="container">
  <li class="item">
    <a href="#">list1</a>
  </li>
  <li class="item">  
    <a href="#">list2</a>
  </li>
  <li class="item">  
    <a href="#">list3</a>
  </li>
  <li class="item">
    <a href="#">list4</a>
  </li>
</ul>
.container {
  display: flex;
}

display: flex; ๋ฅผ ํ•ด์ฃผ๋ฉด ๋ธ”๋ก์š”์†Œ๋„ ์ธ๋ผ์ธ์ฒ˜๋Ÿผ ์ปจํ…์ธ ์˜ ๋„ˆ๋น„๋งŒํผ๋งŒ ๋„ˆ๋น„๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.

display: flex;๋Š” ์ง๊ณ„ ์ž์‹์—๊ฒŒ ๊นŒ์ง€๋งŒ ์ ์šฉ์ด ๋ฉ๋‹ˆ๋‹ค.

flex-basis

๊ธฐ๋ณธ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•ด์ค๋‹ˆ๋‹ค. flex-direction๊ณผ ์—ฐ๊ด€์ด ์žˆ์Šต๋‹ˆ๋‹ค.

row๋ผ๋ฉด ๋„ˆ๋น„๋ฅผ, column์ด๋ผ๋ฉด ๋†’์ด๋ฅผ ์ง€์ •ํ•ด์ค๋‹ˆ๋‹ค.
item์— ์จ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ, width, flex-basis๊ฐ€ ๋‘˜ ๋‹ค ์„ ์–ธ๋˜์—ˆ๋‹ค๋ฉด,
flex-basis๊ฐ€ ์ ์šฉ์ด ๋ฉ๋‹ˆ๋‹ค.

๋˜ ๋งŒ์•ฝ, flex-basis์˜ ํฌ๊ธฐ๊ฐ€ max-width๊ฐ’์„ ๋„˜๊ธด๋‹ค๋ฉด,
max-width๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค(min-width๋˜ํ•œ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.)

flex-grow

๋‚จ์€ ๊ณต๊ฐ„์„ ์ฑ„์šธ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ง€์ •ํ•ด์ฃผ๋Š” ์ˆซ์ž๋งŒํผ ๋น„์œจ์„ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค.

.item:nth-child(1) { flex-grow: 1;}
.item:nth-child(2) { flex-grow: 2;}
.item:nth-child(3) { flex-grow: 1;}
.item:nth-child(4) { flex-grow: 1;}

์ง€์ •ํ•ด์ค€ ์ˆซ์ž์˜ ํฌ๊ธฐ๋งŒํผ ์ปจํ…Œ์ด๋„ˆ์˜ ๋‚จ์€ ๊ณต๊ฐ„์„ ๋‚˜๋ˆ  ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋‚จ์€ ๊ณต๊ฐ„์„ ๋‚˜๋ˆ„์–ด ๊ฐ€์ง€๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค!!!!

grow + basis

ํ•˜๋‚˜์˜ ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค.
flex-basis๊ฐ€ 200px์ธ ์•„์ดํ…œ์ด 4๊ฐœ์žˆ์Šต๋‹ˆ๋‹ค.
flex-grow๋Š” ๊ฐ๊ฐ 1๋กœ ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.
์ด ์ƒํƒœ๋กœ ์›น์—์„œ ํ™•์ธํ•ด๋ณด๋ฉด, ์–‘์˜†์œผ๋กœ ๊ฐ€๋“์ฐจ๊ฒŒ ๋‚˜์˜ต๋‹ˆ๋‹ค.(grow๊ฐ€ ์žˆ์œผ๋‹ˆ)

์ฐฝ ํฌ๊ธฐ๋ฅผ ์ค„์—ฌ๋‚˜๊ฐ€๋‹ค ๋ณด๋ฉด 799px์ธ ์ง€์ ์—์„œ 4๋ฒˆ์งธ ์•„์ดํ…œ์ด ๋ฐ‘์œผ๋กœ ๋‚ด๋ ค๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ , ๊ทธ ๋งˆ์ง€๋ง‰ ์•„์ดํ…œ์€ grow๋•Œ๋ฌธ์— ํ•œ ์ค„์„ ๋‹ค ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๋˜ ์ค„์ด๋‹ค๋ณด๋ฉด, 599px์ธ ์ง€์ ์—์„œ 3๋ฒˆ์งธ ์•„์ดํ…œ์ด ๋ฐ‘์œผ๋กœ ๋‚ด๋ ค๊ฐ‘๋‹ˆ๋‹ค.

๋˜ 399px์—์„œ๋Š” 2๋ฒˆ์งธ ์•„์ดํ…œ์ด ๋‚ด๋ ค๊ฐ‘๋‹ˆ๋‹ค.
์ง€๊ธˆ๋ถ€ํ„ฐ๋Š” ๋ชจ๋“  ์•„์ดํ…œ์˜ ๋„ˆ๋น„๊ฐ€ 200px์„ ๋„˜๊ธด ๋ชจ์–‘์ž…๋‹ˆ๋‹ค.

์ด์ฒ˜๋Ÿผ grow์™€ basis๊ฐ€ ํ˜ผํ•ฉ๋œ ์ƒํ™ฉ์—์„œ๋Š” ๊ฐ€๋ณ€์ ์ธ ๋ ˆ์ด์•„์›ƒ์ด ์žกํžˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

margin-right: auto;

์ƒ๋‹จ(ํ—ค๋”)์˜ ๋ฉ”๋‰ด๋ฅผ ๋ณด๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ๋กœ๊ณ ๊ฐ€ ์™ผ์ชฝ ๋์— ์žˆ๊ณ , ๋ฉ”๋‰ด๋ฐ”๊ฐ€ ์˜ค๋ฅธ์ชฝ์— ๋ถ™์–ด์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ flex์ƒํ™ฉ์—์„œ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋กœ๊ณ ์˜ ํด๋ž˜์Šค์— margin-right: auto;๋ฅผ ์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ๋•Œ, flex-grow๊ฐ’์ด ์žˆ๋‹ค๋ฉด ๋‚จ์€ ๊ณต๊ฐ„์„ ๋‹ค ์ฐจ์ง€ํ•ด๋ฒ„๋ฆดํ…Œ๋‹ˆ, ์žˆ์–ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.

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

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