Meer CSS voorstellen: Transitions, Transforms en Animation
Na het voorstel van Daniel Glazman en David Hyatt voor CSS variabelen, heeft David Hyatt met enkele collega's van Apple nog 3 voorstellen tot uitbreiding van CSS standaard gepubliceerd, namelijk: Transitions, Animation en Transforms.
CSS Transforms
CSS Transforms zouden je in staat stellen om simpele en complexere transformaties toe te passen op block-level elementen. Denk hierbij aan functies als rotate, skew, translate en matrix.
Op zichzelf zijn deze functies niet bijzonder handig, hooguit leuk voor een gimmick of wat. Maar wanneer je het combineert met Javascript en CSS Transitions kun je hier erg leuke animaties mee maken.
Deze functionaliteit zit voor een groot deel al in Safari 3.1 (ook beschikbaar voor Windows), al zijn alle CSS properties die dit voorstel beschrijft dan nog netjes geprefixed met -webkit.
Bekijk een voorbeeld van CSS Transforms (Safari 3.1 vereist).
CSS Transitions
Het idee achter CSS Transitions is dat je controle krijgt over de snelheid en verloop waarmee een CSS eigenschap een nieuwe waarde krijgt. Om aan te geven dat een wijziging van de opacity eigenschap 2 seconden moet duren, zou je de volgende CSS code gebruiken:
-
div.myOverlay {
-
transition-property: opacity;
-
transition-duration: 2s;
-
}
Op het moment dat je de opacity waarde zou wijzigen, bijvoorbeeld via Javascript maar ook bijvoorbeeld met de CSS pseudoclass :hover, dan wordt gedurende 2 seconden de opacity waarde verandert totdat de doelwaarde bereikt is. Op die manier krijg je een manier vloeiende overgang in plaats van een plotselinge overgang.
Net als CSS Transforms zijn CSS Transitions ook al te gebruiken in Safari 3.1 waarbij alle CSS properties nog geprefixed zijn met -webkit.
Bekijk een voorbeeld van CSS Transitions & CSS Transforms (Safari 3.1 vereist).
CSS Animations
Met CSS Animations definieer je keyframes waarin je het verloop van een animatie kan opgeven. Dit setje keyframes gebruik je dan als animatie. Zo kun je bijvoorbeeld een animatie die een div van links naar rechts schudt:
-
#div2:hover {
-
animation-name: 'shake';
-
animation-duration: 3s;
-
}
-
-
@keyframes 'shake' {
-
-
from {
-
left: 100px;
-
animation-timing-function: ease-out;
-
}
-
-
25% {
-
left: 50px;
-
animation-timing-function: ease-in;
-
}
-
-
50% {
-
left: 150px;
-
animation-timing-function: ease-out;
-
}
-
-
to {
-
left: 100px;
-
animation-timing-function: ease-in;
-
}
-
}
Conclusie
Het lijkt er op dat Apple een beetje haast krijgt met het ontwikkelen van nieuwe, nog niet gestandardiseerde, functionaliteit voor de webbrowser. Buiten deze 3 voorstellen voor uitbreiding van de CSS standaard heeft het WebKit team namelijk recentelijk ook nog implementaties van CSS Gradients en CSS Canvas drawing opgeleverd.
Het is wat mij betreft een goed iets dat Apple bezig is met dergelijke functionaliteit, vooral ook omdat ze het proberen te standardiseren. Sure, een hoop van deze functionaliteit is beschikbaar via Javascript libraries maar die vereisen een initiele download en hebben tevens geen mogelijkheid tot hardware acceleratie, iets wat de browser zelf wel kan implementeren.
Of de voorstellen uiteindelijk ook geaccepteerd worden als uitbreiding op de CSS standaard is natuurlijk nog maar de vraag, maar het heeft in elk geval de potentie om het werk van de frontend developer een stukje makkelijker en leuker te maken.
Volg Scriptorama via RSS!
Reageer ook!
Nog een nieuwe feature: CSS Masks: http://webkit.org/blog/181/css-masks/
Door Mathieu Kooiman
op 04.25.08 @ 6:25 am | Permalink
Dit gaat wel een beetje ver allemaal.
Misschien wel leuk en handig, maar hier is CSS helemaal niet voor bedoelt, voor allerlei effecten en annimaties.
Ben benieuwd of dit er door komt, ik geef het niet veel kans.
Door Mike
op 04.28.08 @ 10:38 am | Permalink
Ik ben het wel enigsinds eens met de stelling van Mike. Op deze manier krijg je waarschijnlijk nog sneller site met van die overdone effecten.
Krijg je straks nog websites met minimale specs. ;)
Door Alexander
op 04.28.08 @ 8:59 pm | Permalink
Veel van deze dingen zijn al mogelijk met libraries als jQuery UI en Scriptaculous. Het grote verschil hiermee is dat Safari deze dingen direct -en gemakkelijk- mogelijk maakt vanuit de browser.
Ik denk dat de ervaring van webapplicaties veelal rijker gemaakt kan worden, zonder dat daar enorme lappen code voor binnengehaald hoeven te worden. Alles met mate, uiteraard, dat wel.
Door Mathieu Kooiman
op 04.28.08 @ 9:05 pm | Permalink
Gewoon een optie in de browser inbouwen :) (schakel stijl animatie's uit)
Het voordeel boven JavaScript is dat het gebruik kan maken van hard versnelling (al volgens Sitepoint.com )
Transforms kunnen een hele hoop server tijd besparen omdat je geen server-side scripting hier meer voor hoeft te gebruiken.
Het is een mooi iets, maar zoals met alles in het leven: overdaad schaad.
Door Sebastiaan Stok
op 04.29.08 @ 9:40 am | Permalink
En hop, nog een er bij: http://webkit.org/blog/182/css-reflections/
Door Mathieu Kooiman
op 04.30.08 @ 7:03 am | Permalink
Leuke voorstellen. Wat ik nog steeds vreemd vind, is dat nog steeds niemand erop is gekomen het favicon via CSS instelbaar te maken. Dat zou echt zoveel werk schelen!
Door Sander
op 05.01.08 @ 11:11 pm | Permalink
Line and paragraph breaks automatic, e-mail address never displayed, HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>