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

浏览器兼容性

另见