视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
svg中<marker>元素的使用及marker属性的介绍
2020-11-27 15:04:49 责编:小采
文档


使用SVG绘制的图形是箭头, 可以在<defs>和<symbol>中定义好再去重用,但是你每次应用的时候都需要对其移动或旋转。直接用一个<marker>元素的话会方便很多。

<marker>元素

marker是一种可以连结一个或多个path、line、polyline、或polygon的顶点的标志类型。最常见的用例是绘制箭头或在输出结果的线上的标记一个(polymarker)图形。
使用<marker>元素创建一个marker,以及其相关属性。通常我们把marker放在<defs>元素中,然后在其它地方对其进行引用。下面我们通过一个简单的实例来学习。

<svg width="600px" height="100px"> 
 <defs> 
 <marker id="arrow" markerWidth="10" markerHeight="10" refx="0" refy="3" orient="auto" markerUnits="strokeWidth"> <path d="M0,0 L0,6 L9,3 z" fill="#f00" /> 
 </marker>
 </defs> 
 <line x1="50" y1="50" x2="250" y2="50" stroke="#000" stroke-width="5" marker-end="url(#arrow)" />
</svg>

marker的属性

markerWidth和markerHeight属性定义了marker视窗的宽度和高度。

上面的实例中我把markerWidth和markerHeight都设置为10px。path中绘制出的三角形需要适应9px x 6px的面积,所以我也可以把markerWidth设置为9,然互markerHeight设置为6。这是marker可以接受的最小尺寸,任何小于这个的尺寸都会导致图形被裁剪。
接下来的两个属性,refX和refY,指的是图形元素和marker连接的位置坐标。我们还给背后的场景应用了一个变换,来移动marker,与之对齐。

下一个属性,orient,这个属性是我为什么在转换line的方向时,不需要调整marker的原因。它接受一个auto值,或者一个角度值,这个值决定了marker是否要旋转,在与其它内容连接的时候。

auto这个值表示marker会随着应用的元素一起旋转。45deg这个值则表示marker的方向一直保持45deg,不会随着连接的元素一起旋转。大多数时候这个值都是设置为auto的。

最后一个属性是markerUNits,用于确定marker是否进行缩放。它定义了markerWidth和markerHeight,以及marker的内容本身的坐标系统。

它接受两个值,strokeWidth和userSpaceOnUse。默认值是strokeWidth,这也是大家大多数情况下会设置的值,因为它允许你的marker随着它连接的line进行缩放。

strokeWidth:坐标系统中的marker值和当前描边宽度的单位是相同的尺寸。也就是说strokeWidth这个值允许你的marker缩放。
userSpaceOnUse: marker的值是当前用户坐标系统的值。也就是说如果你的marker是一个半径为10px的圆,它就一直都是10px的半径,不受连接的元素的影响。

Marker特性——在元素中引用marker

marker-end="url(#arrow)”

给line、path、polyline、polygon这些基础图形应用marker一共有四种方法:

  • marker-start=”url(#marker-id)”

  • marker-mid=”url(#marker-id)”

  • marker-end=”url(#marker-id)”

  • marker=”url(#marker-id)”

  • 相关文章推荐:

    svg如何实现坐标系统变换(附代码)

    在react中使用svg的各种方法总结(附代码)

    下载本文
    显示全文
    专题