Flip
perspective
CSS3 gir oss en mulighet for å lage en slags 3d-effekt. Nøkkelen til dette er CSS-egenskapen perspective. Effekten er begrenset og ganske enkel. Dersom vi skal lage en romlig kostruksjon som en bks er dette mulig, men det er ganske komplisert. Det som imidlertid er enkelt er å gi en 3D-effekt når vi roterer elementer. Vi kan lage "flip"-effekter, f.eks. som når vi blar i en bok.
La oss anta at vi ønsker å plassere et bilde vertikalt sentrert inne i et element. Bildet er mindre enn det omgivende elementet.
Dersom vi ikke bruker perspective og lager en 45 graders rotasjon får vi følgende
Hei
her er det litt text
#scene0{ border-style:solid;border-width:thin; width:200px; margin:20px; padding:10px; background-color:#EEE; } #content0{ border-style:solid;border-width:2px;border-color:red; padding:5px; background-color:yellow; transform:rotateX(45deg) }
Dersom vi legger til et perspektiv på en omgivende boksen får vi dette.
Hei
her er det litt text
#scene1{ border-style:solid;border-width:thin; width:200px; margin:20px; padding:10px; background-color:#EEE; perspective:200px; -webkit-perspective:200px } #content1{ border-style:solid;border-width:2px;border-color:red; padding:5px; background-color:yellow; transform:rotateX(45deg) }
Hva betyr egentlig perspective-verdien ? Det beste vi kan si om dette er vel at verdien angir avstanden fra XY-planet, altså egentlig hvor lang unna websiden du er. Prøv deg fram. Verdien skal angis i px.
Dersom vi endrer perspective til 1000x blir det slik:
Hei
her er det litt text
Flip animasjon
Vi forsøker oss med en animasjon. Før musa over elementet
Hei
her er det litt text
#scene3{ border-style:solid;border-width:thin; width:200px; margin:20px; padding:10px; background-color:#EEE; perspective:1000px; -webkit-perspective:400px } #content3{ border-style:solid;border-width:2px;border-color:red; padding:5px; background-color:yellow; transform-style: preserve-3d; transition: all 1.0s linear; } #scene3:hover #content3 { transform: rotateY(180deg); }
Vi ser at vi får som vi måtte forvente at teksten er speilet etter rotasjonen. Kan vi endre forside og bakside ? Vi forsøker oss med to innholds elementer inne i elementer inne i boksen (scene). Du kan inspisere elementet fra nettlesermenyen.
Hei
her er det litt text
Hallo
her er det en annen text
Vi vil rotere om den høyre kanten
Det eneste vi gjør er å legge til transform-origin: 100% 100%;
Hei
her er det litt text
Hallo
her er det en annen text
Det gjenstår som du ser en del før vi har en ferdig bok med flere sider. Ideen er tatt et skritt videre i modulen Bok .