html5:svg入门-亚博电竞手机版

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

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

这是最终结果的样子:

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

使用svg元素

从以下html5页面大纲开始:

                 

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

 

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

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

svg {border:1px solid#999999;}

定义

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

 

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

        

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

现在为表盘添加渐变:

   

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

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

            

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

创建形状

在svg中创建形状。

背景

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

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

秒表拨号

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

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

秒表手

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

   

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

启动和停止按钮

添加开始和停止按钮:

    

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

动画

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

svg提供了一系列动画选项 – 在这种情况下,我们使用animatetransform以便我们可以旋转形状。我们使用attributenametype属性指定旋转变换。在开始结束的属性使用我们给的开始id值和停止按钮的形状,以指定动画应该开始和点击这些形状结束。我们指示持续时间,在动画停止时冻结动画并将其设置为无限重复。我们可以选择包含以下属性,指示动画的开始和停止位置,包括度数,旋转中心x和y点:

from="0 100 100" to="360 100 100"

但是,由于我们在代码的其余部分使用了相对百分比值,因此在设置svg维度时,我们将在javascript中设置这些属性 – fromto属性不能占用百分比值。上面的固定值适用于svg设置为200宽度和高度的地方,这是我们要做的演示。

通过javascript设计样式

使用javascript来动态设置维度。在脚本部分,添加一个函数:

function setdimensions(){  }

在函数内部指定宽度和高度:

var width=200; var height=200;

获取svg元素的引用并设置尺寸:

var svgelem = document.getelementbyid("stopwatchgraphic"); svgelem.style.width=width "px"; svgelem.style.height=height "px";

获取动画元素的引用来设置旋转中心点:

var stopwatch = document.getelementbyid("rotatestopwatch");

使用宽度和高度计算中心点:

var centerx = width/2;  var centery = height/2;

准备fromto属性:

var from = "0 " centerx " " centery;  var to = "360 " centerx " " centery;

设置animatetransform属性:

stopwatch.setattribute("from", from); stopwatch.setattribute("to", to);

最后,在函数之后但仍在脚本部分内部,在页面内容加载时调用该函数:

window.addeventlistener("domcontentloaded", setdimensions, false);

在浏览器中保存并打开,点击按钮开始和停止秒表指针旋转。

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

相关阅读:
  • javascript学习指南:利用javascript进行seo优化
展开全文
内容来源于互联网和用户投稿,文章中一旦含有亚博电竞手机版的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系亚博电竞手机版删除

最新文章

网站地图