<html xmlns:v="urn:schemas-microsoft-com:vml">
<head><title>VML Example</title></head>
<body>
<v:line from="20,20" to="200,200"></v:line>
</body>
</html>
關鍵:xmlns:v="urn:schemas-microsoft-com:vml" 聲明命名空間。
學習資源:MSDN VML、中文入門、在線編輯器。
<html xmlns="https://www.w3.org/1999/xhtml" xmlns:svg="https://www.w3.org/2000/svg">
<body>
<svg width="100%" height="100%" version="1.1" xmlns="https://www.w3.org/2000/svg">
<line x1="0" y1="0" x2="300" y2="300" style="stroke:rgb(99,99,99);stroke-width:2" />
</svg>
</body>
</html>
創建 line.svg:
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" version="1.1" xmlns="https://www.w3.org/2000/svg">
<line x1="0" y1="0" x2="300" y2="300" style="stroke:rgb(99,99,99);stroke-width:2" />
</svg>
三種嵌入標簽:
<embed src="line.svg" type="image/svg+xml" pluginspage="..."/><object data="line.svg" type="image/svg+xml" codebase="..."/><iframe src="line.svg"></iframe><canvas id="myCanvas" width="200" height="100"></canvas>
<script>
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.moveTo(10, 10);
ctx.lineTo(150, 50);
ctx.stroke();
</script>
Canvas 本身無繪圖能力,所有繪製邏輯在 JavaScript 中通過 2D Context API 完成。
實際項目中,成熟 JS 圖表庫(ECharts、Highcharts、Raphael 等)已內部處理瀏覽器兼容,開發者無需直接操作底層技術。