成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇文章帶你了解SVG marker 標記

開發 前端
SVG標簽用于標簽行或路徑的開始、中間和結尾。例如,可以用圓或正方形標簽路徑的起點,用箭頭標簽路徑的終點。

[[373456]]

SVG標簽用于標簽行或路徑的開始、中間和結尾。例如,可以用圓或正方形標簽路徑的起點,用箭頭標簽路徑的終點。

marker元素定義了在特定的 <path>元素、 <line>元素、 <polyline>元素或者 <polygon>元素上繪制的箭頭或者多邊標簽圖形。

一、Marker 簡單案例

標記是使用<marker>元素創建的。

<marker> 元素必須嵌套在一個<defs>元素內。<defs>元素通常為SVG圖像保留一組可重復使用的定義。

  1. <!DOCTYPE html> 
  2. <html> 
  3. <head> 
  4. <meta charset="utf-8"
  5. <title>項目</title> 
  6. </head> 
  7. <body style="background-color: aqua;"
  8. <svg width="500" height="100"
  9. <defs> 
  10. <marker id="markerCircle" markerwidth="8" markerheight="8" refx="5" refy="5"
  11. <circle cx="5" cy="5" r="3" style="stroke: none; fill:#000000;"></circle> 
  12. </marker> 
  13. <marker id="markerArrow" markerwidth="13" markerheight="13" refx="2" refy="6" orient="auto"
  14. <path d="M2,2 L2,11 L10,6 L2,2" style="fill: #000000;"
  15.          </path> 
  16. </marker> 
  17. </defs> 
  18. <path d="M100,10 L150,10 L150,60" style="stroke: #6666ff; stroke-width: 1px; fill: none;marker-start: url(#markerCircle);marker-end: url(#markerArrow);"
  19.      </path> 
  20. </svg> 
  21. </body> 
  22. </html> 

注:

其中<defs>包含兩個<marker> 元素的元素。

這兩個<marker>元素定義了上圖中顯示的開始和結束標記。其次,注意<path>元素如何使用mark-start和marker-end CSS屬性從其style屬性內引用兩個<mark>元素。這就是為給定路徑指定要使用的標記的方式。

二、常見的標記

1. 定義標記

可以使用<marker>元素定義標記。

例:

  1. <marker id="markerCircle" markerWidth="8" markerHeight="8" refX="5" refY="5"
  2. <circle cx="5" cy="5" r="3" style="stroke: none; fill:#000000;" /> 
  3. </marker> 

2. 自動定向

