返回

剖析SVG冷知识:stroke的那些反直觉操作

前端





### **剖析SVG冷知识:stroke的那些反直觉操作** 

在平面设计领域,提及图形边框的操作时,人们首先想到的就是描边,即通过线条沿图形轮廓进行勾勒,以突出图形的形状和轮廓,加强图形与背景的对比,增强视觉效果。

在SVG中,描边操作由stroke属性完成。stroke属性可以设置线条的颜色、粗细、样式等属性,使图形边缘呈现出不同的视觉效果。

然而,stroke属性并非想象中那么简单,它隐藏着许多不为人知的冷知识。这些冷知识会让您对stroke属性有更深入的了解,并帮助您充分发挥SVG的描边功能,创作出更美观、更具表现力的图形。

### **stroke的路径** 

stroke属性可以应用于任何类型的SVG图形,包括路径、矩形、圆形、椭圆形、多边形等。然而,对于不同的图形类型,stroke的路径可能会发生变化。

例如,对于路径来说,stroke的路径就是路径本身。当您为路径设置stroke属性时,线条将沿着路径的轮廓进行描边。

对于矩形、圆形、椭圆形和多边形等闭合图形来说,stroke的路径就是图形的轮廓线。当您为这些图形设置stroke属性时,线条将沿着图形的轮廓线进行描边。

对于非闭合图形来说,stroke的路径就是图形的轮廓线加一个封闭路径。当您为非闭合图形设置stroke属性时,线条将沿着图形的轮廓线进行描边,然后在图形末端封闭路径。

### **stroke的线宽** 

stroke属性的另一个重要属性是线宽,即线条的粗细。线宽可以通过stroke-width属性进行设置,单位为像素。

当您设置stroke-width属性时,需要注意以下几点:

* 线宽必须为非负值。
* 线宽的值不能超过图形的宽度或高度。
* 如果线宽设置为0,则不会描边。

### **stroke的线帽** 

stroke属性还允许您设置线帽,即线条末端的形状。线帽可以通过stroke-linecap属性进行设置,有三种可选值:

* butt:平直线帽。
* round:圆形线帽。
* square:方形线帽。

当您设置stroke-linecap属性时,需要注意以下几点:

* 线帽的形状只对线条的末端有效。
* 如果线条是闭合的,则线帽不会显示。

### **stroke的线段连接** 

stroke属性还允许您设置线段连接,即相邻线段之间的连接方式。线段连接可以通过stroke-linejoin属性进行设置,有三种可选值:

* miter:尖角连接。
* round:圆角连接。
* bevel:斜角连接。

当您设置stroke-linejoin属性时,需要注意以下几点:

* 线段连接的方式只对相邻线段有效。
* 如果线段是闭合的,则线段连接不会显示。

### **stroke的虚线** 

stroke属性还允许您设置虚线,即由实线和间隙交替组成的线条。虚线可以通过stroke-dasharray属性进行设置,该属性的值是一个包含实线长度和间隙长度的数组。

例如,以下代码将创建一个由5像素长的实线和2像素长的间隙组成的虚线:

stroke-dasharray: 5, 2;


当您设置stroke-dasharray属性时,需要注意以下几点:

* 实线长度和间隙长度必须为非负值。
* 实线长度和间隙长度的总和不能超过图形的宽度或高度。
* 如果实线长度或间隙长度设置为0,则不会描边。

### **stroke的图案** 

stroke属性还允许您设置图案,即由重复的图形元素组成的线条。图案可以通过stroke-dasharray属性进行设置,该属性的值是一个包含图案元素的数组。

例如,以下代码将创建一个由矩形图案组成的虚线:

stroke-dasharray: rect(5, 5);


当您设置stroke-dasharray属性时,需要注意以下几点:

* 图案元素的形状、大小和间距由图案函数决定。
* 图案元素可以是任何类型的SVG图形。
* 如果图案元素的宽度或高度为0,则不会描边。

### **stroke的动画** 

stroke属性还允许您创建动画,即随着时间的推移而变化的描边。动画可以通过stroke-dashoffset属性进行设置,该属性的值是一个偏移量,用于控制虚线或图案的起始位置。

例如,以下代码将创建一个由矩形图案组成的虚线,并随着时间的推移移动:

stroke-dasharray: rect(5, 5);
stroke-dashoffset: 5;
animation: dashoffset infinite alternate 2s;

@keyframes dashoffset {
from {
stroke-dashoffset: 5;
}
to {
stroke-dashoffset: -5;
}
}


当您设置stroke-dashoffset属性时,需要注意以下几点:

* 偏移量的值可以为正值或负值。
* 正值会将虚线或图案向右移动,负值会将虚线或图案向左移动。
* 偏移量的值不能超过虚线或图案的总长度。
* 如果偏移量的值等于虚线或图案的总长度,则不会描边。

### **结语** 

stroke属性是SVG中一个非常强大的属性,它可以用来创建各种各样的描边效果。通过了解stroke属性的各种冷知识,您可以充分发挥SVG的描边功能,创作出更美观、更具表现力的图形。