stroke-dasharray
**stroke-dasharray
** CSS 属性定义了用于绘制 SVG 形状的描边中虚线和间隙的图案。如果存在,它将覆盖元素的 stroke-dasharray
属性。
此属性适用于任何 SVG 形状或文本内容元素(请参阅 stroke-dasharray
以获取完整列表),但作为继承属性,它可以应用于诸如 <g>
之类的元素,并且仍然对后代元素的描边产生预期效果。
语法
/* Keywords */
stroke-dasharray: none;
/* Numeric, length, and percentage values */
stroke-dasharray: 2px, 5px;
stroke-dasharray: 20%, 50%;
stroke-dasharray: 2, 5;
/* The following two rules are equivalent */
stroke-dasharray: 2, 5, 3;
stroke-dasharray: 2, 5, 3, 2, 5, 3;
/* Global values */
stroke-dasharray: inherit;
stroke-dasharray: initial;
stroke-dasharray: revert;
stroke-dasharray: revert-layer;
stroke-dasharray: unset;
值
该值为一个逗号和/或空格分隔的 <number>
、<length>
和/或 <percentage>
值列表,用于指定交替虚线和间隙的长度,或者关键字 none
。如果给出奇数个值,则整个值将按顺序重复以设置偶数个值。
none
-
描边将绘制为没有虚线。默认值。
<number>
-
一些 SVG 单位,其大小由当前单位空间定义。负值无效。
<length>
-
像素单位与 SVG 单位相同(参见上面的
<number>
),而基于字体的长度(如em
)则是根据元素的文本大小的 SVG 值计算的;其他长度单位的效果可能取决于浏览器。负值无效。 <percentage>
-
百分比指的是当前 SVG 视窗的归一化对角线,它计算为. 负值无效。
正式定义
正式语法
示例
基本虚线阵列
此示例演示了使用空格分隔的 <number>
值的基本 stroke-dasharray
属性用法。
HTML
首先,我们设置一个基本的 SVG 矩形形状。在此矩形上,应用了宽度为 2
的红色描边。
<svg viewBox="0 0 100 50" width="500" height="250">
<rect
x="10"
y="10"
width="80"
height="30"
fill="none"
stroke="red"
stroke-width="2" />
</svg>
CSS
我们为描边定义了虚线图案:十个单位的虚线,然后是五个单位的空格。这意味着虚线之间的间隙将是虚线本身长度的一半。
rect {
stroke-dasharray: 10 5;
}
结果
描边拐角处,图案会延续。在左上角,描边的起点和终点相遇,十个单位长的起始虚线似乎与路径末尾看到的虚线图案部分相连,形成了看起来比十个单位更长的线,弯曲在拐角处。
虚线阵列重复
此示例包含奇数个逗号分隔的 <number>
值,以演示如果给出奇数个值,则该值将如何重复以设置偶数个值。
HTML
在本例中,我们定义了两个矩形。
<svg viewBox="0 0 100 100" width="500" height="500">
<rect
x="10"
y="10"
width="80"
height="30"
fill="none"
stroke="red"
stroke-width="2" />
<rect
x="10"
y="60"
width="80"
height="30"
fill="none"
stroke="red"
stroke-width="2" />
</svg>
CSS
对于第一个矩形,我们定义了一个 5, 5, 1
的虚线阵列,它要求五个单位的虚线,五个单位的空格,以及一个单位的虚线。但是,由于这是一个奇数,因此整个数字集将被重复,从而创建了一个与应用于第二个矩形的值相同的值。
rect:nth-of-type(1) {
stroke-dasharray: 5, 5, 1;
}
rect:nth-of-type(2) {
stroke-dasharray: 5, 5, 1, 5, 5, 1;
}
结果
需要偶数个数字的原因是,这样每个破折号数组都以破折号开头,以间隙结尾。因此,定义的模式是:五单位破折号,五单位间隙,一单位破折号,五单位间隙,五单位破折号,一单位间隙。在生成的笔划中,两个五单位破折号之间每出现一个一单位间隙,都表示破折号数组从该位置开始重复。
百分比和像素值
此示例演示了在 <percentage>
和 <length>
值中使用 stroke-dasharray
属性值。
HTML
与前面的示例一样,我们定义了两个矩形。
<svg viewBox="0 0 100 100" width="500" height="500">
<rect
x="10"
y="10"
width="80"
height="30"
fill="none"
stroke="red"
stroke-width="2" />
<rect
x="10"
y="60"
width="80"
height="30"
fill="none"
stroke="red"
stroke-width="2" />
</svg>
CSS
这次,我们使用像素单位和百分比,而不是一组裸数字。
rect:nth-of-type(1) {
stroke-dasharray: 5px, 5px, 1px;
}
rect:nth-of-type(2) {
stroke-dasharray: 5%, 5%, 1%;
}
结果
结果与前一个示例中的结果基本相同。
规范
规范 |
---|
CSS Fill and Stroke 模块级别 3 # stroke-dasharray |
浏览器兼容性
BCD 表格只能在浏览器中加载