SVG元素可以通过缩放,移动,倾斜和旋转来变换-类似HTML元素使用CSS transform来变换。然而,当涉及到坐标系时这些变换所产生的影响必然有一定差别。在这篇文章中我们讨论SVG的transform属性和CSS属性,包括如何使用,以及你必须知道的关于SVG坐标系变换的知识。

#FormatImgID_0#

SVG系列教程

transform属性值

tranform属性用来对一个元素声明一个或多个变换。它输入一个带有顺序的变换定义列表的transform-list值。每个变换定义由空格或逗号隔开。给元素添加变换看起来如下:

有效地SVG变换有:旋转, 缩放, 移动, 和倾斜。transform属性中使用的变换函数类似于CSS中transform属性使用的CSS变换函数,除了参数不同。

注意下列的函数语法定义只在transform属性中有效。查看section about transforming SVGs with CSS properties获取关于CSS变换属性中使用的语法信息。

Matrix

你可以使用matrix()函数在SVG元素上添加一个或多个变换。matrix变换语法如下:

matrix()

上述声明通过一个有6个值的变换矩阵声明一个变换。matrix(a,b,c,d,e,f)等同于添加变换matrix[a b c d e f]。

如果你不精通数学,最好不要用这个函数。对于那些精通的人,你可以在这里关于数学的内容。因此这个函数很少使用-我将忽略来讨论其他变换函数。

Translation

要移动SVG元素,你可以用translate()函数。translate函数的语法如下:

translate([])

translate()函数输入一个或两个值得来声明水平和竖直移动值。tx代表x轴上的translation值;ty代表y轴上的translation值。

ty值是可选的,如果省略,默认值为0。tx和ty值可以通过空格或者逗号分隔,它们在函数中不代表任何单位-它们默认等于当前用户坐标系单位。

下面的例子把一个元素向右移动100个用户单位,向下移动300个用户单位。

上述代码如果以translate(100, 300)用逗号来分隔值的形式声明一样有效。

Scaling

你可以通过使用scale()函数变换来向上或者向下缩放来改变SVG元素的尺寸。scale变换的语法是:

scale([])

scale()函数输入一个或两个值来声明水平和竖直缩放值。sx代表沿x轴的缩放值,用来水平延长或者拉伸元素;sy代表沿y轴缩放值,用来垂直延长或者缩放元素。

sy值是可选的,如果省略默认值等于sx。sx和sy可以用空格或者逗号分隔,它们是无单位值。

下面例子把一个元素的尺寸根据最初的尺寸放大两倍:

下列例子把一个元素缩放到最初宽度的两倍,并且把高度压缩到最初的一半:

上述例子使用逗号分隔的值例如scale(2, .5)仍然有效。

这里需要注意当SVG元素缩放时,整个坐标系被缩放,导致元素在视窗中重新定位,现在不用担心这些,我们会在下一节中讨论细节。

Skew

SVG元素也可以被倾斜,要倾斜一个元素,你可以使用一个或多个倾斜函数skewX 和 skewY。

skewX()

skewY()

函数skewX声明一个沿x轴的倾斜;函数skewY声明一个沿y轴的倾斜。

倾斜角度声明是无单位角度的默认是度。

注意倾斜一个元素可能会导致元素在视窗中重新定位。在下一节中有更多细节。

Rotation

你可以使用rotate()函数来旋转SVG元素。这个函数的语法如下:

rotate([])

rotate()函数对于给定的点和 旋转角度值执行旋转。不像CSS3中的旋转变换,不能声明除degress之外的单位。角度值默认无单位,默认单位是度。

可选的cx和cy值代表无单位的旋转中心点。如果没有设置cx和cy,旋转点是当前用户坐标系的原点(查看第一部分如果你不知道用户坐标系是什么。)

在函数rotate()中声明旋转中心点一个快捷方式类似于CSS中设置transform: rotate()和transform-origin。SVG中默认的旋转中心是当前使用的用户坐标系的左上角,这样也许你无法创建想要的旋转效果,你可以在rotate()中声明一个新的中心点。如果你知道元素在SVG画布中的尺寸和定位,你可以把它的中心设置为旋转中心。

下面的例子是以当前用户坐标系中的(50,50)点为中心进行旋转一组元素:

然而,如果你想要一个元素围绕它的中心旋转,你也许想要像CSS中一样声明中心为50% 50%;不幸的是,在rotate()函数中这样做是不允许的-你必须用绝对坐标。然而,你可以在CSS的transform属性中使用transform-origin属性。这篇文章后面会讨论更多细节。

