- Home
- Categorie
- Coding e Sistemistica
- HTML e CSS
- Animazione di una Div al comando click
-
Animazione di una Div al comando click
Buongiorno, mi sono impelagato nel progettare la mia pagina web. Ho fatto davvero molte ricerche e tentativi ma sono ad un punto morto. Vi sarei veramente grato per un aiuto.
Sto cercando un modo per far partire l'animazione di una div al click di un bottone e fare il reverse dell'animazione ad un nuovo click dello stesso pulsante o anche su di uno differente.
In sostanza ho una div container ed una div content. La div content è proporzionata in percentuale rispetto al container. Vorrei che il content si rimpicciolisse con un click e tornasse alla sua dimensione originale con un nuovo click.Usando la funzione :hover e :focus l'animazione parte tranquillamente ma ho bisogno che parta ad un click.
[HTML]<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento senza titolo</title><style type="text/css">
.container {position: absolute; width:90%; height:100%; left:5%; min-width:1000px; border: 1px solid #000}
.content {position:relative; width:60%; height:90%; top:1%; left:35%; border: 1px solid}
.nav {position:absolute; width:20%; height:90%; min-height:700px; top:1%; left:1%; padding:1%; border: 1px solid}
.bottone {position:relative; width:90%; height:10%; border:1px solid red;text-align:center;}.nav:hover ~ .content {transform-origin:right top; -webkit-transform-origin:right top;transform:scale(0.5);-webkit-transform:scale(0.5); transition:all 2s ease-in; -webkit-transition:all 2s ease-in;}
</style>
</head><body>
<div class="container">
<div class="nav">
</div>
<div class="content"></div></div>
</body>
</html>
[/HTML]Ho provato quindi ad inserire un label ma così non parte:
[HTML]
#start:checked ~ .content {transform-origin:right top; -webkit-transform-origin:right top;transform:scale(0.5);-webkit-transform:scale(0.5); transition:all 2s ease-in; -webkit-transition:all 2s ease-in;}<label for="start">Clicca qui</label>
[/HTML]
Ho quindi optato per creare un @keyframes, mettere in pausa l'animazione all'avvio e con un codice java cambiare lo state dell'animazione in running:
[HTML].content { transform-origin: right top; animation: ridurre 1s ease-out; animation-direction: alternate; animation-fill-mode:forwards; animation-play-state: paused;}
@keyframes ridurre{
from {transform:scale(1.0);
}
to {transform:scale(0.5);
}
}window.onload = function () {
document.getElementById('riduci').onclick = function () {
var elems = document.getElementsByClassName('content');
for (var i = 0; i < elems.length; i++) { elems*.style.animationPlayState = 'running';};
}
}<label id="riduci">
<div id="bottone"><img src="riduci.png" alt="riduci" width="100%"></div>
</label>[/HTML]
In questa maniera l'animazione parte e si interrompe all'ultimo frame, ma siccome non conosco java non ho idea di come dirgli di riprendere l'animazione al nuovo click in reverse.
Qualche consiglio per continuare su questa strada o c'è qualche altro modo che conoscete?
Grazie mille!!