32_Good, Cheap, Fast Checkboxes
π»μ£Όμ : 체ν¬λ°μ€ μ λλ©μ΄μ
- μΈ κ°μ 체ν¬λ°μ€κ° λμμ 체ν¬λ μλ μμ.
toggles.forEach(toggle => toggle.addEventListener('change', (e) => doTheTrick(e.target)))
function doTheTrick(theClickedOne) {
if(good.checked && cheap.checked && fast.checked) {
if(good === theClickedOne) {
fast.checked =false
}
if(cheap === theClickedOne) {
good.checked =false
}
if(fast === theClickedOne) {
cheap.checked =false
}
}
}
toggles.forEach(toggle => toggle.addEventListener('change', (e) => doTheTrick(e.target)))
toggles λ°°μ΄μ ν¬ν¨λ κ°κ°μ ν κΈ μμμ λν΄ 'change' μ΄λ²€νΈ 리μ€λλ₯Ό λ±λ‘νλ€.
μ΄λ²€νΈκ° λ°μνλ©΄ doTheTrick ν¨μκ° νΈμΆλλ€.
μ΄λ²€νΈ 리μ€λμ e.targetμ μ΄λ²€νΈλ₯Ό λ°μμν¨ μμ μ체λ₯Ό κ°λ¦¬ν¨λ€.
doTheTrick ν¨μ
theClickedOne 맀κ°λ³μλ₯Ό ν΅ν΄ μ΄λ€ ν κΈ μμκ° ν΄λ¦λμλμ§λ₯Ό νμΈνκ³ , μ΄μ λ°λΌ λ€λ₯Έ ν κΈ μμλ€μ μ‘°μνλ μν μ μννλ€.
good, cheap, fastλΌλ ν κΈ μμλ€μ΄ λͺ¨λ μ νλμλμ§λ₯Ό νμΈ ν, theClickedOneκ³Ό κ°κ°μ ν κΈ μμλ₯Ό λΉκ΅νμ¬ μ΄λ€ ν κΈ μμκ° ν΄λ¦λμλμ§λ₯Ό νλ³νλ€.
-> good ν κΈ μμκ° ν΄λ¦λμλ€λ©΄, fast ν κΈ μμλ₯Ό μ ν ν΄μ νλ€.
-> cheap ν κΈ μμκ° ν΄λ¦λμλ€λ©΄, good ν κΈ μμλ₯Ό μ ν ν΄μ νλ€.
-> fast ν κΈ μμκ° ν΄λ¦λμλ€λ©΄, cheap ν κΈ μμλ₯Ό μ ν ν΄μ νλ€.
ππ»μ¬μ©μκ° good, cheap, fast μ€μμ μΈ κ°λ₯Ό λμμ μ νν μ μλλ‘ μ ννλ κΈ°λ₯μ ꡬννκ³ μλ€.
.toggle {
visibility: hidden;
}
@keyframes slideOn {
/* xμΆ μ’ν μ΄λμΌλ‘ μ λλ©μ΄μ
μ€μ */
0% {
transform: translateX(0) scale(1);
}
50% {
transform: translateX(20px) scale(1.2);
}
100% {
transform: translateX(40px) scale(1);
}
}
ππ»μλ₯Ό λ€μ΄, scale(1.2)λ μμμ κ°λ‘μ μΈλ‘ ν¬κΈ°λ₯Ό 1.2λ°°λ‘ νλνλ κ²μ μλ―Ένλ€. λ§μ°¬κ°μ§λ‘, scale(0.8)μ μμμ κ°λ‘μ μΈλ‘ ν¬κΈ°λ₯Ό 0.8λ°°λ‘ μΆμνλ€.