云的圆舞曲 發表於 2020-10-19 22:18:00

一篇文章教会你使用HTML5 SVG 标签

<p>【一、项目背景】</p>
<p>SVG 表示可伸缩矢量图形,这是一门用于描述 2D 图形的语言,图形应用使用 XML 编写,然后 XML 由 SVG 阅读器程序呈现。支持三种类型的图形对象:矢量图形形状(例如,由直线和曲线组成的路径),图像和文本。图形对象可以进行分组,样式设置,转换和合成。功能集包括嵌套转换,剪切路径,Alpha蒙版,滤镜效果和模板对象。。</p>
<p>SVG 在 2003 年 1 月 14 日成为 W3C 推荐标准,你可以在 SVG 规范 页面中查看最新版本的 SVG 规范。</p>
<p>【二、怎么查看 SVG 文件?】</p>
<p>大多数 Web 浏览器都可以显示 SVG,就像它们可以显示 PNG,GIF 以及 JPG 图形。IE 用户可能需要安装 Adobe SVG 阅读器以便能够在浏览器中查看 SVG。</p>
<p>【三、HTML5 中嵌入 SVG】</p>
<p>HTML5 允许我们直接使用 _... 标签嵌入 SVG,</p>
<p>简单的语法:</p>
<pre><code>&lt;svg xmlns="http://www.w3.org/2000/svg"&gt;
&lt;/svg&gt;
</code></pre>
<p><img src="https://upload-images.jianshu.io/upload_images/9337488-99a5f07b261ca652?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240"></p>
<p>拓展:</p>
<p>FireFox 3.7 还引入了一个配置选项("about:config"),可以通过下列步骤启用 HTML5:</p>
<ol>
<li>
<p>在 FireFox 地址栏中输入 about:config。</p>
</li>
<li>
<p>在出现警告消息的地方点击 “I'll be careful, I promise!” 按钮(确保遵守它)。</p>
</li>
<li>
<p>在页面顶部的过滤器中输入 html5.enable。</p>
</li>
<li>
<p>默认可能被禁用了,因此要点击它切换它的值为 true。</p>
</li>
</ol>
<p>【四、实际案例】</p>
<p><strong>1. SVG 圆</strong></p>
<p>下面是一个 SVG 示例的 HTML5 版本,用 <circle> 标签绘制一个圆:</circle></p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;head&gt;
&lt;title&gt;SVG&lt;/title&gt;
&lt;meta charset="utf-8" /&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h2&gt;HTML5 SVG Circle&lt;/h2&gt;
&lt;svg id="svgelem" height="200" xmlns="http://www.w3.org/2000/svg"&gt;
    &lt;circle id="redcircle" cx="50" cy="50" r="50" fill="red" /&gt;
&lt;/svg&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>启用 HTML5 的最新版 FireFox 中会生成如下结果:</p>
<p><img src="https://upload-images.jianshu.io/upload_images/9337488-22631071178f1b75?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240"></p>
<p><strong>2. SVG 矩形</strong></p>
<p>下面是一个 SVG 示例的 HTML5 版本,用 <rect> 标签绘制一个矩形:</rect></p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;head&gt;
&lt;title&gt;SVG&lt;/title&gt;
&lt;meta charset="utf-8" /&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h2&gt;HTML5 SVG Rectangle&lt;/h2&gt;
&lt;svg id="svgelem" height="200" xmlns="http://www.w3.org/2000/svg"&gt;
    &lt;rect id="redrect" width="300" height="100" fill="red" /&gt;
&lt;/svg&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>在启用 HTML5 的最新版 FireFox 中会生成如下结果:</p>
<p><img src="https://upload-images.jianshu.io/upload_images/9337488-58c8de0669fa3e43.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240"></p>
<p><strong>3. SVG 线条</strong></p>
<p>下面是一个 SVG 示例的 HTML5 版本,用 <line> 标签绘制一个线条:</line></p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;head&gt;
&lt;title&gt;SVG&lt;/title&gt;
&lt;meta charset="utf-8" /&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h2&gt;HTML5 SVG Line&lt;/h2&gt;
&lt;svg id="svgelem" height="200" xmlns="http://www.w3.org/2000/svg"&gt;
    &lt;line x1="0" y1="0" x2="200" y2="100"
          style="stroke:red;stroke-width:2"/&gt;
&lt;/svg&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>你可以使用 style 属性给它设置额外的样式信息,比如笔画,填充色,笔画宽度等等。</p>
<p>在启用 HTML5 的最新版 FireFox 中会生成如下结果:</p>
<p><img src="https://upload-images.jianshu.io/upload_images/9337488-ce16d24be84678c1?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240"></p>
<p>便于学习这一概念 - 请使用 FireFox 3.7 或更高的版本进行在线练习。</p>
<p><strong>4. SVG 椭圆</strong></p>
<p>下面是一个 SVG 示例的 HTML5 版本,用 <ellipse> 标签绘制一个椭圆:</ellipse></p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;head&gt;
&lt;title&gt;SVG&lt;/title&gt;
&lt;meta charset="utf-8" /&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h2&gt;HTML5 SVG Ellipse&lt;/h2&gt;
&lt;svg id="svgelem" height="200" xmlns="http://www.w3.org/2000/svg"&gt;
    &lt;ellipse cx="100" cy="50" rx="100" ry="50" fill="red" /&gt;
