42
CSS3 Transforms / Transitions / WebGL KSWLee 1

CSS3 2D/3D transform

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: CSS3 2D/3D transform

1

CSS3 Transforms / Transitions / WebGL

KSWLee

Page 2: CSS3 2D/3D transform

2

CSS Level 3 Modules Status

Both 2D/3D transforms and Transition modules are all still working drafts

http://www.w3.org/Style/CSS/current-work

Page 3: CSS3 2D/3D transform

3

CSS 2D Transform

Page 4: CSS3 2D/3D transform

4

2D transform functions

Page 5: CSS3 2D/3D transform

5

Browser Compatibility

Browser Support 2D transformInternet Explorer 9.0 (DX filter since 5.5)Firefox (Gecko) 3.5 (1.9.1)

Opera 10.5Safari 3.1

Chrome 1.0iOS / Android All versions

Page 6: CSS3 2D/3D transform

6

CSS 2D Transform Module Level 3

transform-origin transform

div

{

transfo

rm-orig

in: 50% 50%;

tra

nsform

: scale(2) tr

anslate(10px, 1

0px);

-w

ebkit-transfo

rm-orig

in: 50% 50%;

-w

ebkit-transfo

rm: sc

ale(2) transla

te(10px, 10px);

}

Page 7: CSS3 2D/3D transform

7

2D transform-origin

Scale by 2x and move (1, 0.5)

Page 8: CSS3 2D/3D transform

8

2D transform-origin

move (1, 0.5) and Scale by 2x

Page 9: CSS3 2D/3D transform

9

2D transform-origin

-ms-transform-origin -moz-transform-origin -webkit-transform-origin -webkit-transform-origin -o-transfomr-origin

Default: 50% 50% (Center of the element box)

Could be: [x% y%] [xpx, ypx] [ left | center | right ] || [ top | center | bottom ]

Page 10: CSS3 2D/3D transform

10

2D transform functions

• matrix(<number>, <number>, <number>, <number>, <number>, <number>)

• translate(<translation-value>[, <translation-value>])• translateX(<translation-value>)• translateY(<translation-value>)• scale(<number>[, <number>])• scaleX(<number>)• scaleY(<number>)• rotate(<angle>)• skewX(<angle>)• skewY(<angle>)• skew(<angle> [, <angle>])

Page 11: CSS3 2D/3D transform

11

2D transform functions – transform group

<div style="transform:translate(-10px,-20px) scale(2) rotate(45deg) translate(5px,10px)"/>

<div style="transform:translate(-10px,-20px)"> <div style="transform:scale(2)"> <div style="transform:rotate(45deg)"> <div style="transform:translate(5px,10px)"> </div> </div> </div></div>

Page 12: CSS3 2D/3D transform

12

2D transform matrix

A CSS tool website: http://css3.mikeplate.com/http://www.useragentman.com/matrix/

Page 13: CSS3 2D/3D transform

13

Online Applications

http://www.m4html.com/58-Amazing-CSS3-Image-Galleries-Sliders-Animations/

Page 14: CSS3 2D/3D transform

14

Pure CSS3 Page Flip Effect

http://www.romancortes.com/ficheros/page-flip.html

http://www.romancortes.com/ficheros/page-flip.html

Page 15: CSS3 2D/3D transform

15

What does scale(-1) / scale(1, -1) / scale(-1, 1) mean?

Page 16: CSS3 2D/3D transform

16

CSS 3D Transform

Page 17: CSS3 2D/3D transform

17

Browser Compatibility

Browser Support 3D transformInternet Explorer 10?Firefox (Gecko) ?

Opera ?Safari 4.0

Chrome 12iOS / Android All versions

Page 18: CSS3 2D/3D transform

18

CSS 3D Transform Module Level 3

perspectiveperspective-origintransform-style backface-visibility transformtransform-origin

Page 19: CSS3 2D/3D transform

19

Perspective / Perspective-Origin

perspective

perspective-origin

http://www.webkit.org/blog-files/3d-transforms/perspective-by-example.html

Page 20: CSS3 2D/3D transform

20

CSS 3D Transform Module Level 3

perspectiveperspective-origintransform-style backface-visibility transformtransform-origin

Page 21: CSS3 2D/3D transform

21

transform-style<div id=‘purple’> <div id=‘green’> </div> <div id=‘yellow’> </div></div>

transform-style:preserve-3d; transform-style:flat;http://www.webkit.org/blog-files/3d-transforms/transform-style.html

Page 22: CSS3 2D/3D transform

22

backface-visibility

Backgace-visibility:hidden; Backgace-visibility:visible;

