marker

Baseline 已廣泛支援

該特性已非常成熟,可在多種裝置和瀏覽器版本上使用。自 2017 年 4 月以來,它已在各大瀏覽器上可用。

marker CSS 屬性指向一個標記,該標記將繪製在元素路徑的第一個、中間和最後一個頂點上,即所有頂點上。該標記必須使用 SVG <marker> 元素定義,並且只能透過 <url> 值引用。CSS 屬性的值會覆蓋 SVG 中 marker-startmarkermarker-end 屬性的任何值。

對於許多支援標記的形狀,第一個和最後一個頂點位於同一位置:例如,<rect> 的左上角。在這種形狀中,如果定義了第一個和最後一個標記,則會在該點繪製兩個標記,儘管它們可能指向不同的方向。

對於中間頂點,每個標記的指向方向定義為前一個路徑段末端的方向與後一個路徑段起點的方向之間的一半。這可以認為是兩個路徑方向定義的向量的叉積。

注意: marker 屬性僅對可以使用 SVG 標記的元素有效。請參閱 marker-start 獲取列表。

語法

css
marker: none;
marker: url("markers.svg#arrow");

/* Global values */
marker: inherit;
marker: initial;
marker: revert;
marker: revert-layer;
marker: unset;

none

這意味著不會在元素路徑的每個頂點處繪製標記。

<marker-ref>

一個 <url>,引用由 SVG <marker> 元素定義的標記,該標記將繪製在元素路徑的每個頂點處。如果 URL 引用無效,則不會在路徑的頂點處繪製標記。

正式定義

初始值作為簡寫中的每個屬性
應用於svg 中的 <circle><ellipse><line><path><polygon><polyline><rect> 元素
繼承性
計算值同指定值
動畫型別離散

正式語法

marker = 
none |
<marker-ref>

<marker-ref> =
<url>
此語法反映了 CSS 規範 中的最新標準。並非所有瀏覽器都可能已實現所有部分。有關支援資訊,請參閱瀏覽器相容性

示例

html
<svg viewBox="0 0 240 120" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <marker
      id="triangle"
      viewBox="0 0 10 10"
      markerWidth="10"
      markerHeight="10"
      refX="1"
      refY="5"
      markerUnits="strokeWidth"
      orient="auto">
      <path d="M 0 0 L 10 5 L 0 10 z" fill="red" />
    </marker>
  </defs>
  <polyline
    id="test"
    fill="none"
    stroke="black"
    points="20,100 40,60 70,80 100,20 130,10 150,10 170,20 170,100 120,100" />
</svg>
css
polyline#test {
  marker: url("#triangle");
}

規範

規範
Scalable Vector Graphics (SVG) 2
# MarkerShorthand

瀏覽器相容性

另見