SVG (масштабируемая векторная графика) — XML-подобный язык для визуального описания векторной графики.
Opera Mini — показывает статическую картинку.
31 августа 2010 года Google заявила о начале индексации SVG.
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
…
</svg>
<rect
x="100" y="100"
width="550" height="550"
fill="#FAFAA2" stroke="#000"
/>
<circle
cx="100" cy="100" r="275"
fill="#FAFAA2" stroke="#000"
/>
<line
x1="230" y1="570"
x2="640" y2="490"
stroke="#000"
/>
А также: polyline, polygon, path, градиенты и многое другое…
SMIL → Synchronized Multimedia Integration Language *
Произносится как «смайл», будущее под сомнением.
<rect width="50" height="150"
rx="25" ry="25" id="rect"/>
<use x="225" y="0" xlink:href="#rect"/>
<use x="225" y="350" xlink:href="#rect"/>
<animateTransform attributeName="transform"
type="rotate" dur="0.6s" calcMode="discrete"
values=" 45,250,250; 90,250,250; 135,250,250;
180,250,250; 225,250,250; 270,250,250;
315,250,250; 360,250,250"
repeatCount="indefinite"
/>
<g transform="scale(1, 0.2)">
<circle class="glow"/>
<circle class="hole"/>
<animateTransform … "/>
</g>
Canvas (англ. canvas — «холст») — набор API для создания и управления растровой графикой при помощи JavaScript.
Имитация: через VML ExplorerCanvas, через Flash fxCanvas.
Не забывайте про фолбек: <canvas> Too Old </canvas>
.
<canvas id="canvas">
width="600" height="600"></canvas>
var canvas =
document.querySelector('#canvas').getContext('2d');
canvas.beginPath();
…
canvas.closePath();
canvas.fill();
canvas.stroke();
Обратите внимание на порядок применения fill()
и stroke()
.
canvas.rect(25, 25, 550, 550);
canvas.fillStyle = '#FAFAA2';
canvas.strokeStyle = '#000';
canvas.lineWidth = 50;
canvas.arc(300, 300, 275, 0, Math.PI*2, true);
canvas.fillStyle = '#FAFAA2';
canvas.strokeStyle = '#000';
canvas.lineWidth = 50;
function draw() {
canvas.clearRect(0, 0, 600, 600);
canvas.arc(x, y, 100, 0, Math.PI*2, true);
x += 2; y += 2;
}
var pepelsbey = new Image();
pepelsbey.src = 'pepelsbey.png';
pepelsbey.onload = function() {
canvas.drawImage(pepelsbey, 44, 44);
}
canvas.font = 'bold 7em "PT Sans", sans-serif';
canvas.fillStyle = 'rgba(0, 0, 0, 0.5)';
canvas.textAlign = 'center';
canvas.textBaseline = 'top';
canvas.fillText('Ололо', 290, 330);
SVG — масштабируемый вектор, с содержимым
Canvas — плоская, фиксированная растровая графика
Но вообще — это длинная история…
Вадим Макеев, Opera Software
Презентация: pepelsbey.net/pres/dynamic-graphics