SVG <marker>
SVG Marker - <marker>
<marker>
元素用于创建 <line>
、<path>
、<polyline>
或 <polygon>
的起始、中间和结束标记。
所有 SVG 标记都定义在 <defs>
元素内。<defs>
元素是“definitions”的缩写,包含特殊元素的定义(例如标记)。
标记通过 marker-start
、marker-mid
和 marker-end
属性附加到形状上。
<marker>
元素有六个基本属性来定位和设置标记的大小
Attribute | 描述 |
---|---|
id | 标记的唯一 ID |
markerHeight | 标记的高度。默认为 3 |
markerWidth | 标记的宽度。默认为 3 |
refX | 标记与顶点连接的 x 位置。默认为 0 |
refY | 标记与顶点连接的 y 位置。默认为 0 |
orient | 标记相对于其附加形状的方向。可以是 "auto"、"auto-start-reverse" 或一个角度。默认为 0 |
带起始和结束标记的线条
以下示例创建了一条带有圆形起始标记和箭头结束标记的线
这是 SVG 代码
示例
<svg height="250" width="350" xmlns="http://www.w3.org/2000/svg">
<defs>
<marker id="circle" markerWidth="8" markerHeight="8" refX="5" refY="5">
<circle cx="5" cy="5" r="3" fill="black" />
</marker>
<marker id="arrow" markerWidth="10" markerHeight="10" refX="5" refY="5" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z" fill="black" />
</marker>
</defs>
<line x1="10" y1="10" x2="300" y2="200" stroke="red" stroke-width="3" marker-start="url(#circle)" marker-end="url(#arrow)" />
</svg>
自己动手试一试 »
代码解释
<defs>
元素包含两个标记:一个#circle
标记和一个#arrow
标记- 标记的形状定义在
<marker>
元素中 - 第一个
<marker>
元素包含一个<circle>
元素,用于绘制一个小圆 - 第二个
<marker>
元素包含一个<path>
元素,用于绘制一个小三角形 <line>
元素使用marker-start
属性和marker-end
属性引用了两个标记
添加中间标记
以下示例创建了一个带有起始标记、中间标记和结束标记的折线
这是 SVG 代码
示例
<svg height="250" width="350" xmlns="http://www.w3.org/2000/svg">
<defs>
<marker id="circle" markerWidth="8" markerHeight="8" refX="5" refY="5">
<circle cx="5" cy="5" r="2" fill="black" />
</marker>
<marker id="arrow" markerWidth="10" markerHeight="10" refX="5" refY="5" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z" fill="black" />
</marker>
</defs>
<polyline points="15,40 15,170 200,170" stroke="red" stroke-width="3" fill="none" marker-start="url(#circle)" marker-mid="url(#circle)" marker-end="url(#arrow)" />
</svg>
自己动手试一试 »
代码解释
<defs>
元素包含两个标记:一个#circle
标记和一个#arrow
标记- 标记的形状定义在
<marker>
元素中 - 第一个
<marker>
元素包含一个<circle>
元素,用于绘制一个小圆 - 第二个
<marker>
元素包含一个<path>
元素,用于绘制一个小三角形 <polyline>
元素使用marker-start
属性、marker-mid
属性和marker-end
属性引用了两个标记- 注意
marker-start
属性和marker-mid
属性都指向同一个标记(#circle
)。这样标记就可以被重复使用多次