HTML å ã® SVG å ¥é
ãã®è¨äºã¨é¢é£ããä¾ã¯ãã¤ã³ã©ã¤ã³ SVG ã使ç¨ããæ¹æ³ã示ãã¦ãã¾ãã
åºæ¬çãªä¾
HTML ãã¡ã¤ã«ã«ã¤ã³ã©ã¤ã³ SVG ãè¨è¿°ããã«ã¯ã SVG ãã¡ã¤ã«å ¨ä½ã HTML ãã¡ã¤ã«ã«è²¼ãä»ãã¾ãã
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>SVG ãã¢</title>
<meta name="viewport" content="width=device-width" />
</head>
<body>
<svg viewBox="0 0 100 100" preserveAspectRatio="xMidYMid slice" role="img">
<title>ã°ã©ãã¼ã·ã§ã³</title>
<linearGradient id="gradient">
<stop class="begin" offset="0%" stop-color="red" />
<stop class="end" offset="100%" stop-color="black" />
</linearGradient>
<rect x="0" y="0" width="100" height="100" style="fill:url(#gradient)" />
<circle cx="50" cy="50" r="30" style="fill:url(#gradient)" />
</svg>
</body>
</html>
解説
ãã®ãã¼ã¸ã¯é常㮠HTML 㨠CSS ã§ãåä¸ã® SVG ãããã¾ããå¯ä¸ã®è峿·±ãé¨å㯠<svg> è¦ç´ ã§ãããã®è¦ç´ ã¨ãã®åè¦ç´ 㯠SVG åå空éã«ããã¨å®£è¨ããã¦ãã¾ããè¦ç´ ã«ã¯ã°ã©ãã¼ã·ã§ã³ã¨ãã°ã©ãã¼ã·ã§ã³ã§å¡ãã¤ã¶ããã 2 ã¤ã®å³å½¢ãæ ¼ç´ããã¦ãã¾ããã°ã©ãã¼ã·ã§ã³ã®è²çµç±ç¹ã¯ CSS ã«ãã£ã¦è¨å®ããã¦ãã¾ãã
ç¹çãã¹ã㯠3 ã¤ã®å±æ§ã¨ 1 ã¤ã®å ¥ãåè¦ç´ ã§ãã
-
viewBox屿§ã¯ã SVG ç»åã®åº§æ¨ãç¸å¯¾çã§ããè«ç座æ¨ç³»ã確ç«ãã¾ãããã®å ´åãç»å㯠100 x 100 ã®ãã¥ã¼ãã¼ãã«é ç½®ããã¾ãã -
preserveAspectRatio屿§ã¯ãå©ç¨ã§ãããµã¤ãºã§ç»åãä¸å¤®ã«é ç½®ããé«ããå¹ ã®æå¤§å¤ã¾ã§å¤åããã¯ã¿åºããé¨åãã«ãããããã¨ã§ãã¢ã¹ãã¯ãæ¯ãä¿æãããã¨ãæå®ãã¾ãã -
role="img"ãè¨è¼ãããã¨ã§ãæ¯æ´æè¡ã SVG ãç»åã¨ãã¦å¦çãããã¨ãä¿è¨¼ãã¾ãã -
SVG å ã®
<title>ã¯ã°ã©ãã£ãã¯ã®ã¢ã¯ã»ã·ããªãã£ã®ããã®çãããã¹ãã«ãã説æãæä¾ãã¾ããã¿ã¤ãã«ããã¹ãã¯æç»ããã¾ãããããã©ã¦ã¶ã¼ã¯ SVG ã«ãã¤ã³ã¿ã¼ãä¹ããæã«ãã¼ã«ãããã¨ãã¦è¡¨ç¤ºãããã¨ãããã¾ãã<title>ã¯<svg>éå§ã¿ã°ã®å¾ã®æåã®è¦ç´ ã§ãªããã°ãªãã¾ããã
ãã¹ããã©ã¯ãã£ã¹
SVG ã <img> è¦ç´ ãä»ãã¦è¨è¿°ãããå ´åã alt 屿§ã¯ç»åã«ã¢ã¯ã»ã·ããªãã£åãã®ä»£æ¿ããã¹ããæä¾ãã¾ããã¤ã³ã©ã¤ã³ SVG 㯠alt 屿§ã«å¯¾å¿ãã¦ãã¾ãããããããä»ã«ãã¢ã¯ã»ã·ããªãã£ãæãããããã¤ãã®æ¹æ³ã«å¯¾å¿ãã¦ãã¾ããã¤ã³ã©ã¤ã³ SVG ã§ã¯å
ã®ãªãã¸ã§ã¯ãå
ã®ã½ã¼ã¹ã DOM ã§å©ç¨ã§ãããããã¤ã³ã©ã¤ã³ SVG ãã¡ã¤ã«å
ã®ãã¹ã¦ã®ãã¼ã¯ã¢ãããã¢ã¯ã»ã·ããªãã£ãªãã¸ã§ã¯ãã¢ãã« (AOM) ã§ã¢ã¯ã»ã¹ã§ãããã¨ãæå³ãã¦ãã¾ãã <title> è¦ç´ ãè¨è¿°ãããã¨ã§ä»£æ¿ããã¹ããæä¾ãã¾ãã
ç»åãçãã¿ã¤ãã«ä»¥ä¸ã®ãã¨ãä¼ããå ´åã¯ã <desc> è¦ç´ ã§è©³ãã説æãè¨è¼ãã¦ãã ããã <desc> è¦ç´ ã¯ã¢ã¯ã»ã·ããªãã£ã®ããã®é·æã®èª¬æãæä¾ãã¾ãã <title> ããã¹ãã¨åæ§ã«ã <desc> å
ã®ããã¹ãã¯ç»é¢ã«æç»ããã¾ããã
SVG ãå¯è¦ããã¹ãã§ã©ãã«ä»ãã§ããå ´åããã®ããã¹ãã aria-labelledby 屿§ã§åç
§ãã¾ãããããã¯ã <title> ã® id ã« aria-labelledby 屿§ãè¨è¿°ãã¾ãã
<svg viewBox="0 0 100 125" role="img" aria-labelledby="svgTitle svgDescription">
<title id="svgTitle">Manual</title>
<desc id="svgDescription">
A nondescript twelve page booklet opened to the middle page
</desc>
<defs>
<style>
rect {
fill: #cccccc;
stroke: #666;
transform-origin: top;
}
</style>
</defs>
<rect
width="36"
height="60"
x="13"
y="18"
ry="2"
style="transform: skewy(24deg)" />
<rect
width="39"
height="60"
x="11"
y="20"
ry="2"
style="transform: skewy(18deg)" />
<rect
width="42"
height="90"
x="8"
y="22"
ry="2"
style="transform: skewy(12deg)" />
<rect
width="36"
height="60"
x="50"
y="18"
ry="2"
style="transform: skewy(-24deg)" />
<rect
width="39"
height="60"
x="50"
y="20"
ry="2"
style="transform: skewy(-18deg)" />
<rect
width="42"
height="90"
x="50"
y="22"
ry="2"
style="transform: skewy(-12deg)" />
</svg>
SVG ãå¯è¦ããã¹ãã§è¨è¿°ã§ããå ´åããã®ããã¹ã㯠aria-describedby 屿§ã§åç
§ãããã¨ãã§ãã¾ãã aria-describedby ã使ç¨ããå ´åã <desc> ãããåªå
ããã¾ãã
ãã®ä¾ã§ã¯ã aria-labelledby 屿§ã¯ aria-describedby 屿§ãããæ¯æ´æè¡ã«å¯¾å¿ãã¦ããããã説ææã¨ã¿ã¤ãã«ã®ä¸¡æ¹ãè¨è¼ãã¦ãã¾ãã