资讯专栏INFORMATION COLUMN

svg的坐标系统

spademan / 1973人阅读

摘要:发现目前浏览器支持的挺强大的,但是本身有很多背景知识和元素属性以及库等,如何系统地掌握这一强大工具呢视窗和视野这两个词的翻译还是比较好的你站在屋子里通过窗户来看外面的世界。的坐标和的最左边的坐标对齐

最近做一个流程图绘制项目,所以研究了一下svg。发现svg目前浏览器支持的挺强大的,但是svg本身有很多背景知识和元素属性以及js库等,如何系统地掌握这一强大工具呢?

viewPort(视窗)和viewBox(视野)

这两个词的翻译还是比较好的!你站在屋子里通过窗户来看外面的世界。窗户的大小是固定的,比如是400*200,可外面的世界是无限大的!那是不是你就只能看到窗户大小般的世界和井底之蛙一般呢?如果真是这样,那viewBox就没用了。想想看,如果你里窗户越远,是不是看到的越多呢?当你和窗户津贴成二维平面时,就真的是井底之蛙了。所以viewBox就很有意义了!

    
        
    

svg是html标签,类似于canvas,代表上面所说的viewPort.这里浏览器会渲染一块400*200的空白区域(窗户)。

我们发现上面的宽高属性没有单位,所以默认是px.所以我们应该看到的是一块100px*100px的绿色正方形

但是结果不是我们想要的

首先html width,height属性如果没有单位就是px,svg是400*200,没有问题。

但是里面的rect明明是100*100怎么就变成了200*200

结论

svg标签包裹的世界(代表是viewBox viewBox="0 0 200 50")和外部html(代表是viewPort width="400" height="200" )的世界不是一体的。

如果上面的svg元素没有viewBox和preserveAspectRatio属性,那viewPort和viewBox的单位像素是1:1的,我们通过改变viewBox属性,改变两个世界的单位像素比例.

两个世界(viewPort和viewBox)的单位像素

怎么理解两个世界

demo: 1.html


    

上面是HTML的世界,在这个世界里,我们可以通过使用css改变和定位svg(viewPort),这里viewPort就定义成了300*300,代表着svg在HTML世界中只能占据300*300的空间。

难道我在svg中画图只能画限制在300*300空间的图吗?不可能,事实上我可以画无穷大,上面的polygon可以设置成更大。这个无穷大的空间就是svg世界

如果这样的话,因为默认两个世界的比例是1:1,所以你会看不到所有部分。

preserveAspectRatio属性

ViewBox属性和preserveAspectRatio属性配合使用。

viewBox

    
        
        
        svg:200*200
    

如果viewBox width和height等比例缩放的话,这个图形会相应缩放。

如果width和height不是等比例呢,这时,preserveAspectRatio属性就起作用了.

preserveAspectRatio包含两部分:

align

meetOrSlice

这两个使用请参考这个例子[ViewBox演示]()

在viewBox的宽高比和viewport的宽高比不匹配的情况,它的值必须是以下其中一个

xMinYMin

xMidYMin

xMaxYMin

xMinYMid

xMidYMid

xMaxYMid

xMinYMax

xMidYMax

xMaxYMax

啊,属性这么多!

但是我只要说一个,你就明白了!(不明白的话,在ViewBox演示

xMinYMin 强制等比例缩放,viewBox的min-x坐标值和viewport的最左边的x对齐。viewBox的min-y坐标和viewport的最左边的y坐标对齐,

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/49813.html

相关文章

  • SVG精髓》笔记(一)

    摘要:本文是基于精髓一书的简单总结,文中的均为该书提供,目的是方便大家使用时快速查阅。允许指定一个给定的一组图形伸展以适应特定的容器元素。该属性的模型为指定轴和位置,由一个对齐方式和一个对齐方式组合而成。 本文是基于《SVG精髓》一书的简单总结,文中的demo均为该书提供,目的是方便大家使用时快速查阅。 1. 坐标系统 视口(viewport):文档使用的画布区域,表示SVG可见区域的大...

    warkiz 评论0 收藏0
  • SVG相关学习(一)SVG基础

    摘要:表示应用渐变的元素创建的边界坐标系统。控制点确定起点终点的斜率终点坐标二次贝塞尔曲线和之前一样,快捷命令会通过前一个控制点,推断出一个新的控制点。如果单独使用,那么控制点就会被认为和终点是同一个点,所以画出来的将是一条直线。 SVG 相关学习 SVG SVG 指可伸缩矢量图形 (Scalable Vector Graphics) SVG viewBox viewport svg 实际大...

    BingqiChen 评论0 收藏0
  • SVG精髓》笔记(二)

    摘要:元素元素会将其所有子元素作为一个组合,通常组合还会有一个唯一的作为名称。变换描述按照指定的和值移动用户坐标系统。比例值可以是小数或则负数和相同按照指定的旋转用户坐标。旋转中心由和指定根据指定的倾斜所有坐标。 3. 文档结构 在SVG中使用样式(四种方式,可以联想对照HTML样式方法) 内联样式, 直接在标签里设置style属性 内部样式表,可以同时为多个元素设置样式 de...

    My_Oh_My 评论0 收藏0
  • SVG精髓》笔记(二)

    摘要:元素元素会将其所有子元素作为一个组合,通常组合还会有一个唯一的作为名称。变换描述按照指定的和值移动用户坐标系统。比例值可以是小数或则负数和相同按照指定的旋转用户坐标。旋转中心由和指定根据指定的倾斜所有坐标。 3. 文档结构 在SVG中使用样式(四种方式,可以联想对照HTML样式方法) 内联样式, 直接在标签里设置style属性 内部样式表,可以同时为多个元素设置样式 de...

    entner 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<