首頁 web前端 H5教程 HTML5之SVG 2D入門1—SVG(可縮放向量圖形)概述_html5教學技巧

HTML5之SVG 2D入門1—SVG(可縮放向量圖形)概述_html5教學技巧

May 16, 2016 pm 03:50 PM
2d svg

點陣圖與向量圖
以前,瀏覽器中顯示的圖形,例如jpeg、gif等,都是點陣圖,這些圖像格式是基於光柵的。在光柵影像中,影像檔案定義了影像中每個像素的色彩值。瀏覽器需要讀取這些值並做出相應行動。這種影像的再現能力比較強,但是在某些情形下會顯得不足。例如,當瀏覽器以不同大小顯示一副影像時,通常會產生鋸齒邊緣,這時,瀏覽器必須為那些在原始影像中不存在的像素插入或猜測數值;這會導致影像失真。此外,針對點陣圖進行動畫,最多也僅限於產生「翻動書本」類型的動畫,即快速連續地顯示單獨影像。

向量圖透過指定為確定每個像素的值所需的指令而不是指定這些值本身,克服了這些困難中的一部分。例如,向量圖形不再為一個直徑一英寸的圓提供像素值,而是告訴瀏覽器創建一個直徑一英寸的圓,然後讓瀏覽器(或插件)做其餘事情。這消除了光柵圖形的許多限制;使用向量圖形,瀏覽器只要知道它必須畫一個圓。如果影像需要以正常大小的三倍來顯示,那麼瀏覽器只要以正確的大小畫圓而不必執行光柵影像通常的插入法。類似地,瀏覽器接收的指令可以更容易地與外部資訊來源(如應用程式和資料庫)綁定,要對圖像製作動畫,瀏覽器只要接收有關如何操縱屬性(如半徑或顏色)的指令即可。
HTML體系中,最常用的繪製向量圖的技術是SVG和HTML5新增加的canvas元素。這兩種技術都支援繪製向量圖和光柵圖。

SVG概述
可縮放向量圖形(Scalable Vector Graphics,簡稱SVG)是一種使用XML來描述二維圖形的語言(SVG嚴格遵從XML語法)。 SVG允許三種類型的圖形物件:向量圖形形狀(例如由直線和曲線組成的路徑)、圖像和文字。 可以將圖形物件(包括文字)分組、樣式化、轉換和組合到先前呈現的物件中。 SVG 功能集包含巢狀轉換、剪下路徑、alpha 遮罩和範本物件。

SVG繪圖是互動式和動態的。 例如,可使用腳本來定義和觸發動畫。這一點與Flash相比很強大。 Flash是二進位文件,動態建立和修改都比較困難。而SVG是文字文件,動態操作是相當容易的。而且,SVG直接提供了完成動畫的相關元素,操作起來非常方便。

SVG與其他Web標準相容,並直接支援文件物件模型DOM。這點也是與HTML5中的canvas相比很強大的地方(這裡注意,SVG內部也是用一個類似的canvas這樣的東西來展示SVG圖形,到後面你會發現很多特性和HTML5的canvas還有點像;文中如果沒明確說明是SVG的canvas的話,都代指HTML5中的canvas元素)。因而,可以很方便的使用腳本實現SVG的許多進階應用。而且SVG的圖形元素基本上都支援DOM中的標準事件。大量事件處理程序(如“onmouseover”和“onclick”)可指派給任何SVG圖形物件。 雖然SVG的渲染速度比不上canvas元素,但勝在DOM操作很靈活,這個優點完全可以彌補速度上的劣勢。

SVG既可以說是一種協議,也可以說是一門語言;既是HTML的一個標準元素,也是一種圖片格式。
SVG並不是HTML5中的東西,但是也算頁面時興的技術之一,姑且也放到這個專題下了。

SVG與其它圖片格式的比較
SVG與其它的圖片格式相比,有很多優點(很多優點來自向量圖的優點):
• SVG文件是純粹的XML, 可被非常多的工具讀取和修改(例如記事本)。
• SVG 與JPEG 和GIF影像比起來,尺寸更小,且可壓縮性更強。
• SVG 是可伸縮的,可在影像品質不下降的情況下放大,可在任何的解析度下被高品質列印。
• SVG 圖像中的文字是可選的,同時也是可搜尋的(很適合製作地圖)。
• SVG 可以與 Java 技術一起運作。
• SVG 是開放的標準。

SVG與Flash的比較
SVG 的主要競爭者是Flash。與Flash相比,SVG 最大的優勢是它與其他標準(例如XSL和DOM)相容,操作方便,而Flash則是未開源的私有技術。其它的例如儲存的格式,動態生成圖形等方面,SVG也佔有很大的優勢。

SVG的呈現方式
關於支援HTML5與SVG的瀏覽器不是這裡討論的重點,基本上裝上最新的Chrome或者FireFox瀏覽器就差不多了(IE用戶請裝IE9就對了,至於IE9之前的版本,需要裝SVG的插件,這裡就直接略過了)。對於直接支援SVG的瀏覽器,SVG主要採用兩面兩種呈現的方式。

內聯到HTML
SVG是標準的HTML元素,直接寫到HTML中就可以了,看下面的例子:

複製代碼
代碼如下:






My First SVG Page


width="200px" height=" 200px">
fill="none" stroke="black"/>
style="stroke: black; fill: red;"/>




請注意開頭的部分xml聲明,與svg的命名空間xmlns、版本version等部分,主要是考慮相容性的問題;這些部分在HTML5中基本上都可以不用寫了(寫不寫還是自己瞧著辦吧)。

