HTML绘图(二):<svg>

1. SVG简介

SVG(Scalable Vector Graphics) 意为可缩放矢量图形。
SVG 使用 XML 格式定义图像。
SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失。
由于SVG是XML文件,SVG图像可以用任何文本编辑器创建,但它往往是与一个绘图程序一起使用,如Inkscape.,更方便地创建SVG图像。
什么是XML?

XML (eXtensible Markup Language)指可扩展标记语言,被设计用来传输和存储数据。

HTML 被设计用来显示数据。

有关于XML在我的另一篇博文中有详细的介绍: 【小白入门】始于前端UI(二)——XML简介.

2. 简单的SVG实例

<?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 xmlns="http://www.w3.org/2000/svg" version="1.1">
  <circle cx="100" cy="50" r="40" stroke="black"
  stroke-width="2" fill="red" />
</svg>

第一行包含了 XML 声明。请注意 standalone 属性!该属性规定此 SVG 文件是否是"独立的",或含有对外部文件的引用。standalone=“no” 意味着 SVG 文档会引用一个外部文件 - 在这里,是 DTD 文件。
第二和第三行引用了这个外部的 SVG DTD。该 DTD 位于 “http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd”。该 DTD 位于 W3C,含有所有允许的 SVG 元素。
version 属性可定义所使用的 SVG 版本,xmlns 属性可定义 SVG 命名空间。

3. SVG嵌入HTML页面

3.1 SVG 文件嵌入HTML文档

可通过以下标签嵌入 HTML 文档:<embed><object> 或者 <iframe>,示例如下:

<!--主要浏览器都支持,并允许使用脚本;HTML4和XHTML禁用,HTML5允许-->
<embed src="circle1.svg" type="image/svg+xml" />

<!--主要浏览器都支持,不允许使用脚本;HTML4,XHTML,HTML5允许-->
<object data="circle1.svg" type="image/svg+xml"></object>

<!--主要浏览器都支持,并允许使用脚本;HTML4和XHTML禁用,HTML5允许-->
<iframe src="circle1.svg"></iframe>
3.2 SVG代码嵌入

SVG的代码可以直接嵌入到HTML页面中,或者直接链接到SVG文件。

<!DOCTYPE html>
<html>
<body>

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
   <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red" />
</svg> 
 
</body>
</html>

也可以使用<a>标签链接到SVG文件:

<a href="circle1.svg">查看 SVG 文件</a>

参考链接

SVG参考手册.
SVG实例(把SVG代码直接嵌入到HTML代码中).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是补全后的代码: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>testD3-3-drawingDivBar</title> <script type="text/javascript" src="resource/d3.v5.min.js"></script> <style type="text/css"> #d3 { width: 150px; height: 200px; background-color: #ccc; display: flex; justify-content: flex-end; } .bar { width: 25px; margin-left: 10px; background-color: blue; } </style> </head> <body> <div id="d3"></div> <script type="text/javascript"> // 选择id为d3的div进行绘图 const svg = d3.select("#d3") .append("svg") .attr("width", "100%") .attr("height", "100%"); // 层数量为5。层间距为10px。层宽度为25px。层高度为175px,效果形状是阶梯状 const data = [175, 150, 125, 100, 75]; svg.selectAll(".bar") .data(data) .enter().append("rect") .attr("class", "bar") .attr("x", (d, i) => i * 35) .attr("y", d => 200 - d) .attr("width", 25) .attr("height", d => d); </script> </body> </html> ``` 解释: 1. 样式中设置 `display: flex;` 和 `justify-content: flex-end;` 是为了让矩形从右往左排列。 2. `x` 属性设置为 `(d, i) => i * 35`,其中 `i` 表示当前数据的索引,也就是第几个矩形,`35` 是一个矩形的宽度和层间距的和。 3. `y` 属性设置为 `d => 200 - d`,其中 `200` 是 `div` 的高度,`d` 是数据数组中的元素值,表示当前矩形的高度。这样设置可以让矩形从下往上排列,并且顶部对齐。 4. `width` 属性设置为 `25`,与样式中的层宽度相同。 5. `height` 属性设置为 `d => d`,与数据中的元素值相同,表示当前矩形的高度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值