CSS
Børre Stenseth
Dynamikk > Translasjon >Sjakkbrett

Animasjon av sjakkbrett

Hva

Vi lager oss et sjakkbrett og ønsker å animere trekk i et parti. Merk at dette bare er et eksempel på animasjon av elementer fra en posisjon til en annen. Det ligger ikke inne noen kontroller av verken lovlige trekk eller rekkefølge. Hvis du vil se dette mer kontrollerte omgivelser så test Sjakk.

Vi ta utgangspunkt i en minimalistisk beskrivelse av sjakktrekk. Du må gjerne redigere denne teksten.

Animasjonen er implementert ved hjelp av to CSS-definisjoner. Den ene som kontrollerer hastigheten er i stilsettet.

fieldset#board{width:320px}
#board table{border-spacing:1px}
.white{background-color:#FFE4B5}
.black{background-color:#D18B47}
.movable{padding:2px;}
/* animation of active image*/
.active{
    position:absolute;   
    -moz-animation:mymove 3s ;
    -webkit-animation:mymove 3s ;
    animation:mymove 3s ;
}

Den andre angir til- og fraposijon. Denne ligger i et eget style-element og "left" og "top" verdiene oppdateres når en animasjon starter.

<style id="keyframes">
    @-moz-keyframes mymove { from{left:0px;top:0px} to{left:400px;top:200px} }
    @-webkit-keyframes mymove { from{left:0px;top:0px} to{left:400px;top:200px} }
    @keyframes mymove {from{left:0px;top:0px} 
                       to{left:400px;top:200px} }
</style>

Javascript-koden blir ltt komplisert fordi vi vi kontrollere rokader og beregne posisjoner. I prinsipp er logikken slik:

1 les neste trekk og kontroller formatet
2 lokaliser de elementene som er til og fra
  disse har samme id som ruteangivelsen i trekket
3 beregn den absolutte posisjonen til disse elementene
4 sett opp keyframes
5 start animasjone med en timeout som rydder opp

--
6 on timeout
	sett endelig posisjon for brikken
	skru av classen active 

Scriptet er i sin helhet slik.

_animate.js

Selve sjakkbrekket er beskrevet som en string som legges inn på siden ved oppstart

_boardBasic.js

Du kan se animasjonen på en litt enklere side:

demo.html https://borres.hiof.no/wep/css/sjakkanimasjon/demo.html
[1] [2]
Referanser
  1. CSS (Cascading Style Sheets) W3C www.w3.org/TR/CSS/ 08-03-2014
  1. CSS Browser support w3schools www.w3schools.com/cssref/css3_browsersupport.asp 28-03-2014
Dynamikk > Translasjon >Sjakkbrett