一推网

当前位置: 首页 > 知识问答 > 如何有效利用HTML中的SVG和预定义形状元素?

知识问答

如何有效利用HTML中的SVG和预定义形状元素?

2025-09-21 14:03:58 来源:互联网转载
HTML中的SVG(可缩放矢量图形)是一种用于描述二维图形的XML标记语言,它支持预定义形状元素如、、、和等。

在HTML中使用SVG(Scalable Vector Graphics)可以显著提升网页的视觉效果和交互性,SVG是一种基于XML的矢量图形格式,支持高清晰度的缩放和无损放大而不会失真,下面将详细介绍如何在HTML中使用SVG以及SVG预定义形状元素:

HTML中使用SVG的方法

1、使用标签嵌入SVG文件:可以通过以下三种方式将SVG文件嵌入到HTML文档中:

<embed>:适用于嵌入外部SVG文件。

     <embed src="rect.svg" width="300" height="100" type="image/svg+xml" pluginspage="http://www.adobe.com/svg/viewer/install/"/>

<object>:也用于嵌入外部SVG文件。

     <object data="rect.svg" width="300" height="100" type="image/svg+xml" codebase="http://www.adobe.com/svg/viewer/install/"/>

<iframe>:虽然较为早期且现在较少使用,但仍可用于嵌入SVG文件。

     <iframe src="rect.svg" width="300" height="100"></iframe>

2、直接在HTML文件中写入SVG代码:可以直接在HTML文件中编写SVG代码,需要先引入SVG的DTD文件。

   <?xml version="1.0" standalone="no"?>   <!DOCTYPE svg PUBLIC "//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">   <svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg" onclick="ccc();">       <ellipse cx="240" cy="100" rx="220" ry="30" style="fill:yellow"/>       <ellipse cx="220" cy="100" rx="190" ry="20" id="w1" style="fill:white"/>   </svg>   <script type="text/javascript">       function ccc(){           var a = document.getElementById("w1");           a.style.fill="red";           a.setAttribute("cx", "150"); //设置值           a.setAttribute("ry", "50"); //设置值       }   </script>

SVG预定义形状元素

SVG提供了多种预定义的形状元素,这些元素可以直接用于创建各种图形,以下是一些常用的SVG预定义形状元素:

1、矩形<rect>:用于绘制矩形或圆角矩形,属性包括x,y,width,height,rx(圆角的水平半径)和ry(圆角的垂直半径),示例:

   <rect x="20" y="20" width="100" height="50" fill="blue" stroke="black" strokewidth="2"/>

2、圆形<circle>:用于绘制圆形,属性包括cx(圆心X坐标),cy(圆心Y坐标),r(半径),示例:

   <circle cx="50" cy="50" r="40" fill="green" stroke="black" strokewidth="2"/>

3、椭圆<ellipse>:用于绘制椭圆,属性包括cx,cy,rx(水平方向上的半径),ry(垂直方向上的半径),示例:

   <ellipse cx="40" cy="30" rx="60" ry="30" fill="yellow" stroke="black" strokewidth="2"/>

4、线段<line>:用于绘制直线,属性包括x1,y1,x2,y2(起点和终点的坐标),示例:

   <line x1="10" y1="10" x2="100" y2="100" stroke="purple" strokewidth="2"/>

5、折线<polyline>:用于绘制多条连接的直线段,属性包括points(点的列表,每对值表示一个点的坐标),示例:

   <polyline points="5,5 20,20 40,10 60,40 80,20" fill="none" stroke="red" strokewidth="2"/>

6、多边形<polygon>:用于绘制多边形,属性包括points(顶点的列表,每对值表示一个顶点的坐标),示例:

   <polygon points="50,5 95,5 90,80 55,80" fill="orange" stroke="black" strokewidth="2"/>

7、路径<path>:用于绘制任意形状的图形,通过d属性指定一系列指令和坐标。

   <path d="M 10 10 L 30 10 L 20 40 Z" fill="none" stroke="blue" strokewidth="2"/>

表格:SVG预定义形状元素及其属性

形状 主要属性 示例
矩形 x, y, width, height, rx, ry
圆形 cx, cy, r
椭圆 cx, cy, rx, ry
线段
  • x1, y1, x2, y2
  • 折线 points
    多边形 points
    路径 d (指令和坐标)

    FAQs

    问题1:如何在HTML中嵌入SVG文件?

    答案1:在HTML中嵌入SVG文件可以使用<embed><object><iframe>标签,使用<embed>

    <embed src="rect.svg" width="300" height="100" type="image/svg+xml"/>

    使用<object>

    <object data="rect.svg" width="300" height="100" type="image/svg+xml"/>

    使用<iframe>

    <iframe src="rect.svg" width="300" height="100"></iframe>

    问题2:如何在SVG中使用JavaScript控制图形变换?

    答案2:如果将SVG代码直接写在HTML文件中,可以通过JavaScript来控制图形的变换。

    <svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg" onclick="ccc();">    <ellipse cx="240" cy="100" rx="220" ry="30" style="fill:yellow"/>    <ellipse cx="220" cy="100" rx="190" ry="20" id="w1" style="fill:white"/></svg><script type="text/javascript">    function ccc(){        var a = document.getElementById("w1");        a.style.fill="red";        a.setAttribute("cx", "150"); //设置值        a.setAttribute("ry", "50"); //设置值    }</script>