Sam*_*tar 3 jquery html5 svg canvas html5-canvas
我有以下示例代码:
function drawCanvas() {
var canvas = document.getElementById("logoText");
var c = canvas.getContext('2d');
c.lineWidth = 1;
c.lineStyle = "#FFFFFF";
c.fillRect(10, 10, 150, 40);
c.fillStyle = "#FFFFFF";
c.font = "22px 'HelveticaNeue-Light','Helvetica Neue Light','Helvetica Neue',sans-serif"
c.fillText("Test", 20, 45);
hexstring1 = "\u2610";
c.fillText(hexstring1, 20, 70);
}
Run Code Online (Sandbox Code Playgroud)
如果我假设使用支持SVG和Canvas的浏览器,那么我如何将此代码转换为使用SVG.
使用SVG而不是Canvas会有什么优势或劣势?
SVG是基于HTML的标签.因此,您必须在SVG标记内插入DOM节点.您的示例大致转换为以下代码.
您可以像在任何其他节点中一样在JavaScript中创建它,但请确保使用document.createElementNS( 'http://www.w3.org/2000/svg', 'rect' );插入节点而不是通常的节点document.createElement( 'div' );.
<svg xmlns="http://www.w3.org/2000/svg"
version="1.1"
viewbox="0 0 100 100">
<rect x="10" y="10" width="150" height="40" style="stroke: #FFFFFF; stroke-width: 1px" />
<text x="20" y="45" style="fill: #FFFFFF; font-family: 'HelveticaNeue-Light','Helvetica Neue Light','Helvetica Neue',sans-serif; font-size: 22px">Test</text>
<text x="20" y="70" style="fill: #FFFFFF; font-family: 'HelveticaNeue-Light','Helvetica Neue Light','Helvetica Neue',sans-serif; font-size: 22px">☐</text>
</svg>
Run Code Online (Sandbox Code Playgroud)
使用SVG over canvas有两个优点: