JavaScript: mostrare gli elementi gestendo display: none

JavaScript: mostrare gli elementi gestendo display: none

La proprietà CSS display non può essere animata, quindi non è soggetta né alle transizioni né alle animazioni CSS. L'effetto che si ottiene è quello di un cambio di stato immediato, ad esempio tra lo stato none e block. Questo cambio repentino di fatto annulla qualsiasi animazione o trasformazione che abbiamo impostato per ottenere un effetto simile al metodo .show() di jQuery. Ma c'è una soluzione.

Il seguente codice CSS ci offre un esempio di quello che abbiamo appena detto:


#element {
	width: 150px;
	height: 150px;
	background-color: green;
	transform: scale( 0 );
	transition: all 500ms linear;
	display: none;
}

#element.visible {
	transform: scale( 1 );
}

L'elemento è nascosto tramite display: none in quanto la trasformazione CSS annulla solo le sue proporzioni. Se modificassimo tale dichiarazione applicando contemporaneamente la classe CSS visible perderemmo completamente l'effetto creato dalla transizione.

Quindi:


'use strict';

const show = (element, className) => {
    element.style.display = 'block';
    setTimeout(() => {
        element.classList.add(className);
    },300);
};

Torna su