HTML๐Ÿ”จ/html&css ํผ์š”์†Œ

css checkbox ๋งŒ๋“ค๊ธฐ

hyojinny 2022. 10. 6. 14:39

๊ธ€์ž๋ถ€๋ถ„(label) ๋ฅผ ํด๋ฆญํ•ด๋„ ์ฒดํฌ ๋˜๋Š” ์ฒดํฌ๋ฐ•์Šค๋ฅผ ๊ณตํ†ต ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค์–ด ๋ณด์ž !

 

 

 

 

 

์™œ ๊ณตํ†ตํด๋ž˜์Šค๋ฅผ ์ค„๊นŒ?

์ € ๋™๊ทธ๋ผ๋ฏธ ์ฒดํฌ๋ฐ•์Šค๋Š” ์ด ํŽ˜์ด์ง€์—์„œ๋งŒ ์“ฐ์ด๋Š”๊ฒŒ ์•„๋‹Œ ํ™ˆํŽ˜์ด์ง€ ์ „์ฒด์—์„œ ๊ณ„์† ์“ฐ์ผ ๋””์ž์ธ์ด๊ธฐ ๋•Œ๋ฌธ์—..!

 

 


 

1. html ๋กœ check box ์ƒ์„ฑ

 

 

 

์•„๋ฌด๊ฒƒ๋„ ์—†์ด html์— ์ด๋ ‡๊ฒŒ ์ ์šฉํ–ˆ์„ ๊ฒฝ์šฐ ๊ธฐ๋ณธ input ์ฒดํฌ๋ฐ•์Šค ๋ชจ์–‘์ด ๋‚˜์˜จ๋‹ค.

 

 

 

              <div class="agree_bottom">
                <div class="checkbox_wrap">
                  <input id="agree1" class="blind" type="checkbox">
                  <label for="agree1">
                    ๊ฐœ์ธ์ •๋ณด์ˆ˜์ง‘ ๋ฐ ์ด์šฉ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.
                    <em class="txt_point01">(ํ•„์ˆ˜)</em></label>
                </div>

๊ธฐ์กด ํ…์ŠคํŠธ๋ฐ•์Šค๋ฅผ ํฌํ•จํ•œ agree_area ์•ˆ agree_wrap ์•ˆ์— html์˜ input ํƒœ๊ทธ ํƒ€์ž…์„ checkbox๋กœ ์ง€์ •ํ•ด์ค€๋‹ค.

(๋˜ํ•œ ๊ธ€์ž๋ฅผ ํด๋ฆญํ•˜๋ฉด ์ฒดํฌ๋ฐ•์Šค์— ํ‘œ์‹œ๊ฐ€ ๋˜๋„๋ก label์„ ๊ฐ™์ด ์ง€์ •)

 

- ๋ผ๋ฒจ์„ ๋ˆ„๋ฅด๋ฉด ์ฒดํฌ๋ฐ•์Šค๊ฐ€ ์ฒดํฌ๋˜์–ด์•ผํ•จ

- ์ด๋•Œ ์˜ค๋ฅธ์ชฝ ๋ฐ•์Šค๋Š” flat์œผ๋กœ ๋„์›Œ์ค˜์•ผ ํ•˜๋ฏ€๋กœ

<div class="agree_wrap agree_right"> ์ด๋ฆ„์„ ๋‹ค๋ฅด๊ฒŒ ์ง€์ • 

 

 


์ด๋•Œ ์ดˆ๊ธฐํ™” ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ•ด ์ฃผ์–ด์•ผ ์ฒดํฌ๋ฐ•์Šค๋ฅผ ๋ณผ์ˆ˜ ์žˆ์Œ

 

  • ํผ์š”์†Œ์˜ ๋†’์ด๊ฐ€ ๋‹ค๋ฅผ๋•Œ ์š”์†Œ๋ผ๋ฆฌ ์„ธ๋กœ์ •๋ ฌ์‹œํ‚ด, ios ๋‘ฅ๊ทผ๋ชจ์„œ๋ฆฌ, ๊ธฐ๋ณธ์Šคํƒ€์ผ ์ œ๊ฑฐ
  • border-radius:0 -> iOS์—์„œ ํ…Œ๋‘๋ฆฌ๊ฐ€ ๋‘ฅ๊ธ€๊ฒŒ ๋‚˜์˜ค๋ฏ€๋กœ ๋นผ์คŒ
  •  -webkit-appearance: none -> iOS์—์„œ ํผ์š”์†Œ์— ๋‚ด๋ถ€๊ทธ๋ฆผ์ž๊ฐ€ ๋‚˜์˜ค๋ฏ€๋กœ ๋นผ์คŒ 
