📅  最后修改于: 2023-12-03 15:35:11.970000             🧑  作者: Mango
SVG是一种基于XML的矢量图形格式,常用于Web场景中。SVG不仅能够高效地展示图像,而且能够实现各种炫酷的特效。
以下是一些常见的SVG特效:
SVG中的渐变可以实现从一种颜色到另一种颜色的平滑过渡。常见的渐变类型有线性渐变和径向渐变。
线性渐变指的是在两个点之间的颜色渐变,可以是水平、垂直或斜向的。下面是一个例子:
<svg>
<defs>
<linearGradient id="gradient" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" style="stop-color:#f00;stop-opacity:1" />
<stop offset="100%" style="stop-color:#00f;stop-opacity:1" />
</linearGradient>
</defs>
<rect x="10" y="10" width="200" height="100" fill="url(#gradient)" />
</svg>
其中,x1
, y1
, x2
, y2
决定了渐变的方向,stop
标签中的offset
属性决定了渐变的位置,stop-color
属性决定了颜色。
径向渐变用一个原点和一个半径来定义,可以是圆形或椭圆形的。下面是一个例子:
<svg>
<defs>
<radialGradient id="gradient" cx="50%" cy="50%" r="50%">
<stop offset="0%" style="stop-color:#f00;stop-opacity:1" />
<stop offset="100%" style="stop-color:#00f;stop-opacity:1" />
</radialGradient>
</defs>
<rect x="10" y="10" width="200" height="100" fill="url(#gradient)" />
</svg>
其中,cx
, cy
决定了渐变的中心,r
决定了渐变的半径。
SVG中的动画是通过定义一个或多个关键帧来实现的。下面是一个简单的例子:
<svg>
<circle cx="50" cy="50" r="10" fill="#f00">
<animate attributeName="cx" from="50" to="250" dur="1s" repeatCount="indefinite" />
</circle>
</svg>
其中,animate
标签定义了一个动画,attributeName
指定了要动画的属性,from
和to
指定了起始和结束值,dur
指定了动画持续的时间,repeatCount
指定了动画重复的次数。
SVG中的滤镜可以通过对图像进行去噪、模糊、发光等处理,来产生炫酷的效果。下面是一个例子:
<svg>
<defs>
<filter id="filter">
<feGaussianBlur in="SourceGraphic" stdDeviation="5" />
<feOffset dx="0" dy="0" result="offsetblur" />
<feFlood flood-color="red" flood-opacity="0.3" result="flood" />
<feComposite in2="offsetblur" operator="in" />
<feComposite in2="SourceGraphic" operator="over" />
</filter>
</defs>
<circle cx="50" cy="50" r="20" fill="#f00" filter="url(#filter)" />
</svg>
其中,feGaussianBlur
标签表示高斯模糊,stdDeviation
属性表示模糊半径,feFlood
标签表示填充颜色,feOffset
标签表示偏移,feComposite
标签表示合成。
以上就是SVG中的一些常见特效,更多特效可以参考SVG官方文档。