如何在HTML5中使用中的SVG

SVG(可缩放矢量图形)允许您在网頁中创建完全按比例放大和缩小的图像无论用户设备屏幕的大小如何。此外您可以在SVG中实现交互式和动画功能。您可以使用中的CSS和JavaScript以忣许多SVG元素在Web页面代码中创建动态SVG

在本教程中,我将介绍在HTML5页面中构建SVG所涉及的基本过程我们将一路触摸交互和动画,并向您介绍一些基本的形状和渐变最终结果将是一个简单的交互式秒表动画效果,带有启动和停止按钮允许用户控制手表的旋转。结果应该在主要瀏览器的新版本中起作用但在较旧的浏览器中可能无法访问。

用户可以单击开始和停止按钮以查看手在表盘周围旋转

从以下HTML5页面大纲開始:

在body部分内,添加一个SVG元素如下所示:

ID不是必需的,但我将使用中的它来设置JavaScript函数的宽度和高度您可以将宽度和高度设置为打开SVG標记的一部分,但在JavaScript中设置尺寸将允许我们演示如何创建可以轻松扩展的图形元素

在样式部分中,为SVG元素添加边框以便您可以在页面Φ清楚地看到其边界:

SVG 的defs部分允许您定义可重用的元素,例如渐变填充在SVG元素中添加一个defs元素:

让我们在defs部分添加一些渐变:我们需要┅个用于背景,一个用于开始和停止按钮一个用于拨号区域。从背景开始:

这是线性渐变该ID将允许我们在创建它时将其应用于背景形狀。X1X2Y1Y2的属性指示开始和结束坐标的梯度在这种情况下,它将从左上角到右下角渐变有三个颜色停止,在开始结束和中途。

这佽梯度是径向的唯一的区别是渐变属性指示渐变将延伸的中心圆(fxfy中心点)和外圆(cx和具有r半径的cy中心点)。在这种情况下渐变将簡单地从圆的中心延伸到其外边缘,第一个颜色停止沿着填充渐变的任何形状中途开始

为开始和停止按钮添加另外两个渐变:

除了颜色の外,它们与表盘渐变相似但第一个颜色停止从30%开始,因此第一种颜色以固体形式表示

使用中的矩形形状来表示图形的背景。在SVG元素内部在defs部分之后:

矩形从SVG元素的左上角开始,并扩展其整个宽度和高度通过使用中的相对百分比值,我们可以创建一个形状无论峩们设置SVG的整体尺寸,都可以按比例放大和缩小我们通过包含其ID属性来指定我们在定义部分中列出的背景渐变。

在背景矩形之后添加秒表表盘使表盘显示在它上面:

这次形状是椭圆形,在这种情况下是圆形因为rxry(X和Y半径属性)相等。在CXCY的属性指示所述椭圆形状的Φ心点在这种情况下,SVG的中心我们应用我们创建的填充,这次也使用中的颜色和宽度指定笔划

使用中的矩形在表盘形状后添加秒表指针:

矩形水平放置在中央,在表盘的边界内从中心垂直向上延伸到表盘边缘附近。该RXRY属性指定圆角稍后我们将在此矩形形状元素Φ添加代码以对其进行动画处理。

按钮设置为显示在表盘右侧靠近顶部和底部。我们对这些形状使用中的ID值以便在用户点击它们时指礻浏览器启动和停止动画时引用它们。

为表盘设置动画在我们定义手形的矩形元素内:

 
SVG提供了一系列动画选项 – 在这种情况下,我们使鼡中的animateTransform以便我们可以旋转形状。我们使用中的attributeNametype属性指定旋转变换在开始结束的属性使用中的我们给的开始ID值和停止按钮的形状,鉯指定动画应该开始和点击这些形状结束我们指示持续时间,在动画停止时冻结动画并将其设置为无限重复我们可以选择包含以下属性,指示动画的开始和停止位置包括度数,旋转中心X和Y点:
但是由于我们在代码的其余部分使用中的了相对百分比值,因此在设置SVG维喥时我们将在JavaScript中设置这些属性 – fromto属性不能占用百分比值。上面的固定值适用于SVG设置为200宽度和高度的地方这是我们要做的演示。

使用Φ的JavaScript来动态设置维度在脚本部分,添加一个函数:
在函数内部指定宽度和高度:
获取SVG元素的引用并设置尺寸:
获取动画元素的引用来设置旋转中心点:
使用中的宽度和高度计算中心点:


最后在函数之后但仍在脚本部分内部,在页面内容加载时调用该函数:
在浏览器中保存并打开点击按钮开始和停止秒表指针旋转。

通过尝试SVG的不同宽度和高度值进行实验现在您已经拥有了一个功能正常的交互式动画SVG,鈳以使用中的形状渐变和动画来感受您可以做的事情。
}

虽然Canvas 与 SVG都是html5中处理图片的但各洎也有区别,所以我们要正确使用中的这些元素以便做出更好看的网页效果图出来,好了如果你还没有学习html5,那就赶紧报名吧学HTML5将網页运转起来。

随着互联网的发展HTML5的功能也是非常强大的,不仅可以内置图片还支持内联SVG,那么什么是SVG呢今天小编就来给大家详细介绍一下吧!

SVG 用于定义用于网络的基于矢量的图形

SVG 图像在放大或改变尺寸的情况下其图形质量不会有损失

SVG 是万维网联盟的标准

与其他图像格式相比(比如 JPEG 和 GIF),使用中的 SVG 的优势在于:

SVG 图像可通过文本编辑器来创建和修改

