svg基础(一)

12 篇文章 1 订阅
本文详细介绍了可缩放矢量图形(SVG)的概念,包括其XML基础、渲染规则(如元素的前后顺序)、单位使用、画布和视窗的概念、viewport的作用以及viewBox属性的应用实例。重点展示了SVG如何处理图形放大、缩小时的清晰度问题以及坐标系统的管理。
摘要由CSDN通过智能技术生成

1 定义

可缩放矢量图形( Scalable Vector Graphics),是一种 XML应用

2 特征

  1. 一种可伸缩矢量图形
  2. 使用xml格式定义用于网络的基于矢量的图形
  3. 放大或改变图片的尺寸其质量不会有所损失

2.1 渲染顺序

SVG元素的一个规则是 后来居上 ,越后面的元素越可见

<svg width="200" height="200">
    <rect x="0" y="0" width="100" height="100" fill="red"/>
    <rect x="0" y="0" width="100" height="100" fill="orange"/> 
</svg>

上面的代码渲染后只看到橙色的矩形
在这里插入图片描述

2.2 单位

在SVG 中,可以指定值的单位,也可以不指定值的单位。不指定时,默认使用像素 (px) 作为单位。

上面代码中,width和height没有指定单位,那么单位默认就是px

支持的单位:

单位含义
em相对于父元素的字体大小
px相对于屏幕分辨率
%相对于父元素
cm即厘米
mm即毫米
in即英寸
pt1/72 英寸
pc12点活字,或1/12点

3 概念和属性

3.1 画布

SVG 画布就是用来绘制 SVG 内容的一个区域。这个画布可以无限延伸,可以在这个画布的任何位置绘制想要的内容。

画布和视窗之间的关联

  1. 每创建一个 <svg> 元素,就相当于创建了一个无穷大的画布,同时创建了一个视窗。
  2. 画布和视窗分别对应两个坐标系统,一个用户坐标系,一个视窗坐标系,这两个坐标系统默认是对齐的。

3.2 viewport

表示SVG可见区域的大小,可以通过 SVG 视窗看到画布,但只能看到了画布的一部分,超过视窗的部分会被裁切并且隐藏

为什么超过视窗的元素不可见?因为每个 SVG 元素都有一个默认的 overflow: hidden 样式,所以超过视窗的内容不可见。你也可以通过设置 overflow: visible 让超出视窗边界的内容变得可见。

通过设置svg元素的widthheight属性来给 SVG 视窗设置宽和高。

 <svg width="200" height="200">
        <rect x="0" y="0" width="100" height="100" fill="red"/>
 </svg>

以上代码设置了svg的视窗宽度为200px,高度为200px

3.3 viewBox

viewBox=“x y width height” // x:左上角横坐标,y:左上角纵坐标,width:宽度,height:高度

viewBox会从其x y指定的坐标处,截取宽width高height的矩形,并把该矩形铺满svg视窗

<svg width="200" height="200" style="border:1px solid red">
        <rect x="0" y="0" width="20" height="20" fill="orange" />
</svg>
<svg width="200" height="200" viewBox="0 0 10 10" style="border:1px solid red">
    <rect x="0" y="0" width="20" height="20" fill="orange" />
</svg>
<svg width="200" height="200" viewBox="10 10 20 20" style="border:1px solid red">
    <rect x="0" y="0" width="20" height="20" fill="orange" />
</svg>

注意对比以上代码和显示结果

在这里插入图片描述

 <svg width="400" height="300" style="border:1px solid red;">
        <rect x="10" y="5" width="20" height="15" fill="#cd0000" />
</svg>
<svg width="400" height="300" viewBox="0,0,40,30" style="border:1px solid red;">
    <rect x="10" y="5" width="20" height="15" fill="#cd0000" />
</svg>
<svg width="400" height="300" viewBox="10,5,40,30" style="border:1px solid red;">
    <rect x="10" y="5" width="20" height="15" fill="#cd0000" />
</svg>

注意对比以上代码和显示结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值