Acceptãããã§å¤å¥ãããµã¼ãã¼ãµã¤ãã®SVGãã©ã¼ã«ããã¯
前回の記事ã§ã¯SVGã«æªå¯¾å¿ãªç°å¢ãç¾å¨ã©ã®ç¨åº¦æ®ã£ã¦ããã®ã調æ»ãã¾ããã
SVG未対応ブラウザのシェアって今どれくらいか?2015年10月版
ãã©ã¦ã¶ã·ã§ã¢ã®èª¿æ»ã¯é£ãããWebãµã¤ãã®å©ç¨è
層ã«ãã£ã¦ãå¾åã¯ç°ãªãã®ã§ãããããNetMarketShareã«ããã°æªå¯¾å¿ãªç°å¢ã¯2å²ä»¥ä¸ã»ã©ã«ãªã£ã¦ãã¦ãã¾ãã
ãããå°æ°ã ããã¨è¨ã£ã¦å
¨ãç¡è¦ããã¦SVGã ãã使ãã¨ããããã«ã¯ããã¾ããããªããªãæªå¯¾å¿ã®ç°å¢ã§ã¯è¡¨ç¤ºããã¾ãããããå¿
è¦ãªæ
å ±ãå¾ãããå°ãã¾ãããããªãããã®å½¢ã§ãã©ã¼ã«ããã¯ãå¿
è¦ã«ãªãã¾ãã
ç°¡æç®æ¬¡
- ãã©ã¼ã«ããã¯ã¨ã¯
- SVGæªå¯¾å¿ã®ç°å¢ã¨ã¯
- ãã¡ãªãã©ã¼ã«ããã¯ã®ä¾
- ã¤ã³ã©ã¤ã³SVGã®imageè¦ç´ ã使ã£ããã©ã¼ã«ããã¯
- éã«SVGæªå¯¾å¿ã®ç°å¢ã§ä½è¨ãªãªã¯ã¨ã¹ããè¡ããããã©ã¼ã«ããã¯
- JavaScriptã使ã£ããã©ã¼ã«ããã¯
- srcsetå±æ§ã使ã£ãSVGãã©ã¼ã«ããã¯ã»ããã¯
- Acceptãããã¨ã¯ãªã«ãï¼
- WebPç»åã«å¯¾å¿ãã¦ãããªããSVGã«ã対å¿ãã¦ããâ¦â¦ã¯ã
- ã¾ã¨ãã¨ãè¯ãSVGãã©ã¼ã«ããã¯ã«ã¤ãã¦
- è£è¶³ãªã©ãããã
ãã©ã¼ã«ããã¯ã¨ã¯
ãã©ã¼ã«ããã¯ã¨ã¯ãããæ©è½ãå©ç¨ã§ããªãã¨ãã§ãå¥ã®æ段ã§ä»£æ¿ã¨ãããã¨ã§ãã
ä¾ãã°ãåç·ç¶æ³ã®æªåã§ç»åãè¦ããªãå ´åãã¾ãã¯è¦è¦é害è
åãã®ã¹ã¯ãªã¼ã³ãªã¼ãã¼ãªã©ã§å©ç¨ã§ããããã«altå±æ§ã使ãã¾ããããããä¸ã¤ã®ãã©ã¼ã«ããã¯ã§ãã
<img src="paint.jpg" alt="代æ¿ããã¹ã">
jpegç»åãè¦ããªãã¨ãã«ã¯altå±æ§ã代ããã«è¡¨ç¤ºããã¾ãããã¹ã¯ãªã¼ã³ãªã¼ãã¼ã§ããã°ç»åãè¦ããªãè¦è¦é害è
åãã«é³å£°ã¨ãã¦èªã¿ä¸ãã¾ãã
SVGãimgè¦ç´ ã§ä½¿ãã¾ããããã®ã¾ã¾ã§ã¯æªå¯¾å¿ã®å¤ããã©ã¦ã¶ã§ã¯è¡¨ç¤ºã§ãã¾ããã
<img src="paint.svg" alt="代æ¿ããã¹ã">
代ããã®altå±æ§ãè¨å®ããã®ã¯å½ç¶ã¨ãã¦ãã§ããã°
- SVG対å¿ã®ãã©ã¦ã¶ãªããã®ã¾ã¾SVGã表示ãã
- æªå¯¾å¿ã®ãã©ã¦ã¶ã«ã¯PNGç»åãªã©ã代æ¿ã¨ãã¦è¡¨ç¤ºãã
ã¨ããããããã§ãã
SVGæªå¯¾å¿ã®ç°å¢ã¨ã¯
主è¦ãªã¢ãã³ãã©ã¦ã¶ã§ã¯æ¦ãSVGã¸ã®å¯¾å¿ã¯ããã¦ãã¾ãããç¾å¨ã¾ã§æ®ã£ã¦ããSVGæªå¯¾å¿ã®ä»£è¡¨çãªç°å¢ãããã¯ã¢ããããã¨ãããããæãããã¾ãã
Inline SVG in HTML5 - Can I use...
IE 8ä»¥ä¸ | Android 2.3.xä»¥ä¸ | ãã£ã¼ãã£ã¼ãã©ã³ | ã²ã¼ã æ© |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
IEã¯8以ä¸ãAndroid3ã¯æªæºã®æ¨æºãã©ã¦ã¶ãæªå¯¾å¿ãããã«ãã£ã¼ãã£ã¼ãã©ã³ãããããã¬ã©ãã´ã¹ã±ã¼ã¿ã¤ã§ããã
ããã¦ã²ã¼ã æ©ã®å¯¾å¿ç¶æ³ã¯ãã®ãããªæã
åå | SVG | ã¬ã³ããªã³ã°ã¨ã³ã¸ã³ | ãã©ã¦ã¶ | ä»æ§ | çºå£²/é ä¿¡ææ |
---|---|---|---|---|---|
Wii ã¤ã³ã¿ã¼ããããã£ã³ãã« | à | Presto | Opera 9.x | URL | 2006å¹´12æ |
WiiU ãã©ã¦ã¶ã¼ | â | WebKit | NetFront Browser NX v3.0 | URL | 2012å¹´11æ |
DSãã©ã¦ã¶ã¼ | à | Presto | Opera 8.5 | URL | 2006å¹´7æ |
DSiãã©ã¦ã¶ã¼ | à | Presto | Opera 9.5 | URL | 2008å¹´11æ |
3DSãã©ã¦ã¶ã¼ | à | WebKit | NetFrontï¼Rï¼Browser | URL | 2011å¹´6æ |
New 3DSãã©ã¦ã¶ã¼ | â | WebKit | NetFront Browser NX v3.0 | URL | 2014å¹´10æ |
PS3 | Ã | Mozillaï¼ | URL | 2006å¹´11æ | |
PS4 | â | Webkit | 2013å¹´11æ | ||
PSP | Ã | Mozillaï¼ | NetFront | URL | 2005å¹´7æ |
PS Vita | â | Webkit | NetFront NX | URL | 2011å¹´12æ |
任天å ã®ãã¼ãã¯ãWiiUã¨New 3DSããSVG対å¿ããã¦ãã¾ãã
PS4ã¨PS Vitaã¯å®æ©ãææãã¦ããªããã確ããããã¦ããªãã®ã§ããããã¡ãã®ãµã¤ãã«ããã¨SVGã«å¯¾å¿ã¨ã®ãã¨ï¼PS4ãPS Vitaï¼ã
ãªãXboxç³»ã¯IEãªã®ã§çç¥ãã¾ãã
ããããç°å¢ã«å¯¾ãã¦ä¸æãåãåãã¦ãSVGã¨ä»£æ¿ã¨ãªãPNGç»åãé©åã«è¡¨ç¤ºããããããã§ãã
ããã«ã¯æ§ã
ãªæ段ãããã¾ãããã¾ãæåã«ãã¡ãªä¾ãç´¹ä»ãã¾ãã
ãã¡ãªãã©ã¼ã«ããã¯ã®ä¾
日本経済新聞ã¯ãã¡ãªä¾ã¨ãã¦åãããããã§ãã
日本経済新聞ã§ã¯ãããã®ãã´ã«SVGã使ã£ã¦ãã¾ãã
<div class="l-header_title"> <a href="/" id="JSID_TITLE"> <!--[if lte IE 8]> <img src="http://partsa.nikkei.jp/parts/ds/images/common/logo_nikkei_header.png" title="æ¥æ¬çµæ¸æ°è" alt="æ¥æ¬çµæ¸æ°è" /> <![endif]--> <!--[if gte IE 9]><!--> <img src="http://partsa.nikkei.jp/parts/ds/images/common/logo_nikkei_header.svg" title="æ¥æ¬çµæ¸æ°è" alt="æ¥æ¬çµæ¸æ°è"> <!--<![endif]--> </a> </div>
SVGæªå¯¾å¿ãã©ã¦ã¶ã¸ã®ãã©ã¼ã«ããã¯ã¯æ¡ä»¶ä»ãã³ã¡ã³ãã§è¡ã£ã¦ãã¾ãã
ããã¯å¤ãIEåãã§ããã°æå¹ã«æ©è½ãã¾ãããIE以å¤ã®ã¬ã¬ã·ã¼ãªç°å¢ã«å¯¾ãã¦ã¯æå³ãããã¾ãããå
·ä½çã«è¨ãã°ãAndroid3æªæºã®ç°å¢ã3DSãªã©ã§ã¢ã¯ã»ã¹ããã¨ä»£æ¿ã§ããã¯ãã®PNGç»åã表示ããã¾ããã
試ãã«3DSã§ã¢ã¯ã»ã¹ããå ´å
ãã®ããã«ãã´ãå
¨ãã®ç©ºæ¬ã«ãªã£ã¦ãã¾ãã¾ã*1ãå¤ãIEã®ã¿ã対象ã¨ãããããããã©ã¼ã«ããã¯ã¯é¿ããã¹ãã§ãã
ä¸æ¹ãニューヨークタイムズã§è¡ããã¦ãããã©ã¼ã«ããã¯ã¯ãã®ããã«ãªã£ã¦ãã¾ãã
ã¤ã³ã©ã¤ã³SVGã®imageè¦ç´ ã使ã£ããã©ã¼ã«ããã¯
ニューヨークタイムズããã´ã«SVGã使ã£ã¦ãã¾ãããã ããã¡ãã§å©ç¨ãã¦ããã®ã¯ããããææ³ã§ãã
SVGã®ä»æ§ã«ç¡ãã¯ãã®srcå±æ§ãimageè¦ç´ ã«è¨è¿°ãã¦ããã®ã注ç®ãã¤ã³ãã§ãã
<h2 class="branding"> <a href="http://www.nytimes.com/"> <svg class="nyt-logo" width="379" height="64" role="img" aria-label="The New York Times"> <image width="379" height="64" xlink:href="http://a1.nyt.com/assets/homepage/20151012-175041/images/foundation/logos/nyt-logo-379x64.svg" src="http://a1.nyt.com/assets/homepage/20151012-175041/images/foundation/logos/nyt-logo-379x64.png" alt="The New York Times" border="0"> </image> </svg> </a> </h2>
ããã¯ã¤ã³ã©ã¤ã³SVGã«å¯¾å¿ãããã©ã¦ã¶ã¯imageè¦ç´ ã¨ãã¦è¡¨ç¤ºããã®å¯¾ããSVGæªå¯¾å¿ã®ç°å¢ã®å ´åã§ã¯imageè¦ç´ ãHTMLã®imgè¦ç´ ã¨ãã¦æ±ãsrcå±æ§ã®PNGç»åã表示ããä»çµã¿ãå©ç¨ãããã©ã¼ã«ããã¯ã§ãã
ãã®ææ³ã¯2013年8月に公開ããã¦ä»¥éããã®æ¬æ°ãã¨é©ç¨ç¯å²ã®åºãã§SVGçéã§ã¯è©±é¡ã«ãªãã¾ããããã©ã¦ã¶ç°å¢ãé¸ã°ãå¹
åºã使ããã®ã大ããªç¹å¾´ã§ãæ¡ä»¶ä»ãã³ã¡ã³ãã¨ã¯ç°ãªãSVG/PNGç»åã©ã¡ãã表示ãããªãã¨ããææªã®äºæ
ãèµ·ãããã©ã¦ã¶ã¯ç§ã®ç¥ãéãããã¾ããã
ãã ããã¯ãªã®ããIE9ãIE11ã§ã¯SVG/PNGç»åã©ã¡ãã«å¯¾ãã¦ããªã¯ã¨ã¹ããè¡ãããç¹ã§ããï¼参考記事ï¼
デモページ
ï¼ã¯ãªãã¯ã§æ¡å¤§ï¼
ã¤ã¾ãSVGã«å¯¾å¿ããIE9ãIE11ã§ã¯å¿
è¦ããªãPNGç»åãç¡é§ã«ãªã¯ã¨ã¹ããããããã§ããããããªããã°ãã¹ããªæ¹æ³ãªã®ã§ããâ¦â¦ã*2
ããã¨ã¯éã«ã¬ã¬ã·ã¼ãªç°å¢ã§ç¡é§ãªãªã¯ã¨ã¹ããçãããã©ã¼ã«ããã¯ãããã¾ãã
SVGæªå¯¾å¿ã®ç°å¢ã§ä½è¨ãªãªã¯ã¨ã¹ãããããã©ã¼ã«ããã¯
ã¡ã¸ã£ã¼ãªã¼ã°ã®Webãµã¤ãã§ã¯åçå£ã®ãã´ãSVGã§ä½ããã¦ãã¾ãã
ï¼The Boston Red Soxã®å
¬å¼ãµã¤ãããï¼
ããã¦ãã©ã¼ã«ããã¯ã¯ãã®ããã«è¡ããã¦ãã¾ãã
<a class="logobar__logo" href="http://boston.redsox.mlb.com/index.jsp?c_id=bos" data-phone-href="http://m.redsox.mlb.com/"> <img src="/documents/9/6/2/111260962/BOS_header_logo_htojzayw.svg" alt="BOS Wired Logo" onerror="this.onerror=null;this.src='/assets/images/8/1/0/111260810/cuts/BOS_1x_omwx1j3o_7o1v91an.png';"> </a>
SVGã«å¯¾å¿ãã¦ããã°ãã®ã¾ã¾è¡¨ç¤ºããã¾ãããSVGæªå¯¾å¿ã®ãã©ã¦ã¶ã ã¨SVGã表示ã§ãã¾ãããããã¨ã©ã¼ãã§ã¾ãã
ãããerror
ã¤ãã³ãã§çºç«ããã¦PNGç»åã«æ¸ãæãããã¨ããææ³ã§ããã·ã³ãã«ãªæ§æã§è¨è¿°ã§ããããã¡ã¸ã£ã¼ãªã¼ã°ã®å
¨çå£ã®ä»ãジャクソンビル市観光局ãã¢ã¡ã³ãåºç社ã®Dark Horse Comicsãªã©æ¡ç¨ä¾ã¯å¤ãã§ãã
ãã ãã®ææ³ã®æ¬ ç¹ã¯JavaScriptç¡å¹ã§ã¯ä½¿ããªããã¨ããªã«ããSVGæªå¯¾å¿ã®ç°å¢ã§ã¯
SVGãã¡ã¤ã« â ã¨ã©ã¼ â PNGç»åãã¡ã¤ã«
ã¨å¿
ãä¸è¦ãªãªã¯ã¨ã¹ããçºçããç¹ãããã¯ã§ãã
ããããã´ã«ä¸ã¤ã ã使ãã®ã§ããã°è¨è¿°ãç°¡æ½ã§æ¸ãç¹ã¯é
åçãªææ³ã§ã¯ããã¾ãã
ãã è¤æ°ã®SVGç»åãé
ç½®ããã±ã¼ã¹ã«ã¯ããã©ã¼ãã³ã¹ãä½ä¸ãã¾ããããJavaScriptã©ã¤ãã©ãªãå©ç¨ããæ¹ãè¯ãã§ãããã
JavaScriptã使ã£ããã©ã¼ã«ããã¯
JavaScriptã使ã£ããã©ã¼ã«ããã¯ã¯SVGeezyã¨ãã£ãSVGã«ç¹åããã©ã¤ãã©ãªãããã¾ãããModernizrã使ãã±ã¼ã¹ãå¤ãã§ããã
以åã«ãã®è¨äºãæ¸ããéã«èª¿æ»ããã¨ãã
SVGを使用してる企業・団体のサイトを22ヶ国、160件以上調べてみた
57件ã§Modernizrãå©ç¨ãã¦ãã¾ããã
Modernizrã®ä½¿ãæ¹ã¯ãã¡ãã®è¨äºãåèã«ãªãã¾ãã
SVG のフォールバックは結局 Modernizr に落ち着いた件 | WWW WATCH
ããã§ã¯Modernizrã§SVG対å¿ç¶æ³ãå¤å¥ããjQueryã§imgè¦ç´ ãæ¸ãæãã¦PNGç»åã表示ããããµã³ãã«ãæ²è¼ããã¦ãã¾ãã
ã¾ãModernizr㯠background-imageã§å©ç¨ããæãããã¾ãã
å
·ä½çãªå©ç¨ä¾ã¨ãã¦ã¯ãå
å½åé·å®ã®ヒラリー・クリントンæ°ã®å
¬å¼ãµã¤ããåããããã使ãæ¹ã§åèã«ãªãã§ãããã
ãã©ãªã¼æ°ã®å
¬å¼ãµã¤ãã§ã¯ãã´ã«SVGã使ã£ã¦ãã¾ããã
Modernizrã使ã£ã¦ããªããããJavaScriptç¡å¹ã®ç°å¢ãªãã°PNGç»åã表示ãããããã«æ§æããã¦ãã¾ãã
ãã®ããã«JavaScriptç¡å¹ã®ç°å¢ã§ãã£ã¦ã工夫次第ã§é©åãªãã©ã¼ã«ããã¯ã¯æ§ç¯ã§ãã¾ãããå¯è½ãªãJavaScriptã«ã¯ä¾åããã«ããããªã¼ãã¨å人çã«æãããã§ãã
ã¾ãbackground-imageã§ãè¯ãã®ã§ãããimgè¦ç´ ã§ã使ãããã§ããã
srcsetå±æ§ã使ã£ãSVGãã©ã¼ã«ããã¯ã»ããã¯
ãããªãã¨ãèãã¦ããããå
æ¥æ稿ããããHail2u.netããã®ãã®è¨äºãèå³æ·±ãå
容ã§ãã
srcset属性を使ったSVGフォールバック・ハック - Weblog - Hail2u.net
srcsetå±æ§ã使ã£ãSVGã®ãã©ã¼ã«ããã¯ï¼ããã¯ï¼ã§ã·ã³ãã«ãªæ§æãªããå©ç¹ã®å¤§ããææ³ã§ãã
<img src="foo.png" srcset="foo.svg">
ãã®æ¹æ³ã®å©ç¹ã¯3ç¹
- imgè¦ç´ ã§ä½¿ãã
- JavaScriptã使ããªã
- ç»åã®ãªã¯ã¨ã¹ãã1åã§æ¸ã
ã¬ã¬ã·ã¼ãªç°å¢ã«ã¯srcå±æ§ã§ç¤ºãã代æ¿ç»åã表示ãããã¢ãã³ãã©ã¦ã¶ã§ã¯srcsetå±æ§ã®SVGã表示ãããä»çµã¿ã§ãã
ç¹ã«ä»ã®ææ³ã§ã¯ãããªããã¡ã ã£ããä¸è¦ãªãªã¯ã¨ã¹ãã®åé¡ã解決ãããã®ãç´ æ´ãããã§ããã
ãã æ¬ ç¹ã¯ãSVGã表示ããã対象ãçããã¨ã
Srcset attribute - Can I use
主ã ã£ãã¨ããã§ã¯ãSVGã«å¯¾å¿ãã¦ããã«ãããããã
ãããã®ç°å¢ã§ä»£æ¿ã®PNGç»åã表示ããã¦ãã¾ãã¾ãã
å
¨ãä½ã表示ãããªãããã¯è¯ããã®ã®ããã£ããSVGã表示ã§ãããã©ã¦ã¶ãªã®ã«ãPNGç»åã«ãªã£ã¦ãã¾ãã®ã¯æ®å¿µã§ãããç¹ã«IE9ã11ãAndroid4ã¯ã¾ã ã¾ã å©ç¨è
ãå¤ãã§ããã
ããã§ããããä»åã®è¡¨é¡ã§ãããAcceptãããã§å¤å¥ãããµã¼ãã¼ãµã¤ãã®SVGãã©ã¼ã«ããã¯ãã®è©±ã«ãªãã¾ããsrcsetå±æ§ã使ã£ããã©ã¼ã«ããã¯ï¼ããã¯ï¼ã®å©ç¹ãæ´»ããã¤ã¤ããããè£ãå½¢ã§ããã«ããä¸ã¤å¥ã®ãã©ã¼ã«ããã¯ãçµã¿åãããã¨é©ç¨ç¯å²ãåºãããã®ã§ã¯ãªããï¼ã¨ããå®é¨çãªå
容ã§ãã
ããã¼é·ããªãã¾ããããããã¾ã§ãåç½®ãã§ä»ãããã£ã¨æ¬é¡ã§ãã
Acceptãããã¨ã¯ãªã«ãï¼
ããã«ã¯HTTPã¨ã¯ãªã«ãï¼ã¨ãã£ã説æãå¿
è¦ã«ãªã£ã¦ããã®ã§ãããããã¾ã§ããã¨ä½è¨ã«é·ããªã£ã¦ãã¾ãã®ã§ãããããã£ããã¨å³ã§èª¬æããã¨ãããªæãã§ãã
Webãµã¤ããé²è¦§ããéã«ã¯ãã©ã¦ã¶ãå©ç¨ãã¦ãµã¼ãã¼å´ã«ãè²´æ¹ã®ãµã¤ããè¦ããã§ããã¨è¦æ±ï¼ãªã¯ã¨ã¹ãï¼ããã¾ããããã«å¯¾ãã¦ãµã¼ãã¼å´ãè¿çï¼ã¬ã¹ãã³ã¹ï¼ãè¿ããã¨ã§å®éã«æ
å ±â¦â¦HTMLãç»åãè¦ããããã§ãã
ããå°ãå
·ä½çã«è¨ãã°ä¾ãã°ãimgè¦ç´ ã®ç»åã«å¯¾ãã¦
<img src="http://f.st-hatena.com/images/fotolife/r/rikuo/20151014/20151014230634.png" width="590" height="374" alt="">
Firefoxã§ããã°ãããããªã¯ã¨ã¹ããéä¿¡ããã¾ãã
Host: f.st-hatena.com User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0 Accept: image/png,image/*;q=0.8,*/*;q=0.5 Accept-Language: ja,en-US;q=0.7,en;q=0.3 Accept-Encoding: gzip, deflate Referer: http://d.hatena.ne.jp/rikuo/20151014 Connection: keep-alive Pragma: no-cache Cache-Control: no-cache
ããã«å¯¾ãã¦ã¬ã¹ãã³ã¹ã¯ãã®ããã«ãªãã¾ãã
Cache-Control:public, max-age=86400, s-maxage=1292 Connection:Keep-Alive Content-Length:32502 Content-Type:image/png Date:Fri, 16 Oct 2015 01:59:46 GMT ETag:"1103437556" Keep-Alive:timeout=7, max=5 Last-Modified:Wed, 14 Oct 2015 14:07:25 GMT Server:nginx/1.2.2 Via:1.0 squid.hatena.ne.jp:8080 (squid/2.7.STABLE6) X-Cache:MISS from squid.hatena.ne.jp X-Cache-Lookup:HIT from squid.hatena.ne.jp:8080
ããããæ
å ±ã¯Firefoxãªã
ãéçºãã¼ã«ããã
ããããã¯ã¼ã¯ããé¸æãã¦
åé
ç®ãé¸ã¶ã¨ç¢ºèªã§ãã¾ããä»ã®ãã©ã¦ã¶ã§ãéçºãã¼ã«ã§ç¢ºèªã§ãã¾ãã
ããã¦ãªã¯ã¨ã¹ãã«Acceptã¨ããé
ç®ãããã¾ããã
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Acceptãããã¯ã³ã³ãã³ããã´ã·ã¨ã¼ã·ã§ã³ã¨ããæ©è½ã®ä¸ã¤ã§ãå©ç¨å¯è½ãªãã¡ã¤ã«ã®ç¨®é¡ã示ãããããã£ã¼ã«ãã§ãã
ããã«è¨è¼ããã¦ããimage/png
ã¯PNGç»åã示ãContent-Typeã§ããã¤ã¦å¤ããã©ã¦ã¶ã§ã¯PNGç»åã«å¯¾å¿ãã¦ããªããã¨ãããã¾ããããã®ããAcceptãããã«æè¨ãããã¨ã§ããã®ãã©ã¦ã¶ã¯PNGã«å¯¾å¿ãã¦ãã¾ãããã¨ãµã¼ãã¼å´ã«ä¼ãããã¾ãã
ã¡ãªã¿ã«Chromeã®å ´åãimgè¦ç´ ã§éä¿¡ãããAcceptãããã¯ãããªãã¾ãã
Accept:image/webp,image/*,*/*;q=0.8
PNGç»åã«æªå¯¾å¿ãªç°å¢ã¯ç¾å¨ã¯ã¾ãããã¾ãããããçç¥ããã®ã¯è¯ãã¨ãã¦ãä»åº¦ã¯image/webp
ã¨WebPç»åã示ãContent-Typeãå«ã¾ãã¦ãã¾ããã
WebPã¯Googleãä¸å¿ã¨ãªã£ã¦æ®åãé²ãã¦ããç»åå½¢å¼ã§ãChromeãOperaã§å©ç¨ã§ãã¾ãã
WebP image format - Can I use
åèãªã³ã¯
ç¾ç¶ã¯IEãFirefoxã§è¡¨ç¤ºã§ããªããããã¾ã使ããã¦ãã¾ããããæè¡çã«ã¯ãããå©ç¨ãã¦ãªã¯ã¨ã¹ãã§éä¿¡ãããAcceptãããã§å¤å¥ãã¦ãWebPã«å¯¾å¿ãã¦ãããã©ã¦ã¶ã«ã¯WebPç»åããããã§ãªããã°PNGç»åãè¿ããã¨ãã§ãã¾ãã
åèï¼WebP - Webを速くするためにGoogleがやっていること Make the Web Faster 01 | HTML5Experts.jp
WebPã®è©±ã¯ãã¦ããSVGã«è©±ãæ»ãã¨ãå®ã¯SVGã§ãåãããã«Acceptãããã«è¨è¿°ãããã©ã¦ã¶ãããã¾ããæå¤ã«æãããããã¾ãããããã¯Internet Explorerã§ãã
Fiddler and the IE9 Release Candidate - Fiddler Web Debugger - MSDN Blogs
主è¦ãªã¢ãã³ãã©ã¦ã¶ã§å¯ä¸ Acceptãããã«image/svg+xml
ã¨è¨è¿°ãã¦ãããã§ãããããããIE9ãIE11, Microsoft Edgeã§ã
IE9ãIE11㧠imgè¦ç´ ã®å ´åã«éä¿¡ãããAcceptãããã¯ããã§ããã
Accept: image/png, image/svg+xml, image/*;q=0.8, */*;q=0.5
ã¾ãMicrosoft Edgeã§ã¯JPEG XRã追å ããã¦ãã¾ãã
Accept: image/png, image/svg+xml, image/jxr, image/*; q=0.8, */*; q=0.5
ãã®ãã¨ãå©ç¨ãããã¨ã§ãã¤ã¾ããããªãã¨ãã§ãã¾ãã
- Acceptãããã«
image/svg+xml
ãããã°SVGãã¡ã¤ã«ãè¿ã - ãã以å¤ã¯PNGç»åãã¡ã¤ã«ãè¿ã
ã¨ããããã§ãå
·ä½çã«ãã£ã¦ã¿ã¾ãããã
ããã§ã¯Apacheã®mod_rewriteã§è¨å®ãã¾ãã.htaccess
ã«ã¯ãã®ããã«æå®ãã¾ããã
#Options MultiViewsãç¡å¹ã« Options -MultiViews # mod_rewriteãæå¹ã« RewriteEngine on # ãã£ã¬ã¯ããªãåå¨ãã RewriteCond %{REQUEST_FILENAME} !-d # svgãã¡ã¤ã«ã¯åå¨ããå ´åã« RewriteCond %{REQUEST_FILENAME}\.svg -f # Acceptãããã«SVGãå«ã¾ãããªã RewriteCond %{HTTP_ACCEPT} "image/svg\+xml" [NC] # æ¡ä»¶ã«åè´ãããªããsvgã« RewriteRule ^(.*)$ $1.svg [L] # ä¸è¨æ¡ä»¶ä»¥å¤ãªãã°pngã« RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.png -f RewriteRule ^(.*)$ $1.png [L] # Vary HTTPããã追å <FilesMatch "\.(svgz?|png)$"> Header append Vary "Accept" </FilesMatch>
ãã®ä¾ã§ã¯åããã£ã¬ã¯ããªã«ååã®SVG/PNGãé
ç½®ãã¦ãã¾ãã
è¨å®ã®æå³ã説æãããã¨ãæ®æ®µã®ä½¿ãåæãèãã¦
<img src="paint.svg"> <!-- SVGãå¿ ãè¿ã --> <img src="paint.png"> <!-- PNGãå¿ ãè¿ã --> <img src="paint"> <!-- Acceptãããã«å¿ãã¦SVG/PNGãè¿ã -->
ã¨ãæ¡å¼µåã¾ã§è¨è¿°ãã¦ããã°ããã«å¿ãããã¡ã¤ã«ãï¼Acceptãããã«é¢ä¿ãªãï¼è¿ãããã«è¨å®ãã¦ãã¾ãã
ãã®ä¸ã§ãæ¡å¼µåãçç¥ããå ´åã«ã¯Acceptãããã«image/svg+xml
ã®è¨è¿°ãããã°ãSVGãã¡ã¤ã«ãããã§ãªããã°PNGãã¡ã¤ã«ãè¿ãããã«æå®ã
ããã¦ããã¯åãURIã§ç°ãªãã³ã³ãã³ããè¿ãè¨å®ã§ããããããããäºä¾ã§ã¯æ¤ç´¢ã¨ã³ã¸ã³åãã«Vary HTTPãããã«Accept
ã追å ãã¦ããã¾ãããã
ãããªããã§ãã¡ããデモページã
AcceptヘッダでSVG画像を振り分け
ï¼IE11ã§ã®è¡¨ç¤ºï¼
Acceptãããã«å¿ãã¦SVGã¨PNGãæ¯ãåãã¾ãã
ç¾ç¶IE9ãIE11, Microsoft Edgeãã対象ã¨ãªãã¾ããããå°æ¥çã«ä»ã®ãã©ã¦ã¶ã対å¿ããã°å½ç¶SVGã表示ããã¾ããã¡ãªã¿ã«Microsoft Edgeã®å ´åã¯ãã®ããã«ãªãã¾ãã
ï¼ã¯ãªãã¯ã§æ¡å¤§ï¼
Vary HTTPããããè¨è¼ããã¦ãã¾ãã
Chromeã¯Acceptãããã«image/svg+xml
ãå«ã¾ããªãããPNGç»åã表示ããã¾ãã
ãã¨ãFirefoxã«ã¯å
ã»ã©ãç´¹ä»ããããéçºãã¼ã«ãããããããã¯ã¼ã¯ãã§
ãããããã®ãç·¨éãã¦åéä¿¡ãã§
è¦æ±ï¼ãªã¯ã¨ã¹ãï¼ããããæ¸ãæãã¦åéä¿¡ã§ããæ©è½ãããã¾ãã
ããã使ãã°æ軽ã«Acceptããããå¤ããããã®ã§ã試ãããããã¨ã
ã¨ããããã§ãã®æ¹æ³ã¨å ã®srcsetå±æ§ã®ææ³ã¨çµã¿åãããã®ããã¡ãã
<img src="paint" srcset="paint.svg">
デモページ
ããã¯
- srcsetå±æ§ã«å¯¾å¿ããææ°ãã©ã¦ã¶ã¯SVGã表示
- srcsetå±æ§ã«æªå¯¾å¿ã®ãã©ã¦ã¶ã®å ´åã¯srcå±æ§ã®æå®ãé©ç¨ããã
ã¨ããåä½ã«ãªãã¾ãã
ããã«ãããsrcsetå±æ§ã«æªå¯¾å¿ãªIE9ã11ã§ãSVGã表示ãããããã«ãªãã¾ããã
Srcset attribute - Can I use
ãã ã¾ã ãSVGã«å¯¾å¿ãã¦ããã«ãããããã代æ¿ç»åã表示ããããããã®ç°å¢
ã«ã¤ãã¦ã¯ä¾ç¶ã¨ãã¦è§£æ±ºãã¦ãã¾ããã
ããã§ããã«ããä¸ã¤çµã¿åããã¦ã¿ã¾ããã
WebPç»åã«å¯¾å¿ãã¦ãããªããSVGã«ã対å¿ãã¦ããâ¦â¦ã¯ã
ä¸è¨ã§ç´¹ä»ãããWebPç»åã«å¯¾å¿ããç°å¢ã®è¡¨ãããã¾ããã
WebP image format - Can I use
WebPç»åã¯
ã§å¯¾å¿ãã¦ãã¾ãï¼参考ï¼ã
å²ã¨æ°ãããã¼ã¸ã§ã³ãã対å¿ãå§ã¾ã£ã¦ããããã§ããããã®ãããã®ç°å¢ã§ãWebPç»åã ãã§ãªãSVGã«ã対å¿ãã¦ãããã§ãããã
ãªãã°
Acceptãããã«
image/webp
ãå«ã¾ãã¦ããã°ãSVGã対å¿ãã¦ããã¯ã
ã¨è¨ããããã§ãã
ããã§å
ã»ã©ã®.htaccess
ã®è¨è¿°ããã®ããã«å¤ãã¦ã¿ã¾ãã
#Options MultiViewsãç¡å¹ã« Options -MultiViews # mod_rewriteãæå¹ã« RewriteEngine on # ãã£ã¬ã¯ããªãåå¨ãã RewriteCond %{REQUEST_FILENAME} !-d # svgãã¡ã¤ã«ã¯åå¨ããå ´åã« RewriteCond %{REQUEST_FILENAME}\.svg -f # Acceptãããã«SVGãã¾ãã¯WebPãå«ã¾ãã¦ããã° RewriteCond %{HTTP_ACCEPT} "image/(svg\+xml|webp)" [NC] # æ¡ä»¶ã«åè´ãããªããsvgã« RewriteRule ^(.*)$ $1.svg [L] # ä¸è¨æ¡ä»¶ä»¥å¤ãªãã°pngã« RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.png -f RewriteRule ^(.*)$ $1.png [L] # Vary HTTPããã追å <FilesMatch "\.(svgz?|png)$"> Header append Vary "Accept" </FilesMatch>
デモページ
ããã§
- srcsetå±æ§ã«å¯¾å¿ããææ°ãã©ã¦ã¶ã¯SVGã表示
- srcsetå±æ§ã«æªå¯¾å¿ã®ãã©ã¦ã¶ã®å ´åã¯srcå±æ§ã®æå®ãé©ç¨ããã
ã¨ããåä½ã
- imgè¦ç´ ã§
- JavaScriptã使ãã
- ç»åã®ãªã¯ã¨ã¹ãã1åã§å®äºããã
ãã®æ¡ä»¶ã§è¨å®ã§ãã¾ããã
ããããªãããããã§ã
Android3ã4.1 | ã²ã¼ã æ© |
---|---|
![]() |
![]() |
ãããã®SVGã«å¯¾å¿ãã¦ããç°å¢ã«PNGç»åã表示ããã¦ãã¾ãåé¡ã¯æ®ã£ã¦ãããä¸å
¨ã¨ã¯è¨ãã¾ããã
ã§ããã
<img src="paint" srcset="paint.svg">
ãµã¼ãã¼ã®è¨å®ã¯å¤å°ãããããã§ãããããããè¨è¿°ã§ã·ã³ãã«ã«æ¸ããããã«ãªãã®ã¯ä¾¿å©ãããªãããªã¼ãã¨æããã§ãããã
ã¨ããããã§ã以ä¸ãä»åã®Acceptãããã§å¤å¥ãããµã¼ãã¼ãµã¤ãã®SVGãã©ã¼ã«ããã¯ã§ããã
ã¾ã¨ãã¨ãè¯ãSVGãã©ã¼ã«ããã¯ã«ã¤ãã¦
æ§ã
ãªãã©ã¼ã«ããã¯ã®ææ³ã®å©ç¹ã¨é£ç¹ã説æã»æ¯è¼ãã¤ã¤ãä»åã®ä»çµã¿ã®è§£èª¬ãåãããããæ¸ããã¨ãããéåã¨é·ãè¨äºã«ãªã£ã¦ãã¾ãã¾ãããããã§ãããã¾ã§èªãã§ãã ãã£ã¦ãããã¨ããããã¾ãã
æå¾ã«è¯ãSVGãã©ã¼ã«ããã¯ã«ã¤ãã¦èãã¦ã¿ã¾ãã
â¦â¦ã¨è¨ã£ã¦ããä¸æ¦ã«å¤æããã®ã¯é£ããã®ã§éã«è¯ããªããã©ã¼ã«ããã¯ãæãã¦ããã¨ç解ããããã§ããããä»åç´¹ä»ããæ¥æ¬çµæ¸æ°èã®ããã«ä»£æ¿ç»åãé©åã«è¡¨ç¤ºãããªãã®ã¯è«å¤ã¨ãã¦ãè¯ããªããã©ã¼ã«ããã¯ã¯é²è¦§è
ã«ä¸è¦ãªè² æ
ã®ãããææ³â¦â¦ä½è¨ãªãªã¯ã¨ã¹ããå¤ç¨ããããã®ãJavaScriptãªã©ã®å¦çæéãããããã®ããããã ã¨è¨ãã¾ãã
ã¾ãå¶ä½è
å´ã®æéãããããã®ããè¯ããªããã©ã¼ã«ããã¯ã§ãã
æ¢åã®ã³ã³ãã³ããæ¸ãæããæé ãè¤éãªãã®ã ã£ãããã¾ãPNGæªå¯¾å¿ã®ç°å¢ãããã§ãã£ãããã«ãSVGã表示ã§ããªãã¬ã¬ã·ã¼ãªç°å¢ã¯ãããä½å¹´ããããç¡ããªãã§ããããããããããå°æ¥çã«Webãµã¤ããåã³æ¸ãæããæéãããã£ã¦ãã¾ãææ³ã¨ããã®ãè¯ãã¨ã¯è¨ãã¾ããã
ãã®ç¹ã§Modernizrã使ã£ãææ³ã¯imgè¦ç´ ã«æ°ãã«æ¸ãå ãããã®ãå°ãªãã¦æ¸ã¿ã¾ãããå°æ¥çã«ã¯ã¹ã¯ãªãããé©ç¨ããªããã°è¯ãã ããªã®ã§åªãããã©ã¼ã«ããã¯ã¨è¨ãã¾ããJavaScriptç¡å¹ã®ç°å¢ã¸ã®å¯¾å¿ã®æ¸å¿µã¯ããã¾ããã
ããã¨æ¯è¼ãã¦ä»åææ¡ãããsrcsetå±æ§ï¼Acceptãããã§ã®ãã©ã¼ã«ããã¯ã¯ãé²è¦§è
å´ã»å¶ä½è
å´ã®ä¸¡é¢ããè¦ã¦è² æ
ã®å°ãªãææ³ãããªãããªãã¨èãã¦ãã¾ãããµã¼ãã¼ã®è¨å®ã¯å°ãé¢åã§ãããJavaScriptã©ã¤ãã©ãªãå°å
¥ãããã大å¤ããããã¾ãããããã¹ãã§ã¯æ±ºãã¦ç¡ãããããã¾ãããããããããã¿ã¼ãªæ段ããªã¨ã
ã¾ããã®ææ³ãçæ³ããã«ããã£ã¦ããããã®è¨äºãåèã«è´ãã¾ããã
å¾è
ã¯2012å¹´ã®è¨äºã§ããããµã¼ãã¼ãµã¤ãã§ã®SVGãã©ã¼ã«ããã¯ã®ææ³ã¯æµ·å¤ã®ããã°ã§ããªããªãè¦ãããªãã®ã§é常ã«åèã«ãªãã¾ãããåè
ã¯ã¾ãã«Acceptããããç¨ããææ³ã§ããã®ãã¯ããã¯ãä»ã«åä¾ãè¦å½ãããªãæ¬æ°ãªã¢ã¤ãã¢ã§ä»åã®è¨äºãæ¸ãã«å½ãã大ããå½±é¿ãåãã¾ããã
ä»åç´¹ä»ãã以å¤ã®SVGã®ãã©ã¼ã«ããã¯ã®ææ³ã«ã¤ãã¦ã¯ãããã®è¨äºãã¾ã¨ã¾ã£ã¦ãã¾ã
è£è¶³ãªã©ãããã
è£è¶³1ï¼Acceptãããã§å¤å¥ã¯imgè¦ç´ 以å¤ã«ã使ãããï¼
SVGã¯PNGç»åãªã©ã¨åæ§ã«ãimgè¦ç´ ã ãã§ãªãæ§ã
ãªè¦ç´ ã§ä½¿ãã¾ãããã®ãããã§ãåãææ³ãé©ç¨ã§ãããï¼ã¨ããã¨ãä¸æ¦ã«ããã¨ã¯è¨ããªããã§ãããã
Acceptãããã¯è¦ç´ ãã¨ã«ç°ãªãã¾ããä¾ãã°IE11ã®å ´åã¯ãã®ããã«ãªãã¾ãã
imgè¦ç´ | image/png, image/svg+xml, image/*;q=0.8, */*;q=0.5 |
---|---|
CSS | image/png, image/svg+xml, image/*;q=0.8, */*;q=0.5 |
inputè¦ç´ | image/png, image/svg+xml, image/*;q=0.8, */*;q=0.5 |
embedè¦ç´ | text/html, application/xhtml+xml, */* |
iframeè¦ç´ | text/html, application/xhtml+xml, */* |
objectè¦ç´ | */* |
ç´æ¥è¡¨ç¤º | text/html, application/xhtml+xml, */* |
æ¤è¨¼ãã¼ã¸
CSSã¯background-imageãborder-imageã§æå®ããå ´åãç´æ¥è¡¨ç¤ºã¯SVGãã¡ã¤ã«ããã®ã¾ã¾è¡¨ç¤ºãããå ´åã§ãã
Microsoft Edge 20
imgè¦ç´ | image/png, image/svg+xml, image/jxr, image/*; q=0.8, */*; q=0.5 |
---|---|
CSS | image/png, image/svg+xml, image/jxr, image/*; q=0.8, */*; q=0.5 |
inputè¦ç´ | image/png, image/svg+xml, image/jxr, image/*; q=0.8, */*; q=0.5 |
embedè¦ç´ | text/html, application/xhtml+xml, image/jxr, */* |
iframeè¦ç´ | text/html, application/xhtml+xml, image/jxr, */* |
objectè¦ç´ | */* |
ç´æ¥è¡¨ç¤º | text/html, application/xhtml+xml, image/jxr, */* |
Chrome 45
imgè¦ç´ | image/webp,image/*,*/*;q=0.8 |
---|---|
CSS | image/webp,image/*,*/*;q=0.8 |
inputè¦ç´ | image/webp,image/*,*/*;q=0.8 |
embedè¦ç´ | text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 |
iframeè¦ç´ | text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 |
objectè¦ç´ | text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 |
ç´æ¥è¡¨ç¤º | text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 |
Chromeã§ã¯ãobjectè¦ç´ ã®typeå±æ§ã«ãã£ã¦Acceptãããã¯å¤ããã¾ãããããã§ã¯image/svg+xml
ãæå®ããéã®å¤ãè¨è¼ã
Firefox 41
imgè¦ç´ | image/png,image/*;q=0.8,*/*;q=0.5 |
---|---|
CSS | image/png,image/*;q=0.8,*/*;q=0.5 |
inputè¦ç´ | image/png,image/*;q=0.8,*/*;q=0.5 |
embedè¦ç´ | text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 |
iframeè¦ç´ | text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 |
objectè¦ç´ | text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 |
ç´æ¥è¡¨ç¤º | text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 |
ãã®ããã«ãè¦ç´ ã«ãã£ã¦Acceptãããã¯å¤ãããããimgè¦ç´ 以å¤ã§å©ç¨ããã®ã¯ãã¾ããããªãã±ã¼ã¹ãããã¾ãã
è£è¶³2ï¼UserAgentæååã使ãã®ã¯ã©ãã
ãªã¯ã¨ã¹ãããããå©ç¨ããã«ãããUserAgentæååã¯è¯ã使ããã¦ãã¾ãã
JavaScriptã§ãåå¾ã§ãããã¨ããã£ã¦ãã¹ãã¼ããã©ã³ç¨ã«ãã¶ã¤ã³ãå¤æ´ããéãªã©ã«ãè¨å®ãã¦ããã±ã¼ã¹ã¯å¤ãã§ãã
ãã ãUserAgentæååãå½è£
ã§ããã¢ããªãå¤ããã§ãããã
å¤ãAndroidåãã®ãã©ã¦ã¶ã¢ããªããã£ã¼ãã£ã¼ãã©ã³åãã®jig browserãããã«ã¯New 3DSã«ãUserAgentæååãå¤æ´ã§ããæ©è½ãã¤ãã¦ãã¾ãã使ããããä¸æ¹ã§ãä¸ç¢ºããªæ
å ±ãå
ã«å¤å¥ããã®ã¯ãªãã¹ãé¿ããããªãã¨ç§ã¯èãã¦ãã¾ãã
è£è¶³3ï¼Acceptãããã®å½è£ ã«ã¤ãã¦
Acceptãããã¯UserAgetæååã®ããã«å½è£
ãã§ããªããã¨ããã¨ããã§ããªãä¸è¿°ã®éãFirefoxã®éçºãã¼ã«ãªã©ã§å¤æ´ãã¦ã¢ã¯ã»ã¹ãããã¨ã¯å¯è½ã§ãã
ãã å½è£
ããã±ã¼ã¹ã¯æ»
å¤ã«ãªãã§ãããã
è£è¶³4ï¼CSSã ãã§SVGãã©ã¼ã«ããã¯
ã¡ãªã¿ã«CSSã ãã§è¡ãSVGãã©ã¼ã«ããã¯ãªãCSS Gradientsãæ´»ç¨ããã¨è¯ãã§ãã
div{ background: url("fallback.png"); background: url("background.svg"), linear-gradient(transparent, transparent); }
デモページ
ãã®ææ³ã¯CSS Gradients対å¿ç°å¢ã¨SVG対å¿ç°å¢ãããªãä¼¼ã¦ãããã¨ãå©ç¨ãããã©ã¼ã«ããã¯ã§ããã¹ããããå°ãªãããªã使ããããã§ãã
SVG/PNGã©ã¡ãã表示ãããªãææªã®ç¶æ³ã¯ããã¾ããããSVG対å¿ç°å¢ã§ä»£æ¿ç»åã表示ããã¦ãã¾ãã±ã¼ã¹ã¯
- IE9
- Android3
- Opera mini
- WiiU, New 3DSï¼PS4, PS Vitaã¯æªæ¤è¨¼ï¼
åèï¼CSS Gradients - Can I use
ãããã«ãªãã¾ãããã¯ãããã ãã§å®ç§ã¨ããããã§ã¯ããã¾ããããã·ã³ãã«ã«æ¸ãã¾ãã使ç¨ããããã§ãããã
><