商品簡介
在製作Web動畫效果時,使用SVG製作動畫是我們應該掌握的技能之一。本書詳細介紹了 SVG的基礎知識、如何使用SVG製作動畫、製作SVG動畫的工具及相關的JavaScript庫。除些之外,本書也探討了SVG還能做的一些十分有趣的事情,比如數據可視化、可伸縮的矢量圖、響應式設計等。Sarah為廣大讀者提供了一本非常優秀的書籍,可幫助讀者更系統地掌握SVG和 SVG製作動畫相關的技術知識。如果你想掌握這項技術,那麼本書是值得你花時間去閱讀和研究的一本書。
作者簡介
Sarah Drasner是一獲獎的佈道者、顧問和技術人員。Sarah也是Web動畫工作室的聯合創始人,擁有Val Head。她被授予高級SVG動畫前端之師之稱,並曾擔任Truli(Zillow)的UX設計師和經理。Sarah贏得一系列獎項,包括CSS Dev Conf的“最佳最佳獎”,以及來自CSS設計獎的“最佳代碼辯論者”。作為一名Web開發人員和設計師,她已經有了15年之久的工作經驗,她還曾擔任過插畫師和大學教授,並在Santorini教過一個Byzantine的圖標畫師。
譯者簡介
大漠
W3CPlus創始人,目前就職於淘寶。對HTML5、CSS3和CSS處理器等前端腳本語言有非常深入的認識和豐富的實踐經驗,尤其專注對CSS3和動畫的研究,是國內最早研究和使用CSS3和CSS處理器技術的一批人。現在主要在探討學習JavaScript、React和Vue相關技術知識。CSS3、CSS處理器和Drupal中國佈道者。2014年出版《圖解CSS3:核心技術與案例實戰》。
姜天意
昵稱99,阿裡巴巴盒馬鮮生前端開發專家,目前主要負責盒馬數據可視化相關產品的研發。
田淮仁
騰訊前端開發,PWA 和 httplive 開源項目作者。熱愛分享,有自己的博客:villainhr.com 和微信公眾號:前端小吉米。對 H5 音視頻技術,直播和 P2P 有一定的技術積累。
歐陽湘粵
大四准畢業碼農,曾在百度和騰訊實習,對新技術有著強烈的熱愛,喜歡折騰新事物,希望未來能夠繼續學到更多有意思的東西,Long May The Sunshine。
小春
摩拜前端負責人,前滴滴公共前端負責人。擔任過 GIAC 全球互聯網架構大會 - 前端出品人;寫過 3 本前端書籍,最近一本:國內第一本 Vue.js 書籍《Vue.js權威指南》;樂於分享和學習交流,參加過 vueconf、SDCC 2016 中國軟件開發者大會等。
序
本書贏得的讚譽
很少有人像 Sarah那樣熱衷於 Web動畫,她的新書就是一個寶庫。如果你想在 Web上使用 SVG動畫,那麼必須閱讀這本書。
―Jack Doyle,GreenSock
Sarah Drasner寫的動畫總是令人愉悅,流暢而優雅。她不僅是一位優秀的動畫設計師,她還解釋了為什麼以及如何使用這些工具來創造你想要的動畫。她通過簡單明瞭的方式指導讀者理解重要的概念,並為讀者推薦能用於跨瀏覽器製作動效的庫。即使你對 SVG和動畫原理有所瞭解,也不會後悔擁有這本書,因為書中的內容能讓你變得更強大。
―Chris Lilley,SVG之父
SVG動畫對於任何使用 SVG的人來說都是必須掌握的。Sarah Drasner把她所知道的動畫知識點整合在一起,向讀者展示了如何在動畫中做出最好的選擇,以及如何用最專業的技術來完成動畫。
―Val Head,設計界知名動畫設計師
Sarah Drasner既是一位令人難以置信的藝術家,也是一位務實、注重細節的 Web開發者。 SVG動畫為 Web上的矢量動畫提供了實用的解決方案,並且通過一系列的工具幫助你不讓技術限制你的創造力。
―Amelia Bellamy-Royds,SVG Colors, Patterns & Gradient、 SVG Essentials (第二版 )、SVG Text Layout和 Using SVG with CSS3 and HTML5的作者
譯者序
眾所周知,SVG(可縮放矢量圖)對於 Web而言並不是一個全新的課題,只不過近些年 SVG在 Web頁面或者 Web應用程序中使用的頻率越來越高。這次非常榮幸能和社區的小夥伴一起參與翻譯 Sarah的著作。
SVG自發明以來沉寂了非常長的一段時間,由於瀏覽器廠商對 SVG技術支持不夠強大,所以在 Web中的使用機會並不多,而且其發展也是曲折的。不過值得慶倖的是, SVG以它優秀的兼容性、可適配性在開源社區重新擁有了重要的地位,而且近一兩年來,使用 SVG的場景也越來越多。
相對而言,SVG具有如下一些獨特的優點。
. 數據可視化:真實的數據直觀地表達了人們想要表達的想法,並且易於複雜思想的交流和展現,而 SVG對於數據可視化的展示來說具有一定的優勢和可擴展性。
. 響應式:對於設備品類繁多的今天,如果要讓一張圖片能很好地兼容各種設備平臺,那麼 SVG是最佳選擇之一。因為 SVG是矢量圖,其具有獨特的可伸縮性,能很好地適應各種屏幕尺寸的設備。
. 性能表現:如果在 Web應用或 Web頁面中正確使用 SVG,可以減少網站加載的資源,特別是在響應式 Web應用中,這個特性顯得更為顯著。
. 可操作的 DOM結構:對於開發者而言, SVG還有另一個有吸引力的特性,那就是它類似於 HTML,具有可操作的 DOM。這意味著用戶可以使用代碼直接實現想要的矢量圖效果,而且還能為屏幕閱讀器提供更多的信息,並且可以很好地通過給 DOM添加適合的動畫,讓 SVG炫動起來。
本書由始至終都貫穿著 SVG的相關知識。我們將討論 SVG DOM的基礎知識,它結構簡單,能讓人感覺代碼淺顯易懂。還將討論 SVG性能方面的知識,將學到如何精簡 SVG文件的體積和結構,借此避免網站性能由於 SVG的原因大打折扣。必不可少的,我們還會討論如何通過 CSS 和 JavaScript 製作 SVG 動畫,來完成優美且有趣的動畫效
目次
目錄
序. ..xiv
前言xvi
第 1章 剖析 SVG. ....................... 1
SVG DOM語法 ............................ 2
viewBox 和 preserveAspectRatio .. 2
繪製圖形 ....................................... 5
響應式 SVG、組和繪製路徑 ........ 6
SVG 的導出、建議及優化 ............ 9
減少路徑點 ................................. 11
優化工具 ..................................... 12
第 2章 使用 CSS製作 SVG動畫...14
用 SVG做動畫............................ 16
使用 SVG繪圖的優勢 ................ 18
順暢的動畫體驗 .......................... 20
第 3章 CSS.動畫和手繪 SVG.Sprite. .....................................21
使用 steps()和 SVG Sprite製作關鍵幀動畫 ....................... 21
在 Illustrator中使用模板繪製 ..... 24
在 SVG編輯器或圖紙中逐幀繪製並且使用 Gruntiocon生成 Sprite .......................... 26
用簡易代碼模擬複雜運動 ........... 26
簡單重複行走 ............................. 27
第 4章 創建響應式.SVG.Sprite. ... 32
用於響應式的 SVG Sprite圖和 CSS ................................... 33
分組和導出 ................................. 35
viewBox的技巧 .......................... 36
響應式動畫 ................................. 37
第 5章 不使用任何額外庫來創建 UI/UX動畫............................. 39
用戶體驗模式中的上下文切換 ... 39
變形 ..................................... 41
展現 ..................................... 41
隔離 ..................................... 42
樣式 ..................................... 43
預期提示 ............................. 45
交互 ..................................... 46
節約空間 ............................. 47
總結 .... 48
變換的圖標.......................... 48
第 6章 動態數據可視化............... 55
為什麼要在數據可視化中使用動畫 .................................... 56
使用 CSS動畫的 D3示例 ........... 56
使用 CSS動畫的 Chartist示例 ... 59
用 D3 來做動畫........................... 61
鏈式和重複.......................... 64
第 7章 Web動畫技術大比拼........ 65
原生動畫 ..................................... 65
CSS/Sass/SCSS.................... 65
requestAnimationFrame() .... 67
canvas .................................. 67
Web 動畫 API ...................... 68
第三方框架 ................................. 68
GreenSock(GSAP) ............ 68
mo.js .................................... 69
Bodymovin’ ........................ 70
不推薦使用 ................................. 70
SMIL ................................... 70
Velocity.js ............................ 70
Snap.svg .............................. 71
基於 React的動畫工作流 ........... 71
React-Motion ....................... 72
在 React中使用 GSAP ........ 73
在 React中使用 canvas ....... 73
在 React中使用 CSS ........... 73
總結 .... 74
第 8章 用 GreenSock做動畫...... 75
GreenSock的基本語法 ............... 76
TweenMax/TweenLite .......... 76
.to/.from/.fromTo ................. 76
Staggering ........................... 77
element ................................ 79
Duration .............................. 79
delay .................................... 79
動畫的屬性 ................................. 79
easing .................................. 81
第 9章 GreenSock中的時間軸. ... 83
一個簡單的時間軸 ...................... 83
相對標簽 ..................................... 85
主時間軸和所嵌套的場景 ........... 89
代碼的邏輯組織 .................. 90
循環 ..................................... 92
暫停和暫停事件 .................. 94
其他關於時間軸的方法 ....... 95
第 10章 MorphSVG.和路徑動畫.. 98
MorphSVG .................................. 98
findShapeIndex() ................. 99
路徑動畫 ................................... 101
第 11章 交錯效果、Tweening.HSL和 SplitText的文本動畫......106
交錯的動畫 ............................... 106
HSL顏色漸變動畫 ................... 110
文字切分 ................................... 114
第 12章 DrawSVG和 Draggable...................................... 117
Draggable.................................. 117
drag類型 ........................... 119
hitTest() ............................. 119
用 Draggable來控制時間軸 ...................................... 120
DrawSVG .................................. 122
第 13章 mo.js. .......................125
mo.js基礎介紹 .......................... 125
圖形 .. 125
圖形的運動 ............................... 128
鏈式調用 ........................... 130
旋渦動畫 ........................... 131
爆炸式的效果 .................... 133
時間軸控制工具 ................ 134
補間動畫 ........................... 135
路徑函數 ........................... 136
mo.js提供的輔助工具 .............. 137
第 14章 React-Motion...........1