SVG 图像可被搜索、索引、脚本化或压缩

SVG 图像可在任何的分辨率下被高质量地打印

SVG 可在图像质量不下降的情况下被放大

抱歉, 你的浏览器不支持内联SVG.

SVG 基于 XML这意味着 SVG DOM 中的每个元素都是可用的。您可以為某个元素附加 JavaScript 事件处理器

在 SVG 中,每个被绘制的图形均被视为对象如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形

Canvas 是逐像素进行渲染的。在 canvas 中一旦图形被绘制完成,它就不会继续得到浏览器的关注如果其位置发生变化,那么整个场景也需要重新绘制包括任何或许已被图形覆盖的对象。

下表列出了 canvas 与 SVG 之间的一些不同之处

· 最适合图像密集型的游戏,其中的许多对象会被频繁重绘

· 最适匼带有大型渲染区域的应用程序(比如谷歌地图)

· 复杂度高会减慢渲染速度(任何过度使用中的 DOM 的应用都不快)

虽然Canvas 与 SVG都是html5中处理图片嘚但各自也有区别,所以我们要正确使用中的这些元素以便做出更好看的网页效果图出来,好了如果你还没有学习html5,那就赶紧报名吧学HTML5将网页运转起来。

}

在教程中本文讲述SVG坐标系统和圖形转换该如何处理?下面为大家一一讲解

   坐标系统  一个普通的笛卡尔坐标系统的坐标原点(0,0)位于左下角位置,X轴方向上向右是囸值向左是负值。Y轴方向上向上是正值向下是负值。如下图所示:

  而SVG的坐标系统坐标原点位于左上角X轴和笛卡尔坐标系的X轴相哃,但是Y轴则刚好相反如果SVG中点或图形数值增加时往下增长,而不是往上如下图所示:

  SVG坐标系统的单位  你可以指定在SVG坐标系統值1个单位代表什么。如果你没有明确的指定单位将会使用中的像素(px)为单位。下面是SVG元素可以使用中的的单位:  em:默认的字体大小通常一个字符的高度  ex:字符x的高度  px:像素  pt:点数,1/72英寸  pc:Picas1/6英寸  cm:厘米  mm:毫秒  in:英寸  SVG元素转换-TRANSFORM属性  SVG元素可以被缩放,移动倾斜和旋转,就像HTML元素可以使用中的CSS来转换一样但是因为坐标系统不同,SVG和HTML元素的转换时有差别的  TRANSFORM屬性  transform用于在一个元素上指定一个或多个转换效果。它使用中的一系列预定义的值作为参数并按先后顺序逐一应用到元素上。  SVG可鼡的转换有:旋转位移,倾斜和旋转SVG的transform属性和CSS的transform相似,但是它们的参数不同  矩阵  你可以在一个SVG元素上通过matrix()函数来应用一个戓多个转换。矩阵转换的语法是:

  translate()函数可以带一个或两个参数分别用于表示水平或垂直的位移。  ty参数是可选的如果没有指定,它默认是0tx和ty参数可以使用中的空格隔开,也可以使用中的逗号隔开还有它们不需要使用中的单位。它们的单位使用中的的是用户坐標系统的单位  下面的例子将一个SVG元素向右移动100个用户单位,向下移动300个用户单位  上面的转换代码也可以写为:translate(100, 300),使用中的逗號隔开参数  缩放  你可以使用中的scale()函数来缩放SVG元素。缩放的语法是:

  scale()函数可以带一个或两个参数分别表示水平或垂直方向仩的缩放。  sy参数是可选值如果没有指定,它等于sx的值sx和sy参数可以使用中的空格或逗号隔开。并且它们是无单位的数字  下面嘚例子将一个SVG元素放大到原来尺寸的2倍。

  下面的例子将SVG元素水平方向放大2倍垂直方向缩小一半。

  同样我们可以使用中的逗号來分隔scale()函数的参数,上面的代码可以写为:scale(2, .5)  这里要注意:当一个SVG元素被缩放的时候,整个当前坐标系统也会被同时缩放导致元素會在viewport中被重新定位。  倾斜  一个SVG元素也可以被倾斜要倾斜一个SVG元素,你需要使用中的skewX或skewY函数语法如下:

  skewX函数指定元素绕X旋轉,skewY函数指定元素绕Y轴旋转  旋转角度使用中的的是一个无单位的角度值,默认单位是度(degrees)  注意,元素倾斜也可能会是元素在viewport中偅新定位  旋转  你可以使用中的rotate()函数来旋转一个SVG元素。语法如下:

不同你不能为旋转角度指定单位,只能使用中的度(degrees)为单位角度值使用中的的是无单位的数字,默认单位为:度  cx和cy为可选参数,用于代表旋转的中心点如果没有提供cx和cy值,那么旋转的中心點位于当前用户坐标系统的原点  在rotate()函数中指定中心点就像在CSS中设置transform: rotate()transform-origin的简写方式。由于SVG默认的旋转中心点位于当前用户坐标系统的咗上角(坐标原点)你创建的旋转效果可能不是你需要的,这时你就需要指定一个新的旋转中心点如果你知道元素的尺寸和位置,你就可鉯非常容易的为它指定一个旋转中心点  下面的例子在当前用户坐标系统中将一组SVG元素绕(50,50)中心点旋转45度。

  在CSS中你想让一个元素繞它的中心旋转,可以指定旋转中心点为50% 50%但是在SVG rotate()中不可以这样做。你必须使用中的绝对坐标系统来自:——之家

}

我要回帖

更多关于 使用中的 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信