Uno dei problemi che troviamo più frequentemente durante la realizzazione di un sito web è la personalizzazione di alcuni elementi, uno di questi è l’input checkbox.
In questa guida vi mostrerò come poter creare dei “finti checkbox” che sostituiranno i nostri input originali e, dato che questi nuovi elementi saranno dei comunissimi div sarà possibile personalizzarne il css senza alcuna restrizione.
See the Pen Checkbox javascript and CSS – Targetweb.it by Riccardo Mel (@riccardomel) on CodePen.
Per prima cosa creiamo il css del nostro nuovo checkbox
.customCheckbox {
width: 60px;
height: 30px;
border-radius: 15px;
float: left;
background-color: rgb(123, 129, 123);
position: relative;
}
.customCheckbox::after {
content: '';
display: block;
position: absolute;
top: 2px;
left: 2px;
width: 26px;
height: 26px;
border-radius: 100%;
background: #fff;
transition-duration: .3s;
transition-timing-function: ease;
}
.customCheckbox.active {
background-color: rgb(21, 146, 21);
}
.customCheckbox.active::after {
left: calc(100% - 28px);
}
Abbiamo creato uno stile per l’elemento .customCheckbox (questo sarà il div che sostituirà i checkbox) e tramite ::after è stato aggiunto al suo interno un elemento che cambierà posizione a seconda se il div principale avrà la classe active oppure no, per fare in modo che l’effetto non sia statico abbiamo assegnato la proprietà transition-duration così da farlo cambiare tramite un animazione e non istantaneamente
Ora dobbiamo fare in modo che i checkbox vengano nascosti e al loro posto venga inserito il nostro nuovo div, per farlo utilizzeremo javascript
var checkboxes = document.querySelectorAll("input[type=checkbox]")
checkboxes.forEach(function (elem) {
var box = createBox()
if (elem.checked) box.classList.add("active")
elem.before(box)
elem.style.display = "none"
box.addEventListener('click', function () {
this.nextSibling.click()
this.classList.toggle("active", this.nextSibling.checked)
})
})
function createBox() {
var box = document.createElement('div')
box.classList.add('customCheckbox')
return box
}
Come potete vedere abbiamo nascosto tutti gli input di tipo checkbox e prima di questi è stato inserito il nostro nuovo div con classe “customCheckbox”.
Al click dell’input sarà aggiunta o tolta a questo la classe “active” a seconda se l’input suo parente (cliccato dinamicamente dopo questo evento) sarà checked oppure no.
Spero che questa guida vi sia stata d’aiuto e per qualsiasi cosa non esitate a chiedere nei commenti.
I nostri partner, Casino Midas Italia, offrono un’esperienza di gioco unica e sicura per i giocatori italiani.






