Benvenuto nella guida completa per creare effetti di scambio DIV con JavaScript!
In questa guida imparerai come creare uno degli effetti più accattivanti per impressionare i visitatori del tuo sito: l'inversione dinamica della posizione di due DIV attraverso un semplice script JavaScript.
L'effetto che andremo a creare permette di invertire la posizione di due DIV con un semplice click. Questa tecnica è utilizzabile per qualsiasi tipo di contenuto, dalle semplici porzioni di testo a intere sezioni del sito.
Immagina di avere un sito con:
Con questo script puoi permettere agli utenti di invertire le posizioni, spostando il menu a destra e il contenuto a sinistra!
Questo DIV contiene elementi HTML formattati
Questo è un semplice testo generico senza elementi HTML complessi.
📝 Contenuto testuale semplice
Il codice è composto da 3 parti principali:
Contiene la struttura base con i DIV da invertire ed il loro contenuto:
<center>
<h3>Click on a DIV to swap the content</h3>
</center>
<br>
<button id="switch"> click me </button>
<div id="divcont">
<div id="div1">
div <b>with</b> HTML tags
<hr>
<ul>
<li> List item 1</li>
</ul>
</div>
<div id="div2">
div <b>without</b> HTML tags
<hr>
generic text line
</div>
</div>
Definisce gli stili dei DIV per renderli visivamente accattivanti:
div:hover {
cursor: pointer;
}
#div1 {
width: 60%;
margin: 10px;
padding: 10px;
color: black;
background-color: green;
}
#div2 {
width: 60%;
margin: 10px;
padding: 10px;
color: black;
background-color: violet;
}
#divcont {
display: flex;
width: 70%;
justify-content: center;
margin: auto;
}
#switch {
display: block;
margin: auto;
background-color: white;
padding: 10px 35px;
font-size: 1.3rem;
border-radius: 10px;
}
Contiene lo script che "fa la magia" dello scambio:
var div_cont = document.getElementById('divcont');
var div_sw = document.getElementById('switch');
var div1 = document.getElementById('div1');
var div2 = document.getElementById('div2');
var div_array = [];
div_array[0] = div1;
div_array[1] = div2;
for (var i=0; i<div_array.length; i+=1) {
div_cont.appendChild(div_array[i]);
}
document.body.appendChild(div_cont);
div_sw.onclick = function() {
if (div_array[0] === div1){
div_array[0] = div2;
div_array[1] = div1;
} else if (div_array[0] === div2){
div_array[0] = div1;
div_array[1] = div2;
}
for (var i=0; i<div_array.length; i+=1) {
div_cont.appendChild(div_array[i]);
}
}
Lo script inizia ottenendo i riferimenti agli elementi DOM necessari attraverso getElementById()
.
Viene creato un array div_array
che mantiene l'ordine corrente dei DIV.
I DIV vengono aggiunti al contenitore nell'ordine iniziale usando appendChild()
.
Quando viene cliccato il pulsante, l'ordine nell'array viene invertito e i DIV vengono riposizionati.
Il trucco sta nell'utilizzo di appendChild()
: quando si aggiunge un elemento che è già presente nel DOM, viene automaticamente spostato nella nuova posizione invece di essere duplicato!
Questo semplice ma efficace script JavaScript dimostra come poche righe di codice possano creare un effetto visivo impressionante. La tecnica è facilmente estendibile e può essere applicata a qualsiasi tipo di contenuto web.
💡 Suggerimento: Prova a modificare gli stili CSS e il contenuto dei DIV per creare la tua versione personalizzata!