目錄
鑰匙要點
>您也可以繪製橢圓,如以下代碼示例所示。這次需要垂直和水平半徑。同樣,所有參數都是強制性的。
線和多邊形
>圖像
開始使用Snap SVG,您需要在HTML文檔中包含SNAP SVG JavaScript文件。您可以從官方的SNAP SVG網站下載它,也可以直接從CDN中包含它。包含SNAP SVG文件後,您可以使用SNAP SVG API開始創建和操縱SVG內容。
>我可以將SNAP SVG用於復雜的動畫嗎?它提供了強大的動畫API,可讓您對任何SVG屬性進行動畫動畫。您還可以使用SNAP SVG的矩陣變換來輕鬆創建複雜的動畫。另外,SNAP SVG支持寬鬆功能,可以用來創建光滑而自然的動畫。
是的,可以與其他JavaScript庫一起使用SNAP SVG。它不會干擾其他庫,也不會修改任何本機JavaScript對象。這使SNAP SVG成為使用其他JavaScript庫的項目。
>我可以使用SNAP SVG創建SVG濾波器嗎?
>
首頁 web前端 js教程 Snap.svg的介紹

Snap.svg的介紹

Feb 20, 2025 pm 12:13 PM

An Introdution to Snap.svg

Snap.svg的介紹

鑰匙要點

    Snap.svg是一個功能強大且靈活的庫,專為使用可伸縮矢量圖形(SVG)而設計,提供掩蓋,剪輯,圖案,漸變等功能。
  • > Snap.svg svg元素可以在snap.svg中分組,以便更容易地將常見的轉換和事件處理應用於組中的所有元素。 Snap.svg >
  • >儘管SVG已經存在了十多年,但由於一些很棒的圖書館,在過去幾年中,它在過去幾年中變得很流行,這是一種在Web應用程序中繪製圖表的一種方式,這些圖書館毫不費力地為開發人員提供了精美的圖表和圖紙:圖表的特定d3.js和cool SVG圖紙和動畫的raphaël。
  • >
  • 最近出現了新的傑出圖書館;他們為前端開發人員和設計師提供了新的方法和驚人的新功能:
  • 正如我們將要看到的
  • snap.svg,提供了最新的SVG功能,例如掩蓋,剪輯,圖案,漸變等...
>