input, select, textarea, button {
 vertical-align: middle; margin: 0;
 padding: 0;
 border-radius: 0;
 -webkit-appearance: none;
 -webkit-tap-highlight-color: rgba(0, 0, 0, 0.1);
 }

 

 


 

 

2. check box ๋””์ž์ธํ•˜๊ธฐ

 

 

    

- ์ฒดํฌ๋ฐ•์Šค๋Š” ์ธํ’‹ ํผ์ด๋ฏ€๋กœ ์ธ๋ผ์ธ๋ธ”๋Ÿญ์ฒ˜๋ฆฌ

.checkbox_wrap {
    display: inline-block;
}

 

- ๋งˆ์šฐ์Šค ์ปค์„œ ๋ชจ์–‘ ๋ณ€๊ฒฝ

input[type=checkbox] + label {
    color: #292929;
    cursor: pointer;
    position: relative;
}

 

 - ๊พธ๋ฏธ๋Š” ํšจ๊ณผ before๋กœ ์ฒดํฌ๋ฐ•์Šค์˜ ๋ชจ์–‘์„ ๋™๊ทธ๋ผ๋ฏธ๋กœ ๋ณ€๊ฒฝ์ค€๋‹ค.

ํƒ€์ž… ํด๋ž˜์Šค ์„ ํƒ, ํ˜•์ œ์„ ํƒ์ž๋กœ label ์š”์†Œ์— ์ ์šฉ

input[type=checkbox] + label

 

input[type=checkbox] + label:before {
    content: '';
    display: inline-block;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    border: 2px solid #dddddd;
    vertical-align: -10px;
    margin-right: 10px;
}โ€‹
 
 
 
 

3. checked ์†์„ฑ์œผ๋กœ ์ฒดํฌํ›„ ์ด๋ฏธ์ง€ ์ฃผ๊ธฐ

 

:checked ์†์„ฑ์€ ์ฒดํฌ๊ฐ€ ๋˜์—ˆ์„๋•Œ์™€ ๋˜์ง€ ์•Š์•˜์„๋•Œ์˜ ๋‚ด์šฉ์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.
์ฒดํฌ๊ฐ€ ๋˜์—ˆ์„ ๋•Œ์˜ css ์Šคํƒ€์ผ์„ ๋ฐฐ๊ฒฝ์œผ๋กœ ๋‹ค๋ฅด๊ฒŒ ๋””์ž์ธํ•ด๋ณด์ž

 

 

 
 
input[type=checkbox]:checked + label:before {
    background: url(../images/icon_checkbox.png) no-repeat 50% 50% / 20px;
}
 
 
๋ฐฐ๊ฒฝ ์œ„์น˜ ์ง€์ •
 
 

 


 
 

4. ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ๋กœ ์ฒดํฌ๋ชจ์–‘ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ 

 

์‚ฌ์šฉ์ž๊ฐ€ ์•Œ์ˆ˜ ์žˆ๋„๋ก ๋งˆ์šฐ์Šค๋ฅผ ๊ฐ€๋”ฐ๋Œ€๋ฉด ์ปค์„œ ๋ชจ์–‘์„ ๋ฐ”๊ฟ”๋ณด์ž

 
 
input[type=checkbox] + label:after {
    content: '';
    position: absolute;
    left: 6px;
    top: 0;
    width: 0;
    height: 24px;
    background: url(../images/icon_checkbox.png)no-repeat;
}
input[type=checkbox]:checked + label:after {
    width: 24px;
    transition: all 0.3s;
}
 
 
 
๊ธฐ์กด label์— before๋กœ ๋™๊ทธ๋ผ๋ฏธ ํšจ๊ณผ๋ฅผ ์ฃผ์—ˆ์œผ๋‹ˆ 
after๋กœ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ฃผ๋Š” transition ํšจ๊ณผ ์ ์šฉ