定義了用作路徑箭頭的三角形。

  1. <svg width="500" height="100"
  2. <defs> 
  3. <marker id="markerSquare" markerWidth="7" markerHeight="7" refX="4" refY="4" orient="auto"
  4. <rect x="1" y="1" width="5" height="5" style="stroke: none; fill:#000000;"
  5. </path> 
  6. </marker> 
  7.  
  8. <marker id="markerArrow" markerWidth="13" markerHeight="13" refX="2" refY="7" orient="auto"
  9. <path d="M2,2 L2,13 L8,7 L2,2" style="fill: #000000;"></path> 
  10. </marker> 
  11. </defs> 
  12.  
  13. <path d="M100,20 l0,50" style="stroke: #0000cc; stroke-width: 1px; fill: none; 
  14.                       marker-start: url(#markerSquare); 
  15.                       marker-end: url(#markerArrow); 
  16.                       marker-mid: url(#markerSquare); 
  17.                     "></path> 
  18.  
  19. <path d="M140,20 l25,50" style="stroke: #0000cc; stroke-width: 1px; fill: none; 
  20.                       marker-start: url(#markerSquare); /* 開始點 */ 
  21.                       marker-end: url(#markerArrow);   /* 中間點 */ 
  22.                       marker-mid: url(#markerSquare); /*結束點 */ 
  23.                     "></path> 
  24.  
  25.  
  26. <path d="M180,20 l50,50" style="stroke: #0000cc; stroke-width: 1px; fill: none; 
  27.                       marker-start: url(#markerSquare); 
  28.                       marker-end: url(#markerArrow); 
  29.                       marker-mid: url(#markerSquare); 
  30.                     "></path> 
  31.  
  32. <path d="M220,20 l50,25" style="stroke: #0000cc; stroke-width: 1px; fill: none; 
  33.                       marker-start: url(#markerSquare); 
  34.                       marker-end: url(#markerArrow); 
  35.                       marker-mid: url(#markerSquare); 
  36.                     "></path> 
  37.  
  38. <path d="M260,20 l50,0" style="stroke: #0000cc; stroke-width: 1px; fill: none; 
  39.                       marker-start: url(#markerSquare);  
  40.                       marker-end: url(#markerArrow); 
  41.                       marker-mid: url(#markerSquare); 
  42.                     "></path> 
  43.  
  44. </svg> 

下面的圖像 :

顯示了具有不同坡度的五條線,它們都使用相同的兩個標記作為開始標記和結束標記。請注意,標記如何自動旋轉以適應使用它們的直線的坡度。

運行效果:

代碼解析

<marker>元素中的<path>將繪制一個尖端指向右側的三角形。但是,如果路徑不是水平線,則需要旋轉三角形,使其適合使用它的路徑的方向。

可以通過將“方向”(orient)屬性設定為“自動”(auto)來執行此操作。它將旋轉<marker>元素內的形狀以適合引用它的路徑。

這是將<mark>元素中的orient屬性設置為auto的結果。也可以將orient屬性的值設定為固定的度數(例如45度)。這將使標記在使用時旋轉該度數。

3. 從其他形狀引用標記

3.1 思路

<path>元素不是唯一可以使用標記的SVG元素。 

<line>,<polyline>和<polygon>元素也可以使用標記。它們以與<path>元素完全相同的方式進行操作:通過在標記開始,標記中間和標記結束(分別為:marker-start,marker-mid和marker-end)CSS屬性中引用<marker>元素的id屬性。

3.2 標記單位

(可以將標記的大小設置為縮放,以適合使用它的路徑的描邊寬度) 。

例:

通過將<marker>元素的markerUnits設置為strokeWidth,可以實現此效果。這實際上是該屬性的默認值,因此,即使您未設置markerUnits屬性,這也是默認行為。

代碼:

  1. <marker id="markerSquare" markerWidth="7" markerHeight="7" refX="4" refY="4" 
  2.    orient="auto" markerUnits="strokeWidth"
  3.    <rect x="1" y="1" width="5" height="5" style="stroke: none; fill:#000000;"/> 
  4. </marker> 

為避免自動縮放標記以使其適應路徑的筆觸寬度,請將markerUnits屬性設置為userSpaceOnUse。這樣,無論使用它的路徑的筆觸寬度如何,標記都將保持其大小。

三、總結

文章基于HTML基礎,介紹了SVG中marker標簽 常見的用法。在實際應用中常見的標簽樣式,對每一種樣式如何生成,都通過案例的分析進行了詳細的講解。

希望通過文章的學習,能夠讓讀者更好的理解SVG。

 

責任編輯:武曉燕 來源: 前端進階學習交流
相關推薦

2020-12-08 08:09:49

SVG圖標Web

2021-02-26 20:01:57

SVG濾鏡元素

2020-12-29 09:39:38

元素屬性定位

2020-12-23 08:12:08

javascriptSVG腳本SVG元素

2021-01-01 09:18:48

SVG圖像元素

2021-02-23 06:51:16

SVGstrokeHtml基礎

2022-05-13 16:21:38

javascrip腳本SVG

2020-12-25 09:42:51

SVGtspanSVG基礎

2020-12-15 08:15:34

SVG元素路徑

2021-02-05 18:36:15

SVG形狀屬性

2021-03-26 09:57:51

SVGHtml基礎SVG圖像

2020-12-04 08:40:29

SVG動畫元素

2020-12-11 08:39:14

SVG代碼剪切

2021-06-30 00:20:12

Hangfire.NET平臺

2023-05-12 08:19:12

Netty程序框架

2021-01-26 23:46:32

JavaScript數據結構前端

2023-07-30 15:18:54

JavaScript屬性

2021-05-18 08:30:42

JavaScript 前端JavaScript時

2021-03-09 14:04:01

JavaScriptCookie數據

2024-04-19 14:23:52

SwitchJavaScript開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久国产 | 国产精品一区二区三区在线 | 99精品欧美一区二区三区 | 欧美国产精品一区二区三区 | av中文字幕在线 | 亚洲精品中文字幕在线 | 日本一区二区在线视频 | 91国内在线观看 | 一级片在线视频 | 91精品国产91久久久久久最新 | 黄色毛片黄色毛片 | 日韩一区二区三区在线视频 | 久久精品国内 | 日本字幕在线观看 | 国产一区二区在线播放视频 | 久草福利| 中文字幕欧美日韩 | 日韩在线欧美 | 日韩欧美精品 | 91在线视频网址 | 国产三级电影网站 | 欧美黑人激情 | 久久在线| 免费毛片网站 | 日本精品视频一区二区三区四区 | 亚洲国产欧美日韩 | 欧美日韩国产一区 | 三级视频在线观看电影 | 日本黄色大片免费看 | 久久久久久久久久久一区二区 | 久久亚洲天堂 | 99久久婷婷国产精品综合 | 国产91在线 | 中日 | 青娱乐一区二区 | 国产精品久久国产精品 | 免费一二区 | 黑人精品欧美一区二区蜜桃 | 日韩一区二区在线播放 | 武道仙尊动漫在线观看 | 国产一二三区免费视频 | av永久 |