netlify' s million devs svg動畫網站的製作
本文詳細介紹了Netlify的“百萬開發器”微型網站的創建,重點是動畫過程。該網站使用大型SVG作為其基礎,巧妙地將其分解為可管理的VUE組件,以便於管理和操縱。
在SVG中構建VUE應用程序
SVG充當坐標系(想想戰艦!),X,Y,寬度和高度定義元素。主VUE應用程序包含標題和一個龐大的SVG。該SVG進一步分解為較小的可重複使用的VUE組件:
- 路徑:由Vuex狀態控制的桌面和移動視圖的單獨組件。
- 電台: 27個單個電台組件(加上文本標籤),以及一年來組織的裝飾元素(樹木,灌木叢等),以便更好地組織。
- “您在這裡”標記:有條件地呈現桌面視圖和登錄用戶。
SVG的靈活性允許嵌套的SVG,定義每個孩子SVG的X,Y,寬度和高度,以精確地將其定位在父級內。<g></g>
元素(類似於HTML DIVS)組組件。一年組件示例:
<template> <g> <app-tree x="650" y="5500"></app-tree> <app-tree x="700" y="5550"></app-tree> <app-bush x="750" y="5600"></app-bush> <app-virtual x="1200" xsmall="50" y="6000" ysmall="15100"></app-virtual> <app-text num="20" url-slug="jamstack-conf-virtual" x="1400" xsmall="50" y="6500" ysmall="15600"> <template v-slot:date>2020年5月27日</template> <template v-slot:event>jamstack conf虛擬</template> </app-text> ... </g> </template> <script> import { AppText, AppTree, AppBush, AppStreetlamp2, } from "@/components"; export default { components: { AppText, AppTree, AppBush, AppStreetlamp2, AppBuildPlugins: () => import("@/components/AppBuildPlugins.vue"), AppMillion: () => import("@/components/AppMillion.vue"), AppVirtual: () => import("@/components/AppVirtual.vue"), }, }; </script>
注意組件的同步和異步加載,以進行性能優化。
使用GSAP和SCROLLTRIGGER的SVG動畫
動畫利用Greensock(GSAP)及其Scrolltrigger插件。核心動畫邏輯:
從“ GSAP”導入{GSAP}; 從“ gsap/scrolltrigger.js”導入{scrolltrigger}; 從“ vuex”導入{mapState}; gsap.registerplugin(scrolltrigger); 導出默認{ 計算:{ ... MapState([“ toggleconfig”,“ startConfig”,“ isanimationDisabled”,“ viewportsize”]),),), },, 方法: { 百萬anim(){ 令vm = this; 令TL; const isscrollelConfig = { scrolltrigger:{ 觸發器:`。百萬$ {vm.num}`, toggleactions:this.toggleconfig, 開始:this.startconfig, },, 預設值:{ 持續時間:1.5, 輕鬆:“正弦”, },, }; // ...動畫邏輯... },, },, 安裝(){ this.millionanim(); },, };
Vuex管理toggleConfig
(控制動畫觸發器)和startConfig
(定義動畫起點)。橫幅動畫的處理方式與滾動觸發的動畫不同。時間表使用標籤進行精確的動畫控制。揮舞腿動畫的一個例子:
tl.add(`百萬美元$ {vm.num}`) 。從( “#前腿R”, { 持續時間:0.5, 旋轉:10, 變形金學:“ 50%0%”, 重複:6, Yoyo:是的, 輕鬆:“正弦”, },, `百萬$ {vm.num}` ) 。從( “#前腿l”, { 持續時間:0.5, 旋轉:10, 變形金學:“ 50%0%”, 重複:6, Yoyo:是的, 輕鬆:“正弦”, },, `百萬$ {vm.num} = 0.25` );
動畫切換和可訪問性
VUEX控制的切換使用戶可以禁用動畫。觀看isAnimationDisabled
狀態,並相應地暫停或重置ScrollTrigger動畫,而無需使用.kill()
允許重新啟動。
可訪問性考慮因素包括使用role="img"
作為裝飾元素,以及用於交互式元素的唯一ID和標題,以確保屏幕讀取器可以有效地導航該網站。文本組件示例顯示瞭如何使SVG文本可訪問:
<template> <a :href="//m.sbmmt.com/link/8f7f2375ba3e2ee3adf67d0e32c683d5"> </a> <title id="analyticsuklaunch">啟動分析</title> <g> <text transform="translate(7.6 14)"><slot name="date">2016年7月13日</slot></text> <text transform="translate(16.5 48.7)"><slot name="event">這裡的東西</slot></text> <text transform="translate(16.5 70)"><slot name="event2"></slot></text> <text transform="translate(164.5 104.3)">查看里程碑</text> </g> </template>
該項目的GitHub存儲庫是開源的。作者承認同事的貢獻。
以上是netlify&#039; s million devs svg動畫網站的製作的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

不同瀏覽器對CSS解析存在差異,導致顯示效果不一致,主要包括默認樣式差異、盒模型計算方式、Flexbox和Grid佈局支持程度及某些CSS屬性行為不一致。 1.默認樣式處理不一致,解決方法是使用CSSReset或Normalize.css統一初始樣式;2.舊版IE的盒模型計算方式不同,建議統一使用box-sizing:border-box;3.Flexbox和Grid在邊緣情況或舊版本中表現有差異,應多測試並使用Autoprefixer;4.某些CSS屬性行為不一致,需查閱CanIuse並提供降級

要使用CSS創建響應式圖片,主要可通過以下方法實現:1.使用max-width:100%和height:auto讓圖片在保持比例的同時自適應容器寬度;2.結合HTML的srcset和sizes屬性智能加載適配不同屏幕的圖片源;3.利用object-fit和object-position控製圖片裁剪與焦點展示。這些方法共同確保圖片在不同設備上清晰、美觀地呈現。

opacity是CSS中用於控制元素整體透明度的屬性,取值範圍為0(完全透明)到1(完全不透明)。 1.常用於圖片hover淡出效果,通過設置opacity過渡增強交互體驗;2.製作背景遮罩層提昇文字可讀性;3.控制按鈕或圖標在禁用狀態下的視覺反饋。需注意它會影響所有子元素,且與rgba不同,後者僅影響指定顏色部分。搭配transition可實現平滑動畫,但頻繁使用可能影響性能,建議結合will-change或transform使用。合理應用opacity能增強頁面層次感和交互性,但應避免干擾用戶

accent-color是CSS中用於自定義復選框、單選按鈕和滑塊等表單元素高亮顏色的屬性;1.它直接改變表單控件選中狀態的默認顏色,如將復選框的藍色勾選標記改為紅色;2.支持的元素包括type="checkbox"、type="radio"和type="range"的輸入框;3.使用accent-color可避免複雜的自定義樣式和額外DOM結構,保持原生可訪問性;4.現代瀏覽器普遍支持,舊瀏覽器需降級處理;5.設置accent-col

The:has()pseudo-classinCSSallowstargetingaparentelementbasedonitschildelements.Itworksbyusingthesyntaxparent:has(child-selector)toapplystylesconditionally.Forexample,div:has(img)appliesstylestoadivcontaininganimage.Multipleselectorscanbeusedwithcomma

瀏覽器默認樣式通過自動應用邊距、填充、字體和表單元素樣式確保基本可讀性,但可能導致跨瀏覽器佈局不一致。 1.默認外邊距和填充改變佈局流,如標題、段落和列表自帶間距;2.默認字體設置影響可讀性,如16px字號和TimesNewRoman字體;3.表單元素在不同瀏覽器顯示差異大,需重置外觀;4.某些標籤如strong和em有默認強調樣式,需顯式覆蓋。解決方法包括使用Normalize.css、重置樣式或全局清除邊距與填充,同時自定義字體和表單樣式以保證一致性。

要美化段落開頭提升視覺吸引力,常見做法是使用CSS的偽元素或手動設置文檔樣式。網頁開發中可用p::first-letter設置首字母樣式,如放大、加粗、變色,但需注意僅適用於塊級元素;若想突出整段首行,則用p::first-line來加樣式;在Word等文檔軟件中可手動調整首字母格式或創建樣式模板,而InDesign有內置“首字下沉”功能適合出版設計;應用時需注意細節,如避免複雜樣式影響閱讀、確保兼容性和格式一致性。

使用CSS的::selection偽元素可自定義網頁文字選中時的高亮樣式,提升頁面美觀與統一性。 1.基礎設置:通過::selection定義background-color與color,如黃色背景配深灰字體;也可限定特定元素如p::selection。 2.兼容處理:添加-webkit-前綴以兼容Safari及移動端瀏覽器,Firefox和Edge標準支持良好。 3.注意可讀性:避免顏色對比過強或過於花哨,應與整體設計協調,例如深色模式下選用柔和藍底提升視覺舒適度。合理運用可增強界面質感,忽略細節則
