๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Lect & Tip/html, css, scss

โœˆ checkbox css ์ฒดํฌ๋ฐ•์Šค ์Šคํƒ€์ผ๋กœ ์˜ˆ์˜๊ฒŒ ํ•˜๋Š” ๋ฒ• - ์›น ์ ‘๊ทผ์„ฑ ๋งž์ถ”๊ธฐ input[type=checkbox] + label

by ๋‚ฏ์„ ๊ณต๊ฐ„2019 2019. 9. 4.

๋ชฉ์ฐจ

    ์ฒดํฌ๋ฐ•์Šค ์ž์ฒด๋ฅผ ์˜ˆ์˜๊ฒŒ ๊พธ๋ฐ€ ์ˆ˜๋Š” ์—†๋‹ค.

    ๊ตณ์ด ํ•œ์‚ฌ์ฝ” ๊พธ๋ฏธ์ž๋ฉด, ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋ฅผ ์ด์šฉํ•  ์ˆ˜๋Š” ์žˆ๋‹ค.

    ์ฒดํฌํ‘œ์‹œ๊ฐ€ ๋˜์—ˆ์„ ๋•Œ๋Š” input[type=checkbox]:checked์— ์Šคํƒ€์ผ์„ ์ฃผ๋ฉด ๋œ๋‹ค.

    ๊ทธ๋Ÿฐ๋ฐ ์ด๋ฏธ์ง€๋ฅผ ์“ฐ์ง€ ์•Š๊ณ  ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์Šคํƒ€์ผ๋กœ ์˜ˆ์˜๊ฒŒ ๊พธ๋ฏธ๋ ค๋ฉด...์ด๊ฒŒ ์ข€ ๋ณต์žกํ•ด์ง„๋‹ค.

    input[type=checkbox] + label ์„ ์ด์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ,

    ์ด ๋ฐฉ๋ฒ•์˜ ํ•ต์‹ฌ์€ input ์ฒดํฌ๋ฐ•์Šค ์ž์ฒด๋ฅผ ๋ณด์ด์ง€ ์•Š๊ฒŒ ํ•˜๊ณ  label์— ์Šคํƒ€์ผ์„ ์ฃผ์–ด์„œ ๊พธ๋ฏธ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

    ๊ทธ๋Ÿฐ๋ฐ ๋ณดํ†ต ์ด๋Ÿด ๋•Œ, ์ง„์งœ ์ฒดํฌ๋ฐ•์Šค๋ฅผ ๋ณด์ด์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ 

    input[type=checkbox] { display:none} ์„ ์“ฐ๊ฒŒ ๋œ๋‹ค.

    ์ด๋ ‡๊ฒŒ ํ•ด ๋ฒ„๋ฆฌ๋ฉด ์›น์ ‘๊ทผ์„ฑ ์œ„๋ฐฐ๊ฐ€ ๋œ๋‹ค.

    ์™œ๋ƒํ•˜๋ฉด, label์ž์ฒด๋Š” focus๋ฅผ ๋ฐ›์ง€ ๋ชปํ•˜๊ณ , input์ด focus๋ฅผ ๋ฐ›์•„์•ผ ํ‚ค๋ณด๋“œ ์šด์šฉ์„ฑ์„ ๋‹ด๋ณดํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ input์— display:none์„ ์ฃผ๊ฒŒ ๋˜๋ฉด, ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋˜์–ด์„œ ํฌ์ปค์Šค๊ฐ€ ์ด๋™ํ•˜์ง€ ๋ชปํ•˜๊ณ  skipํ•˜๊ฒŒ ๋œ๋‹ค.

    ๊ทธ๋ ‡๋‹ค๊ณ , ๋ณด์ด์ง€ ์•Š๊ฒŒ ํ•˜๋ ค๊ณ  hidden์ด๋‚˜ opacity๋ฅผ ๊ทน๋‹จ์ ์œผ๋กœ ๋‚ฎ์ถ”๋ฉด...์ด ์—ญ์‹œ ์ ‘๊ทผ์„ฑ์— ์œ„๋ฐฐ๋œ๋‹ค.

    ์™œ๋ƒํ•˜๋ฉด ํฌ์ปค์Šค๋ฅผ ๋ฐ›์€ ๊ฐ์ฒด๊ฐ€ ํฌ์ปค์Šค๋ฅผ ๋ฐ›์•˜๋‹ค๋Š” ํ‘œ์‹œ ์ฆ‰, ์ ์„ ์ด๋‚˜ ํฌ๋กฌ๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ธ€๋กœ์šฐ ํšจ๊ณผ๊ฐ€ ๊ฐ™์ด ์•ˆ๋ณด์ด๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

    ์ด๋Ÿด ๋•Œ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€, ๋‘˜ ๋‹ค ์‚ด๋ ค๋‘๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

    ๋ณดํ†ต ์ด๋Ÿฐ input ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” Unorder List๋‚˜ Order List๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด ๋•Œ li์— position:relative๋ฅผ ์ฃผ๊ณ , input๊ณผ label์— ๋ชจ๋‘ absolute๋ฅผ ์ฃผ์–ด์„œ ์„œ๋กœ ๊ฒน์น˜๊ฒŒ ํ•œ๋‹ค.

    ํ”ฝ์…€ ๋‹จ์œ„๋กœ ์„ธ๋ถ€ ์กฐ์ •์„ ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ท€์ฐฎ๊ธฐ๋Š” ํ•˜์ง€๋งŒ, ํ•œ ๋ฒˆ ํ•ด ๋‘๋ฉด ํŽธํ•˜๋‹ค.

    ๊ทธ๋ฆฌ๊ณ  input[type=checkbox] ์— z-index๋ฅผ label๋ณด๋‹ค ๋†’๊ฒŒ ์ค€๋‹ค.

    label์€ input[type=checkbox] ๋ณด๋‹ค๋Š” ๋‚ฎ์€ z-index ๊ฐ’์„ ์„ค์ •ํ•˜๋˜ input[type=checkbox]:checked ๋ณด๋‹ค๋Š” ๋†’๊ฒŒ ์ค€๋‹ค.

    checkbox css

    input[type=checkbox]์™€ input[type=checkbox]:checked๋Š” ์‚ฌ์‹ค์€ ๊ฐ™์€ ๊ฐ์ฒด์ธ๋ฐ, ์„ ํƒ ์—ฌ๋ถ€์— ๋”ฐ๋ผ z-index๊ฐ€ ๋ผ๋ฒจ๋ณด๋‹ค ์•ž์— ๋†“์ด๊ธฐ๋„ ํ•˜๊ณ  ๋’ค์— ๋†“์ด๊ธฐ๋„ ํ•˜๋ฉด์„œ, ์Šคํƒ€์ผ์ด ๋จนํžŒ label์ด ๋ณด์ด๊ธฐ๋„ ํ•˜๊ณ , ์Šคํƒ€์ผ์ด ์—†๋Š” ์ฒดํฌ๋ฐ•์Šค๊ฐ€ ๋ณด์ด๊ธฐ๋„ ํ•œ๋‹ค.

    ์ฒดํฌ๊ฐ€ ๋˜๊ธฐ ์ „์˜ ์ฒดํฌ๋ฐ•์Šค์˜ ๋ชจ์–‘์„ ๊พธ๋ฏธ๋Š” ๊ฒƒ์€ ์ด๋ฏธ์ง€ bg๋ฅผ ์จ์„œ ์–ผ๋งˆ๋“ ์ง€ ์‘์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.

    .libSelect {
    	overflow: hidden
    }
    .libSelect li {
    	float: left;
    	display: inline-block;
    	overflow: hidden;
    	width: 135px;
    	position:relative;
    }
    .libSelect li.libTotal {
    	display: block;
    	width: 100%
    }
    .libSelect li input[type=checkbox] {
    	/*display: none;*/
    	width:12px;
    	height:12px;
    	border: 1px solid #1c5180;
    	background:none;
    	position:absolute;
    	left:0;
    	bottom:5px;
    	z-index:10;
    }
    .libSelect li input[type=checkbox] + label {
    	display: inline-block;
    	cursor: pointer;
    	position: relative;
    	padding-left: 20px;
    	margin-right: 4px;
    	z-index:5;
    }
    .libSelect li input[type=checkbox]+ label:before {
    	z-index:5;
    	content: "";
    	display: inline-block;
    	width: 12px;
    	height: 12px;
    	margin-right: 10px;
    	position: absolute;
    	left: 5px;
    	bottom: 5px;
    	background-color: #fff;
    	border-radius: 1px;
    	box-shadow: inset 0px 1px 1px 0px rgba(0, 0, 0,.3), 0px 1px 0px 0px rgba(255, 255, 255,.8);
    }
    .libSelect li input[type=checkbox]:checked + label:before {
    	content: "\2713";  /* ์ฒดํฌ๋ชจ์–‘ */
    	text-shadow: 1px 1px 1px rgba(0, 0, 0,.2);
    	font-size: 10px;
    	font-weight: 800;
    	color: #fff;
    	text-align: center;
    	line-height: 11px;
    }
    .libSelect li input[type=checkbox]:checked { border:0 none; 
    	z-index:0;}

    ๊ธ€๋ž˜๋จธ

    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€