Questo tutorial spiega come realizzare una semplice animazione di onde del mare, da utilizzare come sfondo in una pagina web o in uno specifico div.

L'idea di base era di avere delle onde stilizzate come sfondo e di muoverle a righe alterne verso destra o sinistra. Per fare questo abbiamo utilizzato le animazioni Css3 applicate a dei div con un'immagine di sfondo ripetuta. 
Dopo aver creato un'immagine png trasparente, con una semplice onda sinusoidale adatta a ripetersi come sfondo, siamo passati alla scrittura del codice Html. Il quale consiste in un div con un colore di sfondo base che contiene 2 div annidati con id #bg1 e #bg2.

<div class="container">
    <div id="bg1">
        <div id="bg2"></div>
    </div>
</div>

Questi 2 div hanno come sfondo l'immagine dell'onda ripetuta orizzontalmente e verticalmente ma, con l'ausilio della proprietà background-position dei Css, è stato possibile spostare differentemente i background dei 2 div: #bg1 contiene le righe di onde dispari e #bg2 quelle pari che sono sfasate orizzontalmente di 20 pixel rispetto alle prime.

#bg1{
    background: transparent url(./img/wave.png) repeat 0 0;
    background-size: 100px 50px;
}
#bg2{
    background: transparent url(./img/wave.png) repeat -10px 25px;
    background-size: 100px 50px;
}

In questo modo lo sfondo è completo ma statico, ora bisogna animarlo utilizzando i Css3. Abbiamo quindi creato 2 diverse animazioni per i movimenti orizzontali degli sfondi dei 2 div:

@keyframes animationWave1 {
    0% { background-position: 0 0; }
    50% { background-position: -20px 0; }
    100% { background-position: 0 0; }
}
@keyframes animationWave2 {
    0% { background-position: -20px 25px; }
    50% { background-position: 0 25px; }
    100% { background-position: -20px 25px; }
} 

Per una maggiore compatibilità abbiamo ripetuto queste regole anche con le desinenze relative ad ogni tipologia di browser: @-moz-keyframes, @-webkit-keyframes, @-ms-keyframes, @-o-keyframes che vedrete nel codice dell'esempio finale. 
Come ultima operazione vanno assegnate le animazioni create ai rispettivi div.

#bg1{
    background: transparent url(./img/wave.png) repeat 0 0;
    background-size: 100px 50px;
    animation: animationWave1 2s ease-in-out infinite;
}
#bg2{
    background: transparent url(./img/wave.png) repeat -10px 25px;	
    background-size: 100px 50px;
    animation: animationWave2 2s ease-in-out infinite;
}

L'effetto è così completo e potete vederlo in funzione al link seguente:
DEMO 1

Abbiamo creato una seconda demo che utilizza la proprietà di sfondi multipli dei Css3 e che ci permette di avere lo stesso identico effetto risparmiando righe di codice Css e Html.
DEMO 2

Commenti

Condividi nei social network

Newsletter

Iscriviti alla newsletter