svg in motion
play

SVG In Motion SVG for Web Designers & Developers | @SaraSoueidan - PowerPoint PPT Presentation

SVG In Motion SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 1 Freelance front-end dev. Wrote the Codrops CSS Reference. Co-authored Smashing Book 5 SVG advocate SVG for Web Designers &


  1. SVG In Motion SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 1

  2. — Freelance front-end dev. — Wrote the Codrops CSS Reference. — Co-authored Smashing Book 5 — SVG advocate SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 2

  3. What’s with all the vowel letters? — Swaïdaan — Swaydein — Sw-"eye"-daan SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 3

  4. What we will cover (not in this particular order): 1. How to Embed SVG 2. The SVG viewBox 3. Animating the viewBox 4. SVG Animation Techniques: CSS, SMIL, JavaScript 5. SVG Sprite Animation Techniques 6. SVG Line Drawing Effects SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 4

  5. 6 Embedding Techniques SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 5

  6. <img src="mySVG.svg" alt="..."/> 1) Image can be cached (Requires HTTP request. But: HTTP/2!). 2) No CSS interactions. 3) No scripting. 4) CSS animations work only if defined inside <svg> SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 6

  7. <picture> <source type="image/svg+xml" srcset="path/to/image.svg"> <img src="path/to/fallback.png" alt="Image description"> </picture> Same as <img> Fallback is included inside <picture> SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 7

  8. background-image: url(path/to/mySVG.svg); Same as <img> , but the SVG can be cached as part of the style sheet if it is inlined using data URIs. SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 8

  9. <object type="image/svg+xml" data="mySVG.svg"> <!-- fallback here; beware of multiple requests --> </object> 1) Image cached. 2) Scripting. 3) Default fallback mechanism. 4) CSS animations and interactions work only if defined inside <svg> SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 9

  10. <iframe src="mySVG.svg"> <!-- fallback here --> </iframe> Same as <object> SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 10

  11. <svg xmlns="http://www.w3.org/2000/svg" …> <!-- svg content --> </svg> 1) Image is not cached. 2) No extra HTTP requests. 3) Scripting. 4) CSS animations and interactions. SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 11

  12. Need to provide Fallback? Read this guide: https://css- tricks.com/a-complete-guide-to-svg-fallbacks/ SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 12

  13. Which embedding technique should you choose?! — Is the SVG animated? — Is it interactive? — What kind of animation? (Does it require JS?) — What browser support do I need (for the animation)? — What kind of content and fallback do you need? (e.g. infographics) SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 13

  14. Quick Animation Recap SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 14

  15. SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 15

  16. SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 16

  17. Accessing an embedded SVG document ( <object> ): window.onload=function() { // Get the Object by ID var a = document.getElementById("svgObject"); // Get the SVG document inside the Object tag var svgDoc = a.contentDocument; // Get one of the SVG items by ID; var svgItem = svgDoc.getElementById("svgItem"); // Set the colour to something else svgItem.setAttribute("fill", "lime"); }; *script accessing the SVG from main page must be CORS compatible SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 17

  18. To Optimize or Not To Optimize SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 18

  19. SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 19

  20. Optimization tools usually change the SVG document structure, and can break any animations you’ve set up. SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 20

  21. CSS, SMIL or JavaScript? SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 21

  22. — SMIL has been deprecated. — Use CSS only for simple animations. — Use JavaScript for complex animations. Re SMIL: You can use a polyfill if you need to make it work. Follow this guide for details on how to use it. SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 22

  23. SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 23

  24. Animating SVG with CSS: The Good, the Bad and the Ugly SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 24

  25. 1) The list of SVG attributes that can be animated with CSS is limited (in SVG 1.1). 2) In SVG2, the list is extended. 3) Most properties are animated on SVG elements just like they are animated on HTML elements. SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 25

  26. Using these properties, you can apply animations and transitions to SVG elements just like you would with HTMl elements, using the main CSS selectors: rect { } #myPath { } .circle { } SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 26

  27. SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 27

  28. SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 28

  29. SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 29

  30. path { transition: d .6s ease-in-out; } path.open { d: "M20.308,..."; } SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 30

  31. <path> <animate attributeName="d" dur="1440ms" repeatCount="indefinite" keyTimes=".." calcMode="spline" keySplines=".." values="M 0,0 C 50,0 50,0 100,0 100,50 100,50 100,100 50,100 50,100 0,100 0,50 0,50 0,0 Z; M 0,0 C 50,0 50,0 100,0 100,50 100,50 100,100 50,100 50,100 0,100 0,50 0,50 0,0 Z; ..."/> https://css-tricks.com/guide-svg-animations-smil/ SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 31

  32. CSS Transformations on SVG elements: SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 32

  33. <!DOCTYPE html> <div style="width: 100px; height: 100px; background-color: orange"> </div> <svg style="width: 150px; height: 150px; background-color: #eee"> <rect width="100" height="100" x="25" y="25" fill="orange" /> </svg> SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 33

  34. Change the tranform-origin value: 1. Using percentage values: The value is set relative to the element's bounding box, which includes the stroke used to draw its border. 2. Using absolute values: The origin is set relative to the entire SVG canvas . SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 34

  35. http://greensock.com/svg-tips *Firefox bug has been fixed in FF44. SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 35

  36. http://greensock.com/svg-tips SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 36

  37. CSS transforms don’t work in IE/Edge. ! SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 37

  38. CSS 3D Transforms on SVG Elements? Don’t count on them yet. You can use standard sprite animation to achieve 3D animation effects. SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 38

  39. What about performance? Some useful (possibly outdated) benchmarks: https:// css-tricks.com/weighing-svg-animation-techniques- benchmarks/ SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 39

  40. The SVG viewBox SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 40

  41. The viewBox is made up of four numerical values: the first two determine the coordinates of the origin of the system, and the other two determine the system’s finite dimensions. viewBox = <min-x> <min-y> <width> <height> These values are animatable. SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 41

  42. SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 42

  43. By changing the value of the viewBox , you change the area of the canvas that is visible inside the SVG viewport. This enables you to zoom in to specific areas or objects. But how do you determine the value for the viewBox to use, to zoom into a particular area of choice? SVG for Web Designers & Developers | @SaraSoueidan | SaraSoueidan.com 43

Recommend


More recommend