HTML5之SVG 2D入門8—文件結構及相關元素總結_html5教學技巧
前面介紹了許多的基本元素,包括結構相關的組合和重用元素,這裡先對SVG的文檔結構中剩下的相關元素簡單總結一下,然後繼續向前領略SVG的其他特性。
SVG文件的元素基本上可分為以下幾類:
•動畫元素:animate,animateColor,animateMotion,animateTransform,set;
•解釋元素:desc,metadata,title;
•圖形元素:circle,ellipse,line,path,polygon,polyline,rect;
•結構元素:defs,g,svg,symbol,use;
•漸變元素:linearGradient,radialGradient;
•其他元素元素:a,altGlyphDef,clipPath,color-profile,cursor,filter,font,font-face,foreignObject,image,marker,mask,pattern,script,style,switch,text,view等。
其中圖形元素,漸變元素,文本,圖像元素和組合等都介紹過了,下面介紹另外幾個與結構相關的元素。
視窗-svg元素
可以在svg元素中以任何順序放置任何的其他元素,包括嵌套svg元素。
svg元素所支援的屬性常用的也就是id,class,x,y,width,height,viewBox,preserveAspectRatio,以及fill和stroke的相關屬性。
svg元素支援的事件也是常用的onload,onmouseover,onmousemove,onmousedown,onmouseup,onclick,onfocusin,onfocusout,onresize,onscroll,onunload等。 svg元素就不多說了,完整的屬性和事件清單參考後面的官方文件。
解釋性元素-desc元素與title元素
每個容器元素(可以包含其他容器元素或圖形元素的元素,例如:a,defs,glyph,g, marker,mask,missing-glyph,pattern,svg,switch和symbol)和圖形元素都可以包含desc和title元素,這兩個元素都是輔助性的元素,用來解釋相關情境;它們的內容都是文本。當SVG文檔被渲染的時候,這2個元素不會被渲染到圖形中。這個2個元素之間差異不是太大,title在有些實作中是作為提示訊息出現的,所以通常title是放到父元素的第一個位置。
典型的用法如下:
程式碼如下:
程式碼如下:
Thisisabarchartwhichshows
companysalesbyregion.
通常,最外層的svg元素要配以title說明,這樣程式可讀性更好。
複製程式碼
程式碼如下:
程式碼如下:
xmlns="http://www.w3.org/2000/svg">
viewBox="001010"refX="0"refY="5"
markerUnits="strokeWidth"
markerWidth="4"markerHeight="3"
以下詳細看看marker的相關知識:
1.marker是容器元素,可以存放任意順序的圖形元素,容器元素,動畫,漸變元素等。
2.marker元素可以建立新的視窗:設定viewBox的值。
3.marker比較重要的屬性:
markerUnits="strokeWidth|userSpaceOnUse"
這個屬性定義了屬性markerWidth,markerHeight和marker的內容所使用的座標系統。這個屬性有2個值可選,第一個值strokeWidth是預設值,代表屬性markerWidth,markerHeight和marker的內容所使用的座標系統的單位等於引用該marker的圖形元素的stroke-width設定的值。
例如上面的例子中,marker元素的width是400,height是300,不過千萬不要混淆了,mark元素中的path使用的座標是viewBox設定的新的使用者座標系。
此屬性另外一個取值userSpaceOnUse,代表屬性markerWidth,markerHeight和marker的內容使用引用該marker的圖形元素的座標系統。
refX,refY:定義了引用的點與marker對齊的位置座標。例如上面的例子中,引用的點是終點,要把它對齊到marker的(0,5)位置。注意refX,refY使用的是經過viewBox變換過的最終使用者座標系。
markerWidth,markerHeight:marker視窗的寬和高,這個很好理解。
orient:定義了marker旋轉的角度。可以指定一個角度或直接賦值auto。
auto代表x軸正方向依照下列規則旋轉:
a.如果marker所在的點只屬於一個path,則marker的x軸正向與path走向相同。參看上面例子。
b.如果marker所在的點屬於兩個不同的path,則marker的x軸正向與兩個path的夾角的角等分線走向一致。
4.圖形元素的marker屬性
圖形元素要引用一個marker則需要使用相關的屬性,主要是這3個:marker-start(把引用的marker放到起點),marker- mid(把引用的marker放到除起點和終點外的所有點),marker-end(把引用的marker放到終點)。這3個屬性的取值可能是none(代表不引用marker),marker的引用(引用某marker),inherit(這個不用多說了)。
從上面的範例也可以看到marker的用法。
腳本與樣式-script元素與style元素
實際上,基本上所有的屬性(對於所有元素,不僅是文本)都可以用CSS與一個元素關聯,且所有CSS屬性都在SVG影像中可用。可以直接用樣式屬性設計元素的樣式,或是引用樣式表設計元素的樣式。對XML檔案來說不應該解析樣式表(因為它們偶爾包含會引起問題的字元),因此需要將它們置於XMLCDATA節。腳本也是同樣的道理,需要放到XMLCDATA節。看下面的CSS例子:
.abbreviation{text-decoration:underline;}
]]>
再看腳本的範例:
functionhideReveal(evt){
varimageTarget=evt.target;
vartheFill=imageTarget. getAttribute("fill");
if(theFill=='white')
imageTarget.setAttribute("fill","url(#notes)");
else
imageTarget.setAttribute( "fill","white");
}
]]>
腳本>
patternUnits="userSpaceOnUse"> ;
圖案>
fill =“url(#notes)”筆畫=“黑色”筆劃寬度=“5 ”/>
條件處理-switch 元素
處理屬性是能控制所在元素渲染與否的屬性。基本上大部分元素(特別是圖形元素)都可以指定條件處理屬性。條件處理屬性有3個:requiredFeatures,requiredExtensions和systemLanguage。這些屬性就是一組測試,都允許指定一個值列表(前面兩個屬性是空格隔開的,語言這個屬性是使用空格隔開
SVG的switch元素提供了按指定條件渲染的能力。 ,然後渲染滿足自身條件的第一個子元素,其他的子元素都會被忽略這些屬性和顯示屬性一樣,只是影響直接使用這些屬性的元素的渲染,不會影響引用的元素(比如使用引用的元素)。 (這些元素那麼不是可渲染的,或是引用其他元素)。 >條件處理屬性的值列表參考官方文檔,這裡就看一個小範例:
複製程式碼
開關>
這個例子的意思簡單的說就是:使用的瀏覽器支援過濾器特性,那麼就相當於上面的估計(帶過濾器屬性),如果不支援過濾器特性,就相當於下面的估計。
其實更多的時候,用的比較多的屬性是systemLanguage,就是文字的多語言處理能力。 >
代碼如下:
;
http://msdn.microsoft.com/zh-cn/library/ff971910(v=vs.85 ).aspx
開發中心:
https:// developer.mozilla.org/en/SVG
熱門參考:
http://www.chinasvg.com/
官方文件:http://www.w3 .org/TR/SVG11/

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

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

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

Dreamweaver CS6
視覺化網頁開發工具

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

熱門話題

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

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

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

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

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

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

一、安裝vite-plugin-svg-icons此處還需要安裝下fast-glob相關依賴,不然vite運行npmrundev時會報Cannotfindmodule'fast-glob'的錯誤npmifast-glob@3.x-Dnpmivite-plugin-svg -icons@2.x-D二、在src/components/svgIcon下新建元件index.vueimport{computed}from'vue';cons

一、安裝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