Page 23: CSS3 2D/3D transform

23

3D transform functions• matrix(<number>, <number>, <number>, <number>, <number>, <number>)

• matrix3d(<number>, <number>, <number>, <number>, <number>, <number>, <number>, <number>, <number>, <number>, <number>, <number>, <number>, <number>, <number>, <number>)

• translate(<translation-value>[, <translation-value>])

• translate3d(<translation-value>, <translation-value>, <translation-value>)• translateX(<translation-value>)• translateY(<translation-value>)

• translateZ(<translation-value>)• scale(<number>[, <number>])

• scale3d(<number>, <number>, <number>)• scaleX(<number>)• scaleY(<number>)

• scaleZ(<number>)• rotate(<angle>)

• rotate3d(<number>, <number>, <number>, <angle>)• rotateX(<angle>)• rotateY(<angle>)• rotateZ(<angle>)• skewX(<angle>)• skewY(<angle>)• skew(<angle> [, <angle>])

• perspective(<number>)

Page 24: CSS3 2D/3D transform

24

matrix3d

1 0 0 tx

0 1 0 ty

0 0 1 tz

0 0 0 1

sx 0 0 1

0 sy 0 1

0 0 sz 1

0 0 0 1

1 0 0 1

0 cosθ -sinθ 1

0 sinθ cosθ 1

0 0 0 1

cosθ -sinθ 0 1

sinθ cosθ 0 1

0 0 1 1

0 0 0 1

cosθ 0 -sinθ 1

0 1 0 1

sinθ 0 cosθ 1

0 0 0 1

Translation matrix

Scale matrix

Rotate about X axis

Rotate about Z axis

Rotate about Y axis

matrix3d(00, 01, 02, 03, 10, 11, 12, 13,20, 21, 22, 23,30, 31, 32, 33)

00 10 20 30

01 11 21 31

02 12 22 32

03 13 23 33

matrix3d

03 = 0, 13 = 0, 23 = 0, 33 = 1

Page 25: CSS3 2D/3D transform

25

What does translate3d(0, 0, 0) do?

Page 26: CSS3 2D/3D transform

26

3D Transform Cube Sample

http://desandro.github.com/3dtransforms/examples/cube-01-steps.html

Front:translateZ(100)Back: translateZ(100) rotateZ(-180deg)Right:translateZ(100) rotateY(90deg)Left:translateZ(100) rotateY(-90deg)Top:translateZ(100) rotateX(90deg)Bottom:translateZ(100) rotateX(-90deg)

Page 27: CSS3 2D/3D transform

27

Carousel Sample

http://desandro.github.com/3dtransforms/examples/carousel-02-dynamic.html

Page 28: CSS3 2D/3D transform

28

Webkit Blog Sample

http://www.webkit.org/blog-files/3d-transforms/morphing-cubes.html

Page 29: CSS3 2D/3D transform

29

3D Transform Application

http://www.satine.org/research/webkit/snowleopard/snowstack.html

Page 30: CSS3 2D/3D transform

30

CSS Transition

Page 31: CSS3 2D/3D transform

31

Browser Compatibility

Browser Support TransitionsInternet Explorer 10 (maybe)Firefox (Gecko) 4.0

Opera 10.5Safari 3.1

Chrome 1.0iOS / Android All versions

Page 32: CSS3 2D/3D transform

32

CSS Transition Module Level 3

Transition on left/background with in 1sec

Page 33: CSS3 2D/3D transform

33

Transition Property

• transition-property – CSS property list, e.g. left top background transform

• transition-duration– 5s | 5000ms

• transition-timing-function• transition-delay

Page 34: CSS3 2D/3D transform

34

transition-timing-function

http://www.the-art-of-web.com/css/timing-function/

Page 35: CSS3 2D/3D transform

35

Auto Reversing Transition

Interrupt here. E.g. :hover pseudo element

Page 36: CSS3 2D/3D transform

36

Transition Events

transitionend

Page 37: CSS3 2D/3D transform

37

Sencha Animator

Page 38: CSS3 2D/3D transform

38

WebGL

• WebGL Spec v1.0 released in Mar, 2011 • Not even a w3c working draft for now • Rely on HTML5 canvas • Security issue found in May, 2011 for denial of

service and cross-domain attacking issues• Chrome 12 natively supports WebGL • FireFox 4.0 requires manual steps to enable

Page 39: CSS3 2D/3D transform

39

Graphics Pipeline

Page 40: CSS3 2D/3D transform

40

2D Example

Page 41: CSS3 2D/3D transform

41

Page 42: CSS3 2D/3D transform

42

THE END