獨立SVG檔案
獨立SVG指的是透過使用svg檔案副檔名來提供向量圖形檔案格式。在瀏覽器中嵌入這個svg檔案就可以使用了。
1.獨立的SVG檔案/頁面,定義的範本基本上就像下面的一樣:

複製程式碼
複製程式碼


代碼如下:






把這樣的文字檔案保存成以svg為副檔名的文件,例如sun.svg,這樣的文件可以直接用瀏覽器開啟瀏覽,也可以作為引用嵌入到別的頁面中。
2.HTML引用外部的SVG檔。
使用object或者img元素嵌入svg圖形就可以了,例如下面的小例子:
複製代碼


代碼如下:





My First SVG Page


width="300px" height="300px">

Your browser does not support SVG - please upgrade to a modern browser.


svg not supported!


其實SVG也可以放在其他的XML文件中,也可以像其他的XML文件一樣,使用XML相關的技術格式化和驗證,這個不是重點,這裡略去了。


SVG的渲染順序
SVG是嚴格按照定義元素的順序來渲染的,這個與HTML靠z-index值來控制分層不一樣。在SVG中,寫在前面的元素先被渲染,寫在後面的元素後被渲染。後渲染的元素會覆蓋前面的元素,雖然有時受透明度影響,看起來不是被覆蓋的,但是SVG確實是嚴格按照先後順序來渲染的。 注意:SVG是以XML定義的,所以是大小寫敏感的,這點與HTML不一樣。
實用參考
官方文件:http://www.w3.org/TR/SVG11/
腳本索引: http://msdn.microsoft.com/zh-cn/library/ff971910(v=vs.85).aspx
開發中心:https://developer.mozilla.org/en/ SVG熱門參考:http://www.chinasvg.com/
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡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脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

聊聊如何利用 SVG 實現圖片馬賽克效果 聊聊如何利用 SVG 實現圖片馬賽克效果 Sep 01, 2022 am 11:05 AM

不借助 Javascript,如何利用 SVG 實現圖片馬賽克效果?下面這篇文章就來帶大家詳細了解一下,希望對大家有幫助!

svg怎麼轉jpg格式 svg怎麼轉jpg格式 Nov 24, 2023 am 09:50 AM

svg可以透過使用影像處理軟體、使用線上轉換工具和使用Python影像處理庫的方法來轉jpg格式。詳細介紹:1.影像處理軟體包括Adobe Illustrator、Inkscape和GIMP;2、線上轉換工具包括CloudConvert、Zamzar、Online Convert等;3、Python影像處理庫等等。

深入淺析vue3+vite中怎麼使用svg圖標 深入淺析vue3+vite中怎麼使用svg圖標 Apr 28, 2022 am 10:48 AM

svg圖片在專案中使用的非常廣泛,以下這篇文章帶大家介紹如何在vue3 + vite 中使用svg圖標,希望對大家有所幫助!

北大出品:紋理品質與多視角一致性的最新SOTA,在2分鐘內實現1張圖的3D轉換 北大出品:紋理品質與多視角一致性的最新SOTA,在2分鐘內實現1張圖的3D轉換 Jan 10, 2024 pm 11:09 PM

只要兩分鐘,玩圖片轉3D!還是高紋理品質、多視角高一致性的那種。不管是什麼物種,輸入時的單視圖圖像還是這樣嬸兒的:兩分鐘後,3D版大功告成:△上,Repaint123(NeRF);下,Repaint123(GS)新方法名為Repaint123,核心思想是將2D擴散模型的強大影像生成能力與再繪策略的紋理對齊能力相結合,來產生高品質、多視角一致的影像。此外,該研究還引入了針對重疊區域的可見性感知自適應再繪強度的方法。 Repaint123一舉解決了先前方法多視角偏差大、紋理退化、生成慢等問題。目前項

VUE3入門教學:使用Vue.js外掛程式玩SVG VUE3入門教學:使用Vue.js外掛程式玩SVG Jun 16, 2023 am 09:48 AM

隨著現代Web前端開發的不斷發展,越來越多的技術被廣泛應用於實際開發中。其中,Vue.js是目前最受歡迎的JavaScript框架之一,它基於MVVM模式,提供了豐富的API和元件庫,使得開發響應式、可重複使用、高效的Web應用變得更加容易。而目前最新的Vue.js3版本相較於舊版,又有著更好的性能和更豐富的特性,引起了廣泛的關注和研究。本文將會為大家介紹一種

詳解用SVG為 favicon 新增標識 詳解用SVG為 favicon 新增標識 Sep 07, 2022 am 10:30 AM

怎麼使用SVG為 favicon 新增標識?以下這篇文章為大家介紹一下使用 SVG 產生帶有標識的 favicon的方法,希望對大家有幫助!

vue3+vue-cli4中怎麼使用svg vue3+vue-cli4中怎麼使用svg May 11, 2023 pm 05:58 PM

一、安裝svg-sprite-loadernpminstallsvg-sprite-loader--save-dev二、在src/components/svgIcon下新建元件index.vueimport{computed}from"@vue/reactivity";exportdefault{name:"baseSvgIcon", props:{iconClass:{type:String},className:{type:String},},setup

在HTML5畫布上繪製SVG文件 在HTML5畫布上繪製SVG文件 Sep 15, 2023 pm 03:09 PM

要在畫布元素上繪製HTMLImageElements,請使用drawImage()方法。此方法使用src=”mySVG.svg”定義一個Image變量,並在載入時使用drawImage。 varmyImg=newImage();myImg.onload=function(){  ctx.drawImage(myImg,0,0);}img.src="http://www.example.com/files/sample.svg";

See all articles