2012-05-03 22 views
7

Considera l'animazione CSS3 con la nave che si sposta sopra il div blu. Per qualche motivo la nave non si muove. L'HTML è il seguente:CSS3 Posizione di animazione

<div id="wrapper"> 
    <div id="sea"> 
    <img src="ship.png" alt="ship" width="128" height="128"/> 
    </div> 
</div> 

Al fine di rendere l'animazione CSS3 Io uso il seguente:

#wrapper { position:relative;top:50px;width:700px;height:320px; 
      margin:0 auto;background:white;border-radius:10px;} 
#sea { position:relative;background:#2875DE;width:700px;height:170px; 
     border-radius:10px;top:190px; } 
#sea img { 
    position:relative;left:480px;top:-20px; 
    animation:myship 10s; 
    -moz-animation:myship 10s; /* Firefox */ 
    -webkit-animation:myship 10s; /* Safari and Chrome */ 
    @keyframes myship { 
    from {left: 480px;} 
    to{left:20px;} 
    } 
    @-moz-keyframes myship { 
    from {left: 480px;} 
    to {left:20px;} 
    } 
    @-webkit-keyframes myship { 
    from {left: 480px;} 
    to{left:20px;} 
    } 
} 

immagine La nave non si muove. Qualsiasi aiuto è molto apprezzato.

+1

Lo so che è un vecchio post, ma volevo condividere questo ... http://www.paulirish.com/2012/why- moving-elements-with-translate-is-better-than-posabs-topleft/ –

risposta

9

dovete dichiarare la vostra fotogramma chiave al di fuori del selettore CSS, così come animare un elemento posizionato in modo assoluto.

http://jsfiddle.net/aNvSf/

tuo css modificato si presenta così:

#wrapper{ 
    position:relative; 
    top:50px; 
    width:700px; 
    height:320px; 
    margin:0 auto; 
    background:white; 
    border-radius:10px; 
} 
#sea{ 
    position:relative; 
    background:#2875DE; 
    width:700px; 
    height:170px; 
    border-radius:10px; 
    top:190px; 
} 
#sea img{ 
    position:absolute; 
    left:480px; 
    top:-20px; 
    animation:myship 10s; 
    -moz-animation:myship 10s; /* Firefox */ 
    -webkit-animation:myship 10s; /* Safari and Chrome */    
} 

@keyframes myship{ 
    from {left: 480px;} 
    to{left:20px;} 
} 
@-moz-keyframes myship{ 
    from {left: 480px;} 
    to{left:20px;} 
} 
@-webkit-keyframes myship{ 
    from {left: 480px;} 
    to{left:20px;} 
}​ 
2

Per animare con left, top, bottom o right, è necessario disporre di un elemento posizionato o fluttuato in modo assoluto. Quindi, modificare la posizione in absolute.

Inoltre, c'erano le parentesi graffe non chiuse } prima di iniziare a dichiarare i fotogrammi chiave.

#sea img { 
    position:absolute; 
    /* ... */ 
} 

Bretelle Errore:

#sea img{ 
     position:absolute; /* absolute */ 
     left:480px;top:-20px; 
     animation:myship 10s; 
     -moz-animation:myship 10s; /* Firefox */ 
     -webkit-animation:myship 10s; /* Safari and Chrome */ 
    } 
/*^You have to close the braces here, before declaring the keyframes. 

Ecco un lavoro demo

+0

non succede nulla – George

+0

@George, stavi cercando di animare il contenitore o img all'interno? – Starx

+0

@George, ho aggiornato anche con la demo di lavoro. – Starx

Problemi correlati