坐标系变化

现在我们已经讨论了所有可能的SVG变换函数,我们深入挖掘视觉部分和对SVG元素添加每个变换的效果。这是SVG变换最重要的部分。因此它们被称为“坐标系统变换”而不仅仅是“元素变换”。

在这个说明中,transform属性被定义成两个在被添加的元素上建立新用户空间(当前坐标系)之一-viewBox属性是创建新用户空间的两个属性中的另一个。所以到底是什么意思呢?

这个行为类似于在HTML元素上添加CSS变换-HTML元素坐标系发生了变换,当你把变换组合使用时最明显。虽然在很多方面很相似,HTML和SVG的变换还是有一些不同。

主要的不同是坐标系。HTML元素的坐标系建立在元素自身智商。然而,在SVG中,元素的坐标系最初是当前坐标系或使用中的用户空间。

当你在一个SVG元素上添加transform属性,元素获取当前使用的用户坐标系的一个“副本”。你可以当做给发生变换的元素创建一个新“层”,新层上是当前用户坐标系的副本(the viewBox)。

然后,元素新的当前坐标系被在transform属性中声明的变换函数改变,因此导致元素自身的变换。这看起来好像是元素在变换后的坐标系中重新绘制。

要理解如何添加SVG变换,让我们从可视化的部分开始。下面图片是我们要研究的SVG画布。

鹦鹉和小狗使我们要变换的元素(组g)。

灰色坐标是通过viewBox建立的画布的初始坐标系。为了方便起见,我将不改变初始坐标系-我用一个和视窗相同尺寸的viewBox,如你在上述代码中看到的一样。

现在我们建立了画布和初始用户空间,让我们开始变换元素。首先让我们把鹦鹉向左移动150单位,向下移动200个单位。

当然,鹦鹉是由若干路径和形状组成的。只要把transform属性添加到包含它们的组g上就行了;这会对整个形状和路径添加变换,鹦鹉会作为一个整体进行变换。查看 article on structuring and grouping SVGs获取更多信息。

下面图片展示了上述变换后的结果。鹦鹉的半透明版本是变换前的初始位置。

SVG中的变换和HTML元素上CSS中的一样简单直观。我们之前提到在元素上添加transform属性时会在元素上创建一个新的当前用户坐标系。下面图片显示了初始坐标系的“副本”,它在鹦鹉元素发生变换时被建立。注意观察鹦鹉当前坐标系是如何变换的。

这里需要注意的非常重要的一点是建立在元素上的新的当前坐标系是初始用户坐标系的复制,在里面元素的位置得以保持。这意味着它不是建立在元素边界盒上,或者新的当前坐标系的尺寸受制于元素的尺寸。这就是HTML和SVG坐标系之间的区别。

建立在变换元素上的新当前坐标系不是建立在元素边界盒上,或者新的当前坐标系的尺寸受制于元素的尺寸。

我们把小狗变换到画布的右下方时会更加明显。试想我们想要把小狗向右移动50单位,向下移动50单位。这就是狗的最初的坐标以及新的当前坐标系(也因为狗改变)会如何显示。注意小狗的新的坐标系统的原点不在狗边界盒子的左上角。另外注意狗和它新的坐标系看起来它们好像移动到画布新的一层上。

http://www.aseoe.com/show-80-746-1.html http://www.aseoe.com/

true

SVG缩放,移动,倾斜和旋转变换

爱思资源网

http://www.aseoe.com/show-80-746-1.html

report

8549.5

SVG元素可以通过缩放,移动,倾斜和旋转来变换-类似HTML元素使用CSS transform来变换。然而,当涉及到坐标系时这些变换所产生的影响必然有一定差别。在这篇文章中我们讨论SVG的transform属性和CSS属性,包括

本站欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果

转载请注明: 文章转载自:爱思资源网 http://www.aseoe.com/show-80-746-1.html

