美文网首页
SVG 坐标系统

SVG 坐标系统

作者: 暖A暖 | 来源:发表于2020-12-21 09:34 被阅读0次

在开始学习如何绘图之前,我们先来看一下 SVG 的坐标系统。与很多计算机绘图所使用的坐标系统一样,SVG 也使用了网格坐标系统。这种坐标和我们以前在数学中学过的坐标有些不同。

数学中的坐标是由 x 轴(水平横向延伸)和 y 轴(垂直纵向延伸)交织组成,交点被称为坐标原点 (0,0) 。原点沿 x 轴向右为正值,反之为负值,沿 y 轴向上为正值,反之为负值。

而 SVG 网格坐标系统的特点如下所示:

  • 以左上角为坐标系的原点,即 (0,0)
  • 横向延伸为 X 轴正方向, x 坐标逐渐增大。纵向为 Y 轴正方向,y 坐标逐渐增大。
  • 坐标以像素 px 为单位。

坐标系统单位

SVG 坐标系中对应的值可以指定单位,也可以不指定单位,如果不指定单位则默认单位为 px

下面是 SVG 中支持的长度单位,包含了常见的 CSS 单位:

单位 描述
px 像素,相对于屏幕分辨率
em 相对于父元素的字体大小
ex 字符的高度 x
cm 厘米
mm 毫米
in 英寸
pt 点(1/72 英寸)
pc Picas(1/21英寸)

画布

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

SVG 视口(ViewPort)

SVG 的渲染都是在一个矩形区域内发生的,这个有限的矩形区域在 SVG 中被称为"视口",超出这个视口的图形将会被裁切并且隐藏。所以视口也就是 SVG 的渲染区域,用户能看到 SVG 内容的区域。

那么为什么超过视口的元素会被隐藏呢?这是因为每个 SVG 元素都有一个默认的 overflow: hidden 样式,所以超过视窗的内容不可见。如果想要让超出部分变为可见,可以将 overflow 属性的值设置为 visible

示例:

例如我们看下面这个例子:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>SVG学习(9xkd.com)</title>
        <link rel="styleSheet" type="text/css" href="./style.css">
    </head>
    <body>
        <svg>
            <rect width="300" height="300" style="fill:pink;"/>
        </svg>
    </body>
</html>    

上述代码中,我们绘制了一个宽为 300px ,高为 300px 的矩形,矩形的填充的颜色为粉色。但是因为我们没有这个 SVG 的视口宽高,所以视口会默认宽高为 300px * 150px,所以在浏览器中可以看到,矩形的高被隐藏了一半:

除了像上述所说的将 overflow 属性设置为 visible,例如:

<svg style="overflow:visible;">
    <rect width="300" height="300" style="fill:pink;"/>
</svg>

我们还可以通过给 <svg> 元素设置 widthheight 属性来给 SVG 视口设置宽和高。只要给视口设置的宽高大于绘制图形的宽高,那么图形就能够完整的显示啦。

其实画布和视口是两个比较容易混淆的概念,每当我们创建一个 <svg> 元素时,就相当于创建了一个无穷大的画布和一个视口。画布和视口分别对应两个坐标系统,一个为用户坐标系,一个为视窗坐标系。

相关文章

  • [CSS] svg线条动画

    1. svg坐标系统 对于所有元素,SVG使用的坐标系统或者说网格系统,和Canvas用的差不多(所有计算机绘图都...

  • SVG 坐标系统

    在开始学习如何绘图之前,我们先来看一下 SVG 的坐标系统。与很多计算机绘图所使用的坐标系统一样,SVG 也使用了...

  • 关于svg的旋转平移缩放

    x,y为svg对象点的坐标,offset_x,offset_y为偏移坐标,scale为缩放倍数。 保证svg对象绕...

  • 基础部分

    坐标系 D3通过SVG画图,SVG的坐标系同HTML中的坐标系类似,都是以左上角作为坐标原点,向下向右为正延伸。 ...

  • 理解SVG的preserveAspectRatio属性

    该属性决定了怎么样把坐标系统(viewBox)塞到SVG视口(width,height)里。 配合在线实例往下看:...

  • 深入浅出d3.js数据可视化之道(3)

    上一节中, 我们对于svg 的坐标系统 和 常用的比例尺进行了学习, 了解了坐标轴的建立,懂得了数据绑定和事件回调...

  • svg path

    svg path 简写大写绝对坐标, 小写相对坐标 moveTo: M x y / m dx dy lineTo:...

  • svg转成坐标数组

    function parsePathString(pathString) { if (!pathString) ...

  • SVG中的图形分组和坐标系统

    使用标签进行图形分组 标签来创建分组 标签中的子元素继承标签中的属性 transform属...

  • Android--vector动画

    上次说了SVG在安卓中的应用,在我们安卓系统中SVG就是Vector Drawable,Vector除了显示SVG...

网友评论

      本文标题:SVG 坐标系统

      本文链接:https://www.haomeiwen.com/subject/zptrnktx.html