一、SVG的基本概念
1.1 什么是SVG?
SVG是一种基于可扩展标记语言(XML)的图形描述语言,可以描述二维图形和矢量图。SVG文件通常以.svg为扩展名,与常见的位图格式(如.jpg、.png)相比,SVG文件具有以下优点:
- 矢量图形:SVG图形由数学方程定义,可以无限放大而不失真。
- 文件体积小:SVG文件通常比位图文件体积小,有利于网页加载速度。
- 易于编辑:SVG文件可以轻松编辑,支持多种编辑工具。
1.2 SVG的组成
SVG文件主要由以下几部分组成:
- 声明:定义SVG文档的版本、编码方式等。
- 根元素:
<svg>元素是SVG文档的根元素,包含整个图形的属性和子元素。 - 图形元素:如
<circle>、<rect>、<line>等,用于绘制图形。 - 文本元素:如
<text>元素,用于添加文本内容。 - 样式:使用CSS为SVG图形添加样式。
二、CSS3技巧在SVG图片中的应用
2.1 渐变效果
使用CSS3的<linearGradient>和<radialGradient>元素可以创建线性和径向渐变效果,为SVG图形添加丰富的色彩。
svg circle {
fill: url(#gradient);
}
linearGradient {
id: gradient;
x1: 0%;
y1: 0%;
x2: 100%;
y2: 0%;
}
stop {
offset: 0%;
stop-color: red;
}
stop {
offset: 100%;
stop-color: yellow;
}
2.2 阴影效果
CSS3的<filter>元素可以创建阴影效果,使SVG图形更加立体。
svg rect {
filter: url(#shadow);
}
filter {
id: shadow;
x: -50%;
y: -50%;
width: 200%;
height: 200%;
feOffset {
in: SourceAlpha;
dx: 5;
dy: 5;
}
feGaussianBlur {
stdDeviation: 5;
}
feMerge {
in: 0;
in2: SourceGraphic;
}
}
2.3 动画效果
CSS3的<animate>元素可以为SVG图形添加动画效果,实现动态交互。
svg rect {
animation: move 2s infinite;
}
@keyframes move {
0% {
transform: translateX(0);
}
100% {
transform: translateX(100px);
}
}
2.4 媒体查询
@media screen and (max-width: 600px) {
svg {
width: 100%;
}
}