html svg 移动缩放,SVG缩放,移动,倾斜和旋转变换相关推荐

  1. svg 内部元素scale 缩放不在原位置解决办法

    svg 内部元素放大或者缩小默认是通过svg画布 x0 , y0 进行缩放的,即元素的x,y 会变大或者变小,导致元素不在缩放之前的位置 解决办法就是,在缩放之前先设置元素的坐标为x0,y0 然后进行 ...

  2. CSS3的transform:将元素旋转,缩放,移动,倾斜

    Transform属性应用于元素的2D或3D转换.这个属性允许你将元素旋转,缩放,移动,倾斜等. transform: translate(-50%,-50%); 向左移动一半 向下移动一半

  3. SVG 教程 (七)SVG 实例,SVG 参考手册

    SVG 实例 在线实例 下面的例子是把SVG代码直接嵌入到HTML代码中. 谷歌Chrome,火狐,Internet Explorer9,和Safari都支持. 注意:下面的例子将不会在Opera运行 ...

  4. svg载入html,SVG系列教程:SVG简介与嵌入HTML页面的方式

    随着技术向前的推进,SVG相关的讨论也越渐频繁.为了紧跟时代的步伐,我也开始步入SVG相关技术的探索与学习之中.从这篇文章开始会在W3cplus站点上陆续向大家推出有关于SVG相关的教程.译文或案例等 ...

  5. 了解什么是SVG并使用SVG绘制圆,椭圆,矩形

    一.了解SVG概念 SVG英文全称为Scalable Vector Graphics,意思为可缩放的矢量图 HTML5支持内联SVG HTML<svg>元素是图形的容器 SVG有多种绘制路 ...

  6. html+引入svg矢量图,SVG 矢量图的加载

    一.什么是 SVG SVG 是可缩放矢量图形,用户可以用代码来直接描绘图像.区别于 JPG 和 PNG 的需要用引擎来加载的图片,它直接用画布绘制,所以是无损失的. 二.SVG 的优点 SVG文件时纯 ...

  7. android png图片动画,android图片系列 (4) - SVG动画(动态SVG 图片)

    看过之前那篇介绍静态 SVG 矢量图片的童鞋,应该时有感触的,SVG 就是给我们一个 空的不限制大小的canvas画板,然后我们使用 path 路径去绘制我们需要的图形,这就是静态的 SVG.动态 S ...

  8. - Canvas 简介- 使用 Canvas 绘制图形- Canvas 常用方法- SVG 简介- 使用 SVG 绘制基本图形

    1 Canvas 简介 Canvas 表示画布,现实生活中的画布是用来作画的. HTML5 中的 Canvas :我们可以称它为"网页中的画布".默认情况下,Canvas 是一块 ...

  9. svg标签和svg文件区别_什么是SVG文件? SVG图片和标签说明

    svg标签和svg文件区别 SVG (SVG) SVG or Scalable Vector Graphics is a web standard for defining vector-based ...

最新文章

  1. 因脉脉上的匿名消息,拼多多员工被开除了!
  2. python for-Python for循环及基础用法详解
  3. 【Python】torrentParser1.00
  4. 【数据挖掘】分类任务简介 ( 分类概念 | 分类和预测 | 分类过程 | 训练集 | 测试集 | 数据预处理 | 有监督学习 )
  5. Oracle 监听(Listener) 中 services 说明
  6. 开源组件DocX导出Word
  7. 「译」 .NET 5 新增的Http, Sockets, DNS 和 TLS 遥测
  8. java面试题2 牛客:定义类中成员变量时不可能用到的修饰是
  9. MySQL 可重复读,差点就让我背上了一个 P0 事故!
  10. 作者:张金芳(1970-),男,中国科学院软件研究所副研究员
  11. Oracle 18c新特性:Schema-Only 帐号提升应用管理安全性
  12. python读取excel写入mysql_使用Python读Excel数据Insert到MySQL
  13. eclipse --->svn插件安装
  14. Java Web开发的轻便架构Tapestry5---简介
  15. java日常日志打印模板
  16. “谷姐一下”、“寂寞全消除”
  17. CF1111C Creative Snap
  18. 名键风流 十六款斐尔可顶级机械键盘赏
  19. 投影仪问题Debug
  20. 4g 控矿驱动 迪兰rx574_主流显卡之争 574/1065战怪猎:世界

热门文章

  1. 程序员 录屏 免费录屏软件 录屏软件 程序员必备 学习必备 教学必备
  2. Python学习笔记(二)——使用Eclipse开发Python程序
  3. 全球及中国发电设备行业十四五专项规划与发展态势分析报告2022版
  4. java识别3D打印图_如何识别3D打印FDM机器结构i3、并联臂、UM、MB
  5. linux firefox严重卡顿,Firefox 79稳定版导致部分Mac用户陷入不明卡顿
  6. 利用DW制作一个图文混排
  7. 安徽省16市什么企业适合做知识产权贯标申报好处和什么材料汇编整理
  8. JIGUANG/集光这个小众国货护肤品牌,藏得真是深
  9. adw-launcher-android----流行的桌面
  10. 2大学英语四级关于计算机的图表作文,英语四级图表作文模板(精选8篇)