&lt;/svg&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>在启用 HTML5 的最新版 FireFox 中会生成如下结果:</p>
<p><img src="https://upload-images.jianshu.io/upload_images/9337488-838c6634dc2d3a3d?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240"></p>
<p>便于学习这一概念 - 请使用 FireFox 3.7 或更高的版本进行在线练习。</p>
<p><strong>5. SVG 多边形</strong></p>
<p>下面是一个 SVG 示例的 HTML5 版本,用 <polygon> 标签绘制一个多边形:</polygon></p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;head&gt;
&lt;title&gt;SVG&lt;/title&gt;
&lt;meta charset="utf-8" /&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h2&gt;HTML5 SVG Polygon&lt;/h2&gt;
&lt;svg id="svgelem" height="200" xmlns="http://www.w3.org/2000/svg"&gt;
    &lt;polygonpoints="20,10 300,20, 170,50" fill="red" /&gt;
&lt;/svg&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>启用 HTML5 的最新版 FireFox 中会生成如下结果:</p>
<p><img src="https://upload-images.jianshu.io/upload_images/9337488-83c55bf9ff5981ae.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240"></p>
<p><strong>6. SVG 折线</strong></p>
<p><polyline> 元素用于绘制连接的直线。下面是一个 SVG 示例的 HTML5 版本,用 <polyline> 标签绘制一个折线图:</polyline></polyline></p>
<pre><code>&lt;html&gt;
   &lt;title&gt;SVG折线&lt;/title&gt;
   &lt;body&gt;

      &lt;h1&gt;简单SVG折线图片&lt;/h1&gt;

      &lt;svg width="800" height="800"&gt;
         &lt;g&gt;
            &lt;text x="0" y="15" fill="black" &gt;Polyline #1: Without opacity.&lt;/text&gt;

            &lt;polyline points="150,75 258,137.5 258,262.5 150,325 42,262.6 42,137.5"
            stroke="black" stroke-width="3" fill="none"&gt;&lt;/polyline&gt;
         &lt;/g&gt;
      &lt;/svg&gt;

   &lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>在启用 HTML5 的最新版 FireFox 中会生成如下结果:</p>
<p><img src="https://upload-images.jianshu.io/upload_images/9337488-f41a49b0721040d2?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240"></p>
<p><strong>7. SVG 渐变</strong></p>
<p>下面是一个 SVG 示例的 HTML5 版本,用 <ellipse> 标签绘制一个椭圆,使用 <radialgradient> 标签定义一个 SVG 径向渐变。</radialgradient></ellipse></p>
<p>我们可以以类似的方式用 <lineargradient> 标签创建 SVG 线性渐变。</lineargradient></p>
<pre><code>&lt;!DOCTYPE html&gt;

&lt;head&gt;
&lt;title&gt;SVG&lt;/title&gt;
&lt;meta charset="utf-8" /&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;h2&gt;HTML5 SVG Gradient Ellipse&lt;/h2&gt;
&lt;svg id="svgelem" height="200" xmlns="http://www.w3.org/2000/svg"&gt;
    &lt;defs&gt;
      &lt;radialGradient id="gradient" cx="50%" cy="50%" r="50%" fx="50%" fy="50%"&gt;
      &lt;stop offset="0%" style="stop-color:rgb(200,200,200);
      stop-opacity:0" /&gt;
      &lt;stop offset="100%" style="stop-color:rgb(255,0,0);
          &lt;!--颜色为红--&gt;
      stop-opacity:1" /&gt;
      &lt;/radialGradient&gt;
    &lt;/defs&gt;
    &lt;ellipse cx="100" cy="50" rx="100" ry="50" style="fill:url(#gradient)" /&gt;
&lt;/svg&gt;
&lt;/body&gt;

&lt;/html&gt;
</code></pre>
<p>在启用 HTML5 的最新版 FireFox 中会生成如下结果:</p>
<p><img src="https://upload-images.jianshu.io/upload_images/9337488-6d50c7e032aa492b?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240"></p>
<p>【五、总结】</p>
<p>1、讲解了Html中svg,对于遇到的一些难点进行了分析及提供解决方案。欢迎大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。</p>
<p>2、代码很简单,希望对你学习有帮助。</p>
<p>想学习更多Python网络爬虫与数据挖掘知识,可前往专业网站:http://pdcfighting.com/</p><br><br>
来源:https://www.cnblogs.com/dcpeng/p/13843521.html
頁: [1]
查看完整版本: 一篇文章教会你使用HTML5 SVG 标签