pathsjs是基於SVG的圖表創建的最小庫。它旨在通過生成可與模板引擎一起使用的SVG路徑來支持反應性編程。它可以與基於鬍子的模板引擎(例如ractive。

>儘管不是基於SVG的,但P5值得一提。這是一個嘗試,顯然是一個很好的嘗試來克服影響HTML5畫布元素的傳統問題 - 特別是相互作用。

在本文的其餘部分中,我們將從基礎知識開始。

>raphaël
  • 如果您沒有機會看看Raphaël,則可能應該這樣做。這是Dmitry Baranovskiy作為一個獨奏項目創建的JavaScript的好部分。儘管它最初是一個個人項目,但結果對於接口(非常清晰且一致),性能和外觀(尤其是動畫)而言是顯著的。該庫更朝著“徒手”圖紙和動畫而不是圖表方向傾向。 Graphaël擴展後來被發布以解決此問題,但它沒有像D3那樣流行和廣泛。

    >儘管領先於其他圖書館,但隨著時間的推移,拉法開始顯示其極限。例如,為了與較舊的瀏覽器兼容,Raphaël不支持所有使您的動畫脫穎而出的新的新型SVG功能。

    這就是為什麼其作者決定從一個新的項目Snap.svg開始新鮮的原因,該項目當然受益於設計Raphaël的經驗。 snap.svg也隨著過去而破壞,允許引入一種全新的特殊效果。 >

    哦,snap!

    >在進行SNAP的語法並開始以幾個示例開始之前,讓我們快速回顧一下這個新圖書館的優點:>

    pros:

    >它支持我們上面提到的所有酷功能。
    • snap可以包裹並為現有的SVG動畫。您可以使用Adobe Illustrator,Inkscape或Sketch或load svg異步的字符串等工俱生成SVG,並查詢將SVG文件轉換為精靈所需的零件。
    • >
    • 它是免費的和開源的。
    • >
    • cons:

    >這是一個低級庫,因此,如果您需要可視化數據,不幸的是,尚不支持圖表。
      >
    • 沒有支持數據結合的支持。
    • Snap是一個尚未完全成熟的年輕項目。它已經很棒用於您的個人項目,但是您必須在復雜的項目中使用此方面。
    • 正如我們提到的,SNAP使用舊瀏覽器不支持的功能。儘管尚未提供完整,更新的兼容性表,但此庫應至少在以下瀏覽器版本(和較新)的情況下工作正常:>
    • > firefox ESR 18
    IE 9.0.8

    Chrome 29

      > Opera 24
    • 開始使用snap
    • >從GitHub存儲庫下載源文件後,您可以解壓縮它們並查找包含構建分發文件的DIST文件夾。有關有關用咕unt構建快照或檢查最新版本的詳細說明,請在此處查看。
    • >在新項目的JS文件夾中復制了文件的縮小版本後,只需在HTML頁面中包含腳本即可。假設它位於項目的根目錄中,您只需在頁面關閉的車身標籤之前添加此行:
    >現在,我們準備為矢量圖形創建圖形區域。我們有兩種方法可以做到這一點:

    • 創建一個全新的圖紙表面,將附加到頁面的DOM(內部)。
    • >重新使用現有的DOM元素,然後將其包裹在快照結構中。您可以包裝任何元素,但是對於繪圖方法,您需要一個SVG元素。 >
    • 第一種方法使您可以在JavaScript代碼中明確設置表面積的寬度和高度。如果您想在演示文稿和內容之間實現更大的分離水平,則可以使用第二種方式,在CSS規則中指定值。在高水平上,第一種方法使您可以動態地調整繪圖表面的外觀,但是如果不需要,第二種方法更符合MVC。此外,包裝使您可以導入和修改用外部工具創建的SVG圖紙,如介紹部分。
    因此,例如,要創建一個新的800 x 600像素繪圖區域,您只需要以下JavaScript的行:

    如果您要包裝現有的,請說#complexsvgfromillustrator:

    <span><span><span><script</span> src<span>="/js/snap.svg-min.js"</span>></span><span><span></script</span>></span></span>
    登入後複製
    登入後複製
    登入後複製

    >您仍然可以逃脫一條JavaScript,以導入圖表:>

    <span>var s = <span>Snap</span>(800, 600);</span>
    登入後複製
    登入後複製
    登入後複製
    旁注:對於好奇的讀者:如果您在創建後檢查快照對象,您會注意到它們有一個紙質字段,並證明了Raphaël的遺產。

    >形狀

    <span><span><span><svg</span> id<span>='complexSVGfromIllustrator'</span> version<span>="1.1"</span> xmlns<span>="https://www.w3.org/2000/svg"</span>></span>
    </span>  ...
    <span><span><span></svg</span>></span></span>
    登入後複製
    登入後複製
    登入後複製
    >一旦我們創建了繪圖表面,即我們的快照包裝器,就該在其上繪製一些形狀了。假設您想繪製一個圓圈:

    從文檔中可以看到,circle()方法中的前兩個參數是其中心的坐標,而第三個參數是圓形的半徑。所有這些參數都是強制性的,無法提供它們將導致錯誤。與所有其他繪圖方法一樣,Circle()方法將返回對對象的引用。

    >您也可以繪製橢圓,如以下代碼示例所示。這次需要垂直和水平半徑。同樣,所有參數都是強制性的。

    >

    如果您想繪製矩形,請使用以下代碼。這將創建一個矩形,其左上角(100px,100px),寬度為200px,高度為200px。
    <span>var s = <span>Snap</span>('#complexSVGfromIllustrator');</span>
    登入後複製
    登入後複製
    登入後複製

    > rect()方法的酷事是,它還接受兩個可選參數,以控制圓角的半徑,獨立於垂直和水平軸。這些參數默認為0時未傳遞時,請注意,如果您僅通過一個(水平半徑),則第二個參數將不會設置為零,而是兩個都會假設相同的值。 >>>>>>

    >現在,如果您想從頭開始啟動,則可以創建另一個圖紙表面,也可以只使用Paper.clear()方法來刪除紙張中的所有圖紙。

    >

    線和多邊形

    要涵蓋更複雜的圖紙,我們需要退後一步,然後談論繪圖線。正如您期望的那樣

    <span><span><span><script</span> src<span>="/js/snap.svg-min.js"</span>></span><span><span></script</span>></span></span>
    登入後複製
    登入後複製
    登入後複製
    >更有趣的是繪製複雜的聚會的可能性:var line = paper.polyline(10,100,110,200);原則上等同於上面的Line()方法,但您可能會對它的視覺結果感到驚訝。要看看為什麼,讓我們嘗試一下

    paper.polyline()和paper.polygon()是相同方法的別名,默認情況下,所得的(封閉)多邊形用黑色填充和無衝程繪製。這就是為什麼您看不到上面使用polyline()繪製的行(儘管可以通過檢查頁面檢查,但它確實已將其SVG代碼添加到其容器上)。
    <span>var s = <span>Snap</span>(800, 600);</span>
    登入後複製
    登入後複製
    登入後複製
    要改變這種行為以及其他元素的外觀,我們必須引入屬性。

    屬性

    SNAP元素的屬性概念比平時更廣泛,這意味著它在同一接口下都包含HTML屬性和CSS屬性(而大多數其他庫可以區分HTML屬性的.attr()方法和'。 style()'對於CSS )。通過在快照包裝對像上使用element.attr()方法,您可以設置其類或ID以及其顏色或寬度。

    >

    >如上所述,使用SNAP,您有兩種將CSS屬性分配給元素的方法。一種是將這些屬性包含在單獨的CSS文件中,然後將適當的類分配給您的元素:>

    可以通過使用JavaScript分配這些屬性來獲得相同的結果:

    再次,第一種方式允許內容和演示文稿之間更好地分離,而第二種方式則提供了動態更改屬性的可能性。如果您正在考慮混合兩種策略,請記住,儘管將其分配給元素的時間順序,但CSS文件中定義的規則將勝過您分配的element.Attr()。
    <span><span><span><svg</span> id<span>='complexSVGfromIllustrator'</span> version<span>="1.1"</span> xmlns<span>="https://www.w3.org/2000/svg"</span>></span>
    </span>  ...
    <span><span><span></svg</span>></span></span>
    登入後複製
    登入後複製
    登入後複製
    >如果您尚未維護要樣式的元素的引用,請放心,可以使用CSS選擇器輕鬆地抓住它:
    <span>var s = <span>Snap</span>('#complexSVGfromIllustrator');</span>
    登入後複製
    登入後複製
    登入後複製

    <span>var paper = <span>Snap</span>('#complexSVGfromIllustrator'),
    </span>    circle <span>= paper.circle(100, 50, 10);</span>
    登入後複製
    可以將 SVG元素分組,以便可以更輕鬆地將常見的轉換和事件處理應用於組中的所有元素。創建組很容易:

    小心:訂購或參數很重要!其次,如果您將元素分配給組,則將其從其可能已屬於的任何組中刪除。 > 當然,

    元素在創建後也可以添加到現有組中:
    <span>var ellipse = paper.ellipse(100, 50, 10, 20);</span>
    登入後複製

    >圖像

    snap支持SVG元素內的嵌套柵格圖像,將其異步加載並僅在負載完成時顯示。

    <span><span><span><script</span> src<span>="/js/snap.svg-min.js"</span>></span><span><span></script</span>></span></span>
    登入後複製
    登入後複製
    登入後複製

    可以將結果對象視為SVG元素。請注意,如果您在圖像上使用select()以後將它們檢索,則創建的包裝器將是HTML元素的元素,因此不支持SVG元素可用的大多數方法。

    轉換

    >我們已經看到瞭如何繪製橢圓和矩形等不對稱多邊形。但是,基本方法限制了我們繪製與笛卡爾軸對齊的這些數字。如果我們想畫一個相對於X-y軸旋轉的軸45°的橢圓車怎麼辦?我們無法在創建方法中指定這一點,但是我們可以使用轉換來獲得相同的結果。 同樣,我們可能需要旋轉圖像,或者在創建後的某個時刻移動元素(或組)。 Transform()方法允許我們通過傳遞SVG轉換字符串:>

    此方法可以將字符串或對像作為輸入採用。我們還可以使用與元素關聯的轉換矩陣將相同的轉換應用於另一個元素:>

    要小心:第二個元素的轉換中心仍然是第一個元素的中心,因此最終效果可能會讓您感到驚訝。
    <span>var s = <span>Snap</span>(800, 600);</span>
    登入後複製
    登入後複製
    登入後複製

    > Transform()方法還可以用於檢索其調用元素的轉換描述對象 - 只需在沒有參數的情況下調用它即可。在嵌套元素的情況下,該描述符可用於檢索局部轉換矩陣和差異矩陣:>

    <span><span><span><svg</span> id<span>='complexSVGfromIllustrator'</span> version<span>="1.1"</span> xmlns<span>="https://www.w3.org/2000/svg"</span>></span>
    </span>  ...
    <span><span><span></svg</span>></span></span>
    登入後複製
    登入後複製
    登入後複製
    結論

    本文提供了Snap.svg的基礎知識的介紹。如果您有興趣看到最酷的東西,請繼續關注,因為很快就會發布高級後續行動。

    如果您想了解有關數據可視化和快照的更多信息,請參閱以下一些有用的資源:>

    <span>var s = <span>Snap</span>('#complexSVGfromIllustrator');</span>
    登入後複製
    登入後複製
    登入後複製
    snap.svg教程。

    >從有關數據訪問和高級技術的演示文稿中幻燈片。

    >

    >查看上面在Codepen上使用的某些代碼。

      經常詢問有關SNAP SVG
    1. 的問題(常見問題解答)
    2. SNAP SVG和其他SVG庫之間有什麼區別?
    3. SNAP SVG是一個功能強大且靈活的庫,專為使用可擴展的矢量圖形(SVG)而設計。與其他SVG庫不同,SNAP SVG提供了一種簡單而直觀的API,用於對SNAP SVG生成的現有SVG內容和SVG內容進行動畫和操縱。它還支持大多數SVG功能,包括梯度,圖案和剪裁路徑,並且與所有現代瀏覽器兼容。
    4. >如何開始使用SNAP SVG?

    開始使用Snap SVG,您需要在HTML文檔中包含SNAP SVG JavaScript文件。您可以從官方的SNAP SVG網站下載它,也可以直接從CDN中包含它。包含SNAP SVG文件後,您可以使用SNAP SVG API開始創建和操縱SVG內容。

    >我可以將SNAP SVG用於復雜的動畫嗎?它提供了強大的動畫API,可讓您對任何SVG屬性進行動畫動畫。您還可以使用SNAP SVG的矩陣變換來輕鬆創建複雜的動畫。另外,SNAP SVG支持寬鬆功能,可以用來創建光滑而自然的動畫。

    > SNAP SVG與所有瀏覽器兼容?

    >

    snap svg與所有現代瀏覽器兼容,包括Chrome(包括Chrome) ,Firefox,Safari,Opera和Internet Explorer 9及以上。但是,在較舊的瀏覽器中可能無法完全支持某些SVG功能。

    >

    >如何使用SNAP SVG?

    SNAP SVG提供一個簡單而直觀的API,用於創建交互式SVG內容。您可以使用SNAP SVG的事件處理功能來響應用戶交互,例如點擊或鼠標運動。您還可以使用SNAP SVG的動畫API來創建交互式動畫。

    我可以將SNAP SVG與其他JavaScript庫一起使用嗎?

    是的,可以與其他JavaScript庫一起使用SNAP SVG。它不會干擾其他庫,也不會修改任何本機JavaScript對象。這使SNAP SVG成為使用其他JavaScript庫的項目。

    >如何使用SNAP SVG?

    >我可以使用SNAP SVG創建SVG濾波器嗎?

    是的,SNAP SVG支持SVG過濾器。您可以使用SNAP SVG的過濾器功能來創建和應用SVG濾波器到SVG元素。這使您可以創建廣泛的視覺效果,例如模糊,照明和顏色調整。創建SVG梯度。您可以使用SNAP SVG的梯度函數來創建線性和徑向梯度,並且可以使用SNAP SVG的顏色函數來定義梯度的顏色。

    >

    >我可以使用snap svg創建SVG模式嗎? 🎜>是的,SNAP SVG支持SVG模式。您可以使用SNAP SVG的模式功能來創建和應用SVG模式,以對SVG元素。這使您可以創建廣泛的視覺效果,例如紋理和圖案。

    >

以上是Snap.svg的介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

前端熱敏紙小票打印遇到亂碼問題怎麼辦? 前端熱敏紙小票打印遇到亂碼問題怎麼辦? Apr 04, 2025 pm 02:42 PM

前端熱敏紙小票打印的常見問題與解決方案在前端開發中,小票打印是一個常見的需求。然而,很多開發者在實...

神秘的JavaScript:它的作用以及為什麼重要 神秘的JavaScript:它的作用以及為什麼重要 Apr 09, 2025 am 12:07 AM

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

誰得到更多的Python或JavaScript? 誰得到更多的Python或JavaScript? Apr 04, 2025 am 12:09 AM

Python和JavaScript開發者的薪資沒有絕對的高低,具體取決於技能和行業需求。 1.Python在數據科學和機器學習領域可能薪資更高。 2.JavaScript在前端和全棧開發中需求大,薪資也可觀。 3.影響因素包括經驗、地理位置、公司規模和特定技能。

如何實現視差滾動和元素動畫效果,像資生堂官網那樣?
或者:
怎樣才能像資生堂官網一樣,實現頁面滾動伴隨的動畫效果? 如何實現視差滾動和元素動畫效果,像資生堂官網那樣? 或者: 怎樣才能像資生堂官網一樣,實現頁面滾動伴隨的動畫效果? Apr 04, 2025 pm 05:36 PM

實現視差滾動和元素動畫效果的探討本文將探討如何實現類似資生堂官網(https://www.shiseido.co.jp/sb/wonderland/)中�...

JavaScript的演變:當前的趨勢和未來前景 JavaScript的演變:當前的趨勢和未來前景 Apr 10, 2025 am 09:33 AM

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript難以學習嗎? JavaScript難以學習嗎? Apr 03, 2025 am 12:20 AM

學習JavaScript不難,但有挑戰。 1)理解基礎概念如變量、數據類型、函數等。 2)掌握異步編程,通過事件循環實現。 3)使用DOM操作和Promise處理異步請求。 4)避免常見錯誤,使用調試技巧。 5)優化性能,遵循最佳實踐。

如何使用JavaScript將具有相同ID的數組元素合併到一個對像中? 如何使用JavaScript將具有相同ID的數組元素合併到一個對像中? Apr 04, 2025 pm 05:09 PM

如何在JavaScript中將具有相同ID的數組元素合併到一個對像中?在處理數據時,我們常常會遇到需要將具有相同ID�...

Zustand異步操作:如何確保useStore獲取的最新狀態? Zustand異步操作:如何確保useStore獲取的最新狀態? Apr 04, 2025 pm 02:09 PM

zustand異步操作中的數據更新問題在使用zustand狀態管理庫時,經常會遇到異步操作導致數據更新不及時的問題。 �...

See all articles