caniuse.html 85 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451
  1. <!DOCTYPE html>
  2. <!-- saved from url=(0025)http://tests.caniuse.com/ -->
  3. <html class=" no-js"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>WCIU test page</title>
  4. <meta charset="utf-8">
  5. <!-- pull in latest modernizr -->
  6. <script src="../modernizr.js"></script>
  7. <script src="./caniuse_files/jquery.min.js"></script>
  8. <link rel="stylesheet" type="text/css" href="./caniuse_files/style.css">
  9. <script>
  10. function setResult(id, result) {
  11. $('#' + id).addClass(result ? 'pass' : 'fail');
  12. }
  13. </script>
  14. </head><body><h2>The <a href="http://caniuse.com/">When can I use...</a> test suite... <small>(originally from <a href="http://tests.caniuse.com/">tests.caniuse.com</a>)</small></h2>
  15. <div id="intro">
  16. <p>This is a basic test suite of various web technologies for the <a href="./caniuse_files/caniuse.html">When Can I Use</a> website.</p>
  17. <p>It is used to quickly test basic support for features in upcoming browsers, rather than any full support of the feature's specification.</p>
  18. <p>Results on this page generally match the results as they appear on the When Can I Use site, but <strong>may not always</strong> due to a variety of circumstances (test may pass but support is actually buggy, not tested well enough, has alternative method, etc).</p>
  19. <p>Four different types of tests are used:</p>
  20. <dl>
  21. <dt>Auto</dt>
  22. <dd>Automated JS-based tests. (m) means <a href="http://modernizr.com/">Modernizr</a> is used.</dd>
  23. <dt>Visual</dt>
  24. <dd>Requires visual confirmation/comparison to confirm</dd>
  25. <dt>Visual-square</dt>
  26. <dd>Test must create a 30x30px green (lime) square</dd>
  27. <dt>Interactive</dt>
  28. <dd>Requires interaction to confirm support</dd>
  29. </dl>
  30. <p>If you are interested in contributing tests you can contact me at: when (at) caniuse (dotcom).</p>
  31. </div>
  32. <div id="options">
  33. <form action="http://tests.caniuse.com/?" method="get"><label for="browser_list">Select browser to compare results with: </label><select id="ua" name="ua" autocomplete="false"><option value="">(none)</option><option value="and2.1">Android Browser 2.1</option><option value="and2.2">Android Browser 2.2</option><option value="and2.3">Android Browser 2.3</option><option value="and3">Android Browser 3</option><option value="chr10">Chrome 10</option><option value="chr11">Chrome 11</option><option value="chr12">Chrome 12</option><option value="chr13" selected="">Chrome 13</option><option value="chr4">Chrome 4</option><option value="chr5">Chrome 5</option><option value="chr6">Chrome 6</option><option value="chr7">Chrome 7</option><option value="chr8">Chrome 8</option><option value="chr9">Chrome 9</option><option value="ff2">Firefox 2</option><option value="ff3">Firefox 3</option><option value="ff3.5">Firefox 3.5</option><option value="ff3.6">Firefox 3.6</option><option value="ff4">Firefox 4</option><option value="ff5">Firefox 5</option><option value="ff6">Firefox 6</option><option value="ie10">IE 10</option><option value="ie5.5">IE 5.5</option><option value="ie6">IE 6</option><option value="ie7">IE 7</option><option value="ie8">IE 8</option><option value="ie9">IE 9</option><option value="ios3.2">iOS Safari 3.2</option><option value="ios4.1">iOS Safari 4.0-4.1</option><option value="ios4.2">iOS Safari 4.2-4.3</option><option value="op10.1">Opera 10.0-10.1</option><option value="op10.5">Opera 10.5</option><option value="op10.6">Opera 10.6</option><option value="op11">Opera 11</option><option value="op11.1">Opera 11.1</option><option value="op11.5">Opera 11.5</option><option value="op12">Opera 12</option><option value="op9">Opera 9</option><option value="op9.6">Opera 9.5-9.6</option><option value="omini5">Opera Mini 5.0-6.0</option><option value="omob10">Opera Mobile 10</option><option value="omob11">Opera Mobile 11</option><option value="saf3.1">Safari 3.1</option><option value="saf3.2">Safari 3.2</option><option value="saf4">Safari 4</option><option value="saf5">Safari 5</option><option value="saf6">Safari 6</option></select><div><label for="prefix">Select CSS prefix to use (does not affect modernizr or non-CSS tests): </label><select id="prefix" name="prefix" autocomplete="false"><option value="all" selected="">All combinations</option><option value="-webkit-">-webkit-</option><option value="-moz-">-moz-</option><option value="-ms-">-ms-</option><option value="-o-">-o-</option><option value="none">(no prefix)</option></select><input id="opt_submit" type="submit" value="Go"></div></form></div><table><caption>Tests</caption><thead><tr><th>Feature</th><th>chr13</th><th>Tests</th></tr></thead><tbody><tr><th><h3>Toolbar/context menu</h3><span class="links">[<a href="http://caniuse.com/menu">Table</a>] [<a href="http://tests.caniuse.com/?feat=menu&prefix=all">Single feat</a>]</span></th><td class="current unknown">&nbsp;</td><td>
  34. </td></tr>
  35. <tr><th><h3>Audio element</h3><span class="links">[<a href="http://caniuse.com/audio">Table</a>] [<a href="http://tests.caniuse.com/?feat=audio&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  36. <div class="test_wrap"><h3>Auto</h3><div id="audio0" class="auto pass"></div><script>
  37. setResult('audio0', !!document.createElement('audio').canPlayType);
  38. </script><div class="info">document.createElement('audio').canPlayType</div></div>
  39. <div class="test_wrap"><h3>Interact</h3><div id="audio1" class="interact"></div><audio controls="">
  40. <source src="mimeaud.php?type=.wav">
  41. <source src="mimeaud.php?type=.mp3">
  42. <source src="mimeaud.php?type=.ogg">
  43. <source src="mimeaud.php?type=.aac">
  44. <source src="mimeaud.php?type=.flac">
  45. <source src="mimeaud.php?type=.wma">
  46. Audio fail
  47. </audio>
  48. <div class="info">Audio element with 6 different sources (with MIME set)</div></div>
  49. <div class="test_wrap"><h3>Interact</h3><div id="audio2" class="interact"></div><audio controls="">
  50. <source src="mimeaud.php?nomime=1&amp;type=.wav">
  51. <source src="mimeaud.php?nomime=1&amp;type=.mp3">
  52. <source src="mimeaud.php?nomime=1&amp;type=.ogg">
  53. <source src="mimeaud.php?nomime=1&amp;type=.aac">
  54. <source src="mimeaud.php?nomime=1&amp;type=.flac">
  55. <source src="mimeaud.php?nomime=1&amp;type=.wma">
  56. --&gt;
  57. Audio fail
  58. </audio>
  59. <div class="info">Audio element with 6 different sources (no MIME set)</div></div>
  60. </td></tr>
  61. <tr><th><h3>CSS3 Background-image options</h3><span class="links">[<a href="http://caniuse.com/background-img-opts">Table</a>] [<a href="http://tests.caniuse.com/?feat=background-img-opts&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  62. <div class="test_wrap"><h3>Auto (m)</h3><div id="background-img-opts0" class="auto pass"></div><script>setResult('background-img-opts0', Modernizr.backgroundsize);</script><div class="info">Modernizr test for: "backgroundsize"</div></div>
  63. <div class="test_wrap"><h3>Visual-square</h3><div id="background-img-opts1" class="visual-square"></div><div class="square"><div style="width:30px;height:30px;background:lime">
  64. <div style="-webkit-background-clip:content-box;-moz-background-clip:content-box;-ms-background-clip:content-box;-o-background-clip:content-box;background-clip:content-box;padding:30px 30px 0 0;background-color:red"></div>
  65. </div>
  66. </div><div class="info">background-clip: content-box;</div></div>
  67. <div class="test_wrap"><h3>Visual-square</h3><div id="background-img-opts2" class="visual-square"></div><div class="square"><div style="width:30px;height:30px;background:lime">
  68. <div style="-webkit-background-origin:content-box;-moz-background-origin:content-box;-ms-background-origin:content-box;-o-background-origin:content-box;background-origin:content-box;padding:30px 30px 0 0;background-image:url(caniuse_files/red30x30.png);background-repeat: no-repeat;"></div>
  69. </div>
  70. </div><div class="info">background-origin: content-box;</div></div>
  71. <div class="test_wrap"><h3>Visual-square</h3><div id="background-img-opts2" class="visual-square"></div><div class="square"><div style="-webkit-background-size:30px 30px;-moz-background-size:30px 30px;-ms-background-size:30px 30px;-o-background-size:30px 30px;background-size:30px 30px;background-image:url(caniuse_files/green5x5.png);background-repeat: no-repeat;width:30px;height:30px;"></div>
  72. </div><div class="info">background-size: 30px 30px;</div></div>
  73. </td></tr>
  74. <tr><th><h3>CSS3 Border images</h3><span class="links">[<a href="http://caniuse.com/border-image">Table</a>] [<a href="http://tests.caniuse.com/?feat=border-image&prefix=all">Single feat</a>]</span></th><td class="current partial">&nbsp;<span>-pre-</span></td><td>
  75. <div class="test_wrap"><h3>Auto (m)</h3><div id="border-image0" class="auto pass"></div><script>setResult('border-image0', Modernizr.borderimage);</script><div class="info">Modernizr test for: "borderimage"</div></div>
  76. <div class="test_wrap"><h3>Visual-square</h3><div id="border-image1" class="visual-square"></div><div class="square"><div style="border-width: 15px; -webkit-border-image-source: url(caniuse_files/green5x5.png);-moz-border-image-source: url(caniuse_files/green5x5.png);-ms-border-image-source: url(caniuse_files/green5x5.png);-o-border-image-source: url(caniuse_files/green5x5.png);border-image-source: url(caniuse_files/green5x5.png);-webkit-border-image-slice: 2;-moz-border-image-slice: 2;-ms-border-image-slice: 2;-o-border-image-slice: 2;border-image-slice: 2; width:0; height: 0;"></div></div><div class="info">Separate properties:
  77. border-image-source: url(caniuse_files/green5x5.png);
  78. border-image-slice: 2;</div></div>
  79. <div class="test_wrap"><h3>Visual-square</h3><div id="border-image3" class="visual-square"></div><div class="square"><div style="border-width: 15px; -webkit-border-image: url(caniuse_files/green5x5.png) 2;-moz-border-image: url(caniuse_files/green5x5.png) 2;-ms-border-image: url(caniuse_files/green5x5.png) 2;-o-border-image: url(caniuse_files/green5x5.png) 2;border-image: url(caniuse_files/green5x5.png) 2; width:0; height: 0;"></div></div><div class="info">Shorthand syntax: border-image: url(caniuse_files/green5x5.png) 2;</div></div>
  80. </td></tr>
  81. <tr><th><h3>CSS3 Border-radius (rounded corners)</h3><span class="links">[<a href="http://caniuse.com/border-radius">Table</a>] [<a href="http://tests.caniuse.com/?feat=border-radius&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  82. <div class="test_wrap"><h3>Auto (m)</h3><div id="border-radius0" class="auto pass"></div><script>setResult('border-radius0', Modernizr.borderradius);</script><div class="info">Modernizr test for: "borderradius"</div></div>
  83. <div class="test_wrap"><h3>Visual-square</h3><div id="border-radius1" class="visual-square"></div><div class="square"><div style="width:30px; height:30px; overflow:hidden; position:relative;">
  84. <div style="background:lime; height: 40px; "></div>
  85. <div style="background:red; position:absolute; z-index:10; top: 0;
  86. height: 400px; width: 400px;
  87. -webkit-border-radius: 150px;
  88. -moz-border-radius: 150px;
  89. -ms-border-radius: 150px;
  90. -o-border-radius: 150px;
  91. border-radius: 150px;
  92. "></div>
  93. </div></div></div>
  94. </td></tr>
  95. <tr><th><h3>Canvas (basic support)</h3><span class="links">[<a href="http://caniuse.com/canvas">Table</a>] [<a href="http://tests.caniuse.com/?feat=canvas&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  96. <div class="test_wrap"><h3>Auto (m)</h3><div id="canvas0" class="auto pass"></div><script>setResult('canvas0', Modernizr.canvas);</script><div class="info">Modernizr test for: "canvas"</div></div>
  97. <div class="test_wrap"><h3>Visual-square</h3><div id="canvas1" class="visual-square"></div><div class="square"><canvas width="30" height="30" style="background:red;" id="canv_test"></canvas>
  98. <script>
  99. var canvas = $('#canv_test')[0],
  100. ctx = canvas.getContext && canvas.getContext('2d');
  101. if (ctx){
  102. ctx.fillStyle = '#00ff00';
  103. ctx.fillRect(0,0,100,40);
  104. }
  105. </script></div><div class="info">Draw rect on canvas using fillStyle and fillRect</div></div>
  106. </td></tr>
  107. <tr><th><h3>classList (DOMTokenList )</h3><span class="links">[<a href="http://caniuse.com/classlist">Table</a>] [<a href="http://tests.caniuse.com/?feat=classlist&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  108. <div class="test_wrap"><h3>Auto</h3><div id="classlist0" class="auto pass"></div><script>
  109. setResult('classlist0', "classList" in document.body);
  110. </script><div class="info">"classList" in document.body</div></div>
  111. <div class="test_wrap"><h3>Visual-square</h3><div id="classlist1" class="visual-square"></div><div class="square"><div id="classlisttest" class="pass" style="width:30px;height:30px;"></div>
  112. <script>
  113. try{
  114. document.getElementById('classlisttest').classList.remove('fail');
  115. document.getElementById('classlisttest').classList.add('pass');
  116. }catch(e){}
  117. </script></div></div>
  118. </td></tr>
  119. <tr><th><h3>Cross-Origin Resource Sharing</h3><span class="links">[<a href="http://caniuse.com/cors">Table</a>] [<a href="http://tests.caniuse.com/?feat=cors&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  120. <div class="test_wrap"><h3>Auto</h3><div id="cors0" class="auto pass"></div><script>
  121. $(function() {
  122. $.get('http://a.deveria.com/tests/cors/true.php', function(data) {
  123. setResult('cors0', data);
  124. });
  125. });
  126. </script><div class="info">Instant XHR request on page that should permit it.</div></div>
  127. </td></tr>
  128. <tr><th><h3>CSS3 Animation</h3><span class="links">[<a href="http://caniuse.com/css-animation">Table</a>] [<a href="http://tests.caniuse.com/?feat=css-animation&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;<span>-pre-</span></td><td>
  129. <div class="test_wrap"><h3>Auto (m)</h3><div id="css-animation0" class="auto pass"></div><script>setResult('css-animation0', Modernizr.cssanimations);</script><div class="info">Modernizr test for: "cssanimations"</div></div>
  130. <div class="test_wrap"><h3>Visual-square</h3><div id="css-animation1" class="visual-square"></div><div class="square"><style>
  131. #css-animation1test {
  132. -webkit-animation: staylime 60s infinite;
  133. -moz-animation: staylime 60s infinite;
  134. -ms-animation: staylime 60s infinite;
  135. -o-animation: staylime 60s infinite;
  136. animation: staylime 60s infinite;
  137. }
  138. @-webkit-keyframes staylime {
  139. from { background-color: lime; }
  140. to { background-color: lime; }
  141. }
  142. @-moz-keyframes staylime {
  143. from { background-color: lime; }
  144. to { background-color: lime; }
  145. }
  146. @-ms-keyframes staylime {
  147. from { background-color: lime; }
  148. to { background-color: lime; }
  149. }
  150. @-o-keyframes staylime {
  151. from { background-color: lime; }
  152. to { background-color: lime; }
  153. }
  154. @keyframes staylime {
  155. from { background-color: lime; }
  156. to { background-color: lime; }
  157. }
  158. </style>
  159. <div id="css-animation1test" style="width:30px;height:30px;"></div></div><div class="info">animation: staylime 60s infinite;
  160. @keyframes staylime {
  161. from { background-color: lime; }
  162. to { background-color: lime; }
  163. }</div></div>
  164. </td></tr>
  165. <tr><th><h3>CSS3 Box-shadow</h3><span class="links">[<a href="http://caniuse.com/css-boxshadow">Table</a>] [<a href="http://tests.caniuse.com/?feat=css-boxshadow&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  166. <div class="test_wrap"><h3>Auto (m)</h3><div id="css-boxshadow0" class="auto pass"></div><script>setResult('css-boxshadow0', Modernizr.boxshadow);</script><div class="info">Modernizr test for: "boxshadow"</div></div>
  167. <div class="test_wrap"><h3>Visual-square</h3><div id="css-boxshadow1" class="visual-square"></div><div class="square"><div style="background:red; width: 30px; height: 30px;
  168. -webkit-box-shadow: inset lime 0px 0px 150px;
  169. -moz-box-shadow: inset lime 0px 0px 150px;
  170. -ms-box-shadow: inset lime 0px 0px 150px;
  171. -o-box-shadow: inset lime 0px 0px 150px;
  172. box-shadow: inset lime 0px 0px 150px;
  173. "></div>
  174. </div><div class="info">Must be greenish, may not be entirely lime depending on the implementation.</div></div>
  175. </td></tr>
  176. <tr><th><h3>CSS position:fixed</h3><span class="links">[<a href="http://caniuse.com/css-fixed">Table</a>] [<a href="http://tests.caniuse.com/?feat=css-fixed&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  177. <div class="test_wrap"><h3>Interact</h3><div id="css-fixed1" class="interact"></div><a href="http://tests.caniuse.com/fixed.html">Test here</a></div>
  178. </td></tr>
  179. <tr><th><h3>CSS Gradients</h3><span class="links">[<a href="http://caniuse.com/css-gradients">Table</a>] [<a href="http://tests.caniuse.com/?feat=css-gradients&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;<span>-pre-</span></td><td>
  180. <div class="test_wrap"><h3>Auto (m)</h3><div id="css-gradients0" class="auto pass"></div><script>setResult('css-gradients0', Modernizr.cssgradients);</script><div class="info">Modernizr test for: "cssgradients"</div></div>
  181. <div class="test_wrap"><h3>Visual-square</h3><div id="css-gradients1" class="visual-square"></div><div class="square"><div style="width:30px;height:30px;background-image: -webkit-linear-gradient(lime, lime);background-image: -moz-linear-gradient(lime, lime);background-image: -ms-linear-gradient(lime, lime);background-image: -o-linear-gradient(lime, lime);background-image: linear-gradient(lime, lime);"></div></div><div class="info">linear-gradient(lime, lime);</div></div>
  182. <div class="test_wrap"><h3>Visual-square</h3><div id="css-gradients2" class="visual-square"></div><div class="square"><div style="width:30px;height:30px;background-image:-webkit-radial-gradient(lime, lime);background-image:-moz-radial-gradient(lime, lime);background-image:-ms-radial-gradient(lime, lime);background-image:-o-radial-gradient(lime, lime);background-image:radial-gradient(lime, lime);"></div></div><div class="info">radial-gradient(lime, lime)</div></div>
  183. </td></tr>
  184. <tr><th><h3>CSS3 Opacity</h3><span class="links">[<a href="http://caniuse.com/css-opacity">Table</a>] [<a href="http://tests.caniuse.com/?feat=css-opacity&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  185. <div class="test_wrap"><h3>Auto (m)</h3><div id="css-opacity0" class="auto pass"></div><script>setResult('css-opacity0', Modernizr.opacity);</script><div class="info">Modernizr test for: "opacity"</div></div>
  186. <div class="test_wrap"><h3>Visual-square</h3><div id="css-opacity1" class="visual-square"></div><div class="square"><div style="width:30px;height:30px;position:relative;background:lime">
  187. <div style="width:30px;height:30px;background:red;-webkit-opacity:0;-moz-opacity:0;-ms-opacity:0;-o-opacity:0;opacity:0;"></div></div>
  188. </div>
  189. </div><div class="info">Test for opacity: 0</div>
  190. </td></tr>
  191. <tr><th><h3>CSS3 Text-shadow</h3><span class="links">[<a href="http://caniuse.com/css-textshadow">Table</a>] [<a href="http://tests.caniuse.com/?feat=css-textshadow&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  192. <div class="test_wrap"><h3>Auto (m)</h3><div id="css-textshadow0" class="auto pass"></div><script>setResult('css-textshadow0', Modernizr.textshadow);</script><div class="info">Modernizr test for: "textshadow"</div></div>
  193. <div class="test_wrap"><h3>Visual</h3><div id="css-textshadow1" class="visual"></div><div class="vis_test"><div style="width:30px;height:30px;overflow:hidden" id="css-textshadow1">
  194. <div style="font:25px/25px Times New Roman, Times; color:white;-webkit-text-shadow:25px 0 3px lime;-moz-text-shadow:25px 0 3px lime;-ms-text-shadow:25px 0 3px lime;-o-text-shadow:25px 0 3px lime;text-shadow:25px 0 3px lime;position:relative; left:-25px;">A</div>
  195. </div></div><div class="vis_ref"><img src="./caniuse_files/text-shadow1.png"></div><div class="info">font-size: 25px;
  196. color: white;
  197. text-shadow: 25px 0 3px lime; position: relative;
  198. left: -25px;</div></div>
  199. <div class="test_wrap"><h3>Visual</h3><div id="css-textshadow2" class="visual"></div><div class="vis_test"><div style="width:40px;height:30px;overflow:hidden" id="css-textshadow2">
  200. <div style="font:25px/25px Times New Roman, Times; color:white; -webkit-text-shadow:25px 0 3px #0F0, 35px 0 3px #0C0, 45px 0 3px #090;-moz-text-shadow:25px 0 3px #0F0, 35px 0 3px #0C0, 45px 0 3px #090;-ms-text-shadow:25px 0 3px #0F0, 35px 0 3px #0C0, 45px 0 3px #090;-o-text-shadow:25px 0 3px #0F0, 35px 0 3px #0C0, 45px 0 3px #090;text-shadow:25px 0 3px #0F0, 35px 0 3px #0C0, 45px 0 3px #090; position:relative; left:-35px;">A</div>
  201. </div>
  202. </div><div class="vis_ref"><img src="./caniuse_files/text-shadow2.png"></div><div class="info">Multiple shadow test</div></div>
  203. </td></tr>
  204. <tr><th><h3>CSS3 Transitions</h3><span class="links">[<a href="http://caniuse.com/css-transitions">Table</a>] [<a href="http://tests.caniuse.com/?feat=css-transitions&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;<span>-pre-</span></td><td>
  205. <div class="test_wrap"><h3>Auto (m)</h3><div id="css-transitions0" class="auto pass"></div><script>setResult('css-transitions0', Modernizr.csstransitions);</script><div class="info">Modernizr test for: "csstransitions"</div></div>
  206. <div class="test_wrap"><h3>Interact</h3><div id="css-transitions1" class="interact"></div><style>
  207. #css-transitions1wrap {
  208. width: 30px;
  209. height: 30px;
  210. border: 1px solid;
  211. overflow: hidden;
  212. margin: 0 auto;
  213. }
  214. #css-transitions1test {
  215. -webkit-transition-property: left;
  216. -webkit-transition-duration: 3s;
  217. -webkit-transition-timing-function: cubic-bezier(0, 1, 1, 0);
  218. -moz-transition-property: left;
  219. -moz-transition-duration: 3s;
  220. -moz-transition-timing-function: cubic-bezier(0, 1, 1, 0);
  221. -ms-transition-property: left;
  222. -ms-transition-duration: 3s;
  223. -ms-transition-timing-function: cubic-bezier(0, 1, 1, 0);
  224. -o-transition-property: left;
  225. -o-transition-duration: 3s;
  226. -o-transition-timing-function: cubic-bezier(0, 1, 1, 0);
  227. transition-property: left;
  228. transition-duration: 3s;
  229. transition-timing-function: cubic-bezier(0, 1, 1, 0);
  230. background-color: lime;
  231. position: relative;
  232. left: -30px;
  233. top: 0;
  234. }
  235. #css-transitions1wrap:hover #css-transitions1test {
  236. left: 30px;
  237. }
  238. </style>
  239. <div id="css-transitions1wrap">
  240. <div id="css-transitions1test" style="width:30px;height:30px;"></div>
  241. </div><p class="condition">Green square must (briefly) appear on hover</p><div class="info">5 second transition from left to right using cubic-bezier(0, 1, 1, 0); </div></div>
  242. </td></tr>
  243. <tr><th><h3>CSS3 Colors</h3><span class="links">[<a href="http://caniuse.com/css3-colors">Table</a>] [<a href="http://tests.caniuse.com/?feat=css3-colors&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  244. <div class="test_wrap"><h3>Auto (m)</h3><div id="css3-colors0" class="auto pass"></div><script>setResult('css3-colors0', Modernizr.hsla);</script><div class="info">Modernizr test for: "hsla"</div></div>
  245. <div class="test_wrap"><h3>Visual-square</h3><div id="css3-colors1" class="visual-square"></div><div class="square"><div style="background-color: red; width: 30px; height: 30px; background-color: hsl(120, 100%, 50%);"></div></div></div>
  246. <div class="test_wrap"><h3>Visual-square</h3><div id="css3-colors2" class="visual-square"></div><div class="square"><div style="background-color: red; width: 30px; height: 30px; background-color: rgba(0, 255, 0, 1);"></div></div></div>
  247. </td></tr>
  248. <tr><th><h3>dataset &amp; data-* attributes</h3><span class="links">[<a href="http://caniuse.com/dataset">Table</a>] [<a href="http://tests.caniuse.com/?feat=dataset&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  249. <div class="test_wrap"><h3>Auto</h3><div id="dataset0" class="auto pass" data-foo="bar"></div><script>
  250. var result = 'dataset' in document.body;
  251. if(result) {
  252. var elem = document.getElementById('dataset0'); elem.setAttribute('data-foo', 'bar');
  253. result = elem.dataset.foo == 'bar';
  254. }
  255. setResult('dataset0', result);
  256. </script><div class="info">Test for 'dataset' in document.body and getting the correct value returned from a data-foo attribute.</div></div>
  257. <div class="test_wrap"><h3>Interact</h3><div id="dataset1" class="interact"></div><a href="http://trac.webkit.org/export/66582/trunk/LayoutTests/fast/dom/dataset.html">Test here</a></div>
  258. </td></tr>
  259. <tr><th><h3>Details &amp; Summary elements</h3><span class="links">[<a href="http://caniuse.com/details">Table</a>] [<a href="http://tests.caniuse.com/?feat=details&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  260. <div class="test_wrap"><h3>Auto</h3><div id="details0" class="auto pass"></div><script>
  261. setResult('details0', 'open' in document.createElement('details'));
  262. </script></div>
  263. <div class="test_wrap"><h3>Interact</h3><div id="details1" class="interact"></div><details>
  264. <summary>(summary button)</summary>
  265. <p>(detail contents)</p>
  266. </details><p class="condition">"(detail contents)" should be visible ONLY after clicking summary</p><div class="info">Basic details element with summary and paragraph as children.</div></div>
  267. </td></tr>
  268. <tr><th><h3>Server-sent DOM events</h3><span class="links">[<a href="http://caniuse.com/eventsource">Table</a>] [<a href="http://tests.caniuse.com/?feat=eventsource&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  269. <div class="test_wrap"><h3>Auto</h3><div id="eventsource0" class="auto pass"></div><script>
  270. setResult('eventsource0', typeof EventSource !== 'undefined');
  271. </script></div>
  272. </td></tr>
  273. <tr><th><h3>File API</h3><span class="links">[<a href="http://caniuse.com/fileapi">Table</a>] [<a href="http://tests.caniuse.com/?feat=fileapi&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  274. <div class="test_wrap"><h3>Auto</h3><div id="fileapi0" class="auto pass"></div><script>
  275. setResult('fileapi0', !!window.FileReader);
  276. </script></div>
  277. </td></tr>
  278. <tr><th><h3>Flexible Box Layout Module</h3><span class="links">[<a href="http://caniuse.com/flexbox">Table</a>] [<a href="http://tests.caniuse.com/?feat=flexbox&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;<span>-pre-</span></td><td>
  279. <div class="test_wrap"><h3>Auto (m)</h3><div id="flexbox0" class="auto pass"></div><script>setResult('flexbox0', Modernizr.flexbox);</script><div class="info">Modernizr test for: "flexbox"</div></div>
  280. </td></tr>
  281. <tr><th><h3>@font-face Web fonts</h3><span class="links">[<a href="http://caniuse.com/fontface">Table</a>] [<a href="http://tests.caniuse.com/?feat=fontface&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  282. <div class="test_wrap"><h3>Auto (m)</h3><div id="fontface0" class="auto pass"></div><script>setResult('fontface0', Modernizr.fontface);</script><div class="info">Modernizr test for: "fontface"</div></div>
  283. </td></tr>
  284. <tr><th><h3>Geolocation</h3><span class="links">[<a href="http://caniuse.com/geolocation">Table</a>] [<a href="http://tests.caniuse.com/?feat=geolocation&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  285. <div class="test_wrap"><h3>Auto (m)</h3><div id="geolocation0" class="auto pass"></div><script>setResult('geolocation0', Modernizr.geolocation);</script><div class="info">Modernizr test for: "geolocation"</div></div>
  286. <div class="test_wrap"><h3>Auto</h3><div id="geolocation1" class="auto pass"></div><script>
  287. (function() {
  288. var result = false;
  289. var geo = navigator.geolocation;
  290. if(geo) {
  291. result = (
  292. "getCurrentPosition" in geo
  293. && "watchPosition" in geo
  294. && "clearWatch" in geo
  295. );
  296. }
  297. setResult('geolocation1', result);
  298. }());
  299. </script><div class="info">Test for getCurrentPosition, watchPosition and clearWatch in navigator.geolocation</div></div>
  300. <div class="test_wrap"><h3>Interact</h3><div id="geolocation2" class="interact"></div><button id="geolocation2test">Get location</button>
  301. <script>
  302. (function() {
  303. var btn = document.getElementById('geolocation2test');
  304. if(!navigator.geolocation && !navigator.geolocation.getCurrentPosition) return false;
  305. btn.onclick = function() {
  306. var feat = document.getElementById('geolocation2');
  307. navigator.geolocation.getCurrentPosition(function(pos) {
  308. feat.innerHTML = '<p>Result:<br>LAT: ' + pos.coords.latitude + '<br>LON: ' + pos.coords.longitude + '</p>';
  309. }, function(error) {
  310. feat.innerHTML = '<p>Error:' + error.message + '</p>';
  311. });
  312. feat.innerHTML = '<p>Waiting for response...</p>';
  313. return false;
  314. }
  315. })();
  316. </script><p class="condition">Must provide LAT and LON info (may need to give permission first)</p><div class="info">Test for navigator.geolocation.getCurrentPosition on which position.coords.latitude and position.coords.longitude are expected. </div></div>
  317. </td></tr>
  318. <tr><th><h3>getElementsByClassName</h3><span class="links">[<a href="http://caniuse.com/getelementsbyclassname">Table</a>] [<a href="http://tests.caniuse.com/?feat=getelementsbyclassname&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  319. <div class="test_wrap"><h3>Auto</h3><div id="getelementsbyclassname0" class="auto pass"></div><script>
  320. setResult('getelementsbyclassname0', typeof document.getElementsByClassName === 'function')
  321. </script></div>
  322. <div class="test_wrap"><h3>Visual-square</h3><div id="getelementsbyclassname1" class="visual-square"></div><div class="square"><div style="width: 30px; height: 30px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: lime; background-position: initial initial; background-repeat: initial initial; " id="getelementsbyclassname1container">
  323. <div id="getelementsbyclassname1test">
  324. <div class="getelementsbyclassname1test"></div>
  325. <div class="getelementsbyclassname1test altgetelementsbyclassname1test"></div>
  326. <div class="altgetelementsbyclassname1test"></div>
  327. </div>
  328. <script>
  329. (function() {
  330. if(document.getElementsByClassName) {
  331. var elems = document.getElementsByClassName('getelementsbyclassname1test');
  332. var from_id = document.getElementById('getelementsbyclassname1test').getElementsByTagName('*');
  333. if(elems.length && elems.length === 2) {
  334. if(elems[0] === from_id[0] && elems[1] === from_id[1]) {
  335. document.getElementById('getelementsbyclassname1container').style.background = 'lime';
  336. }
  337. }
  338. }
  339. }());
  340. </script></div><div class="info">Test if two divs were correctly retrieved using getElementsByClassName</div></div>
  341. </div></td></tr>
  342. <tr><th><h3>Hashchange event</h3><span class="links">[<a href="http://caniuse.com/hashchange">Table</a>] [<a href="http://tests.caniuse.com/?feat=hashchange&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  343. <div class="test_wrap"><h3>Auto (m)</h3><div id="hashchange0" class="auto pass"></div><script>setResult('hashchange0', Modernizr.hashchange);</script><div class="info">Modernizr test for: "hashchange"</div></div>
  344. <div class="test_wrap"><h3>Visual-square</h3><div id="hashchange1" class="visual-square"></div><div class="square"><iframe style="width:30px;height:30px;border:0" src="./caniuse_files/hashchange.html"></iframe></div><div class="info">iframe with addEventListener('hashchange', function() {
  345. document.body.style.background = 'lime';
  346. }, false);
  347. </div></div>
  348. </td></tr>
  349. <tr><th><h3>Session history management</h3><span class="links">[<a href="http://caniuse.com/history">Table</a>] [<a href="http://tests.caniuse.com/?feat=history&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  350. <div class="test_wrap"><h3>Auto (m)</h3><div id="history0" class="auto pass"></div><script>setResult('history0', Modernizr.history);</script><div class="info">Modernizr test for: "history"</div></div>
  351. <div class="test_wrap"><h3>Auto</h3><div id="history1" class="auto"></div><iframe src="./caniuse_files/pushstate.html#history1" style="display:none"></iframe><div class="info">Test if history.pushState was successful</div></div>
  352. </td></tr>
  353. <tr><th><h3>IndexedDB</h3><span class="links">[<a href="http://caniuse.com/indexeddb">Table</a>] [<a href="http://tests.caniuse.com/?feat=indexeddb&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  354. <div class="test_wrap"><h3>Auto (m)</h3><div id="indexeddb0" class="auto pass"></div><script>setResult('indexeddb0', Modernizr.indexeddb);</script><div class="info">Modernizr test for: "indexeddb"</div></div>
  355. </td></tr>
  356. <tr><th><h3>JSON parsing</h3><span class="links">[<a href="http://caniuse.com/json">Table</a>] [<a href="http://tests.caniuse.com/?feat=json&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  357. <div class="test_wrap"><h3>Auto</h3><div id="json0" class="auto pass"></div><script>
  358. setResult('json0', 'JSON' in window)
  359. </script></div>
  360. <div class="test_wrap"><h3>Auto</h3><div id="json1" class="auto pass"></div><script>
  361. (function() {
  362. try {
  363. var obj = {
  364. key1: 'my_str',
  365. key2: ['my', 'array'],
  366. key3: {
  367. my: 'object',
  368. with_numbers: [1, 2, 3, 4.5678],
  369. and_also: 9
  370. }
  371. };
  372. var str = JSON.stringify(obj);
  373. if(typeof str === 'string') {
  374. var new_obj = JSON.parse(str);
  375. if(
  376. new_obj.key1 === 'my_str'
  377. && new_obj.key2.length === 2
  378. && new_obj.key2[1] === 'array'
  379. && new_obj.key3.with_numbers[3] === 4.5678
  380. && new_obj.key3.and_also === 9
  381. ) {
  382. setResult('json1', true);
  383. } else {
  384. setResult('json1', false);
  385. }
  386. } else {
  387. setResult('json1', false);
  388. }
  389. } catch(e){
  390. setResult('json1', false);
  391. }
  392. }());
  393. </script><div class="info">Create a JS object, convert to JSON string, convert back to object and compare.</div></div>
  394. </td></tr>
  395. <tr><th><h3>CSS3 Multiple backgrounds</h3><span class="links">[<a href="http://caniuse.com/multibackgrounds">Table</a>] [<a href="http://tests.caniuse.com/?feat=multibackgrounds&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  396. <div class="test_wrap"><h3>Auto (m)</h3><div id="multibackgrounds0" class="auto pass"></div><script>setResult('multibackgrounds0', Modernizr.multiplebgs);</script><div class="info">Modernizr test for: "multiplebgs"</div></div>
  397. <div class="test_wrap"><h3>Visual-square</h3><div id="multibackgrounds1" class="visual-square"></div><div class="square"><div style="background-repeat: repeat-x; background-image: url(caniuse_files/green5x5.png), url(caniuse_files/green5x5.png), url(caniuse_files/green5x5.png), url(caniuse_files/green5x5.png), url(caniuse_files/green5x5.png), url(caniuse_files/green5x5.png); background-position: 0 0, 0 5px, 0 10px, 0 15px, 0 20px, 0 25px; width:30px;height:30px;"></div></div><div class="info">background-repeat: repeat-x;
  398. background-image: url(caniuse_files/green5x5.png), url(caniuse_files/green5x5.png), url(caniuse_files/green5x5.png), url(caniuse_files/green5x5.png), url(caniuse_files/green5x5.png), url(caniuse_files/green5x5.png);
  399. background-position: 0 0, 0 5px, 0 10px, 0 15px, 0 20px, 0 25px;</div></div>
  400. </td></tr>
  401. <tr><th><h3>CSS3 Multiple column layout</h3><span class="links">[<a href="http://caniuse.com/multicolumn">Table</a>] [<a href="http://tests.caniuse.com/?feat=multicolumn&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;<span>-pre-</span></td><td>
  402. <div class="test_wrap"><h3>Auto (m)</h3><div id="multicolumn0" class="auto pass"></div><script>setResult('multicolumn0', Modernizr.csscolumns);</script><div class="info">Modernizr test for: "csscolumns"</div></div>
  403. <div class="test_wrap"><h3>Visual-square</h3><div id="multicolumn1" class="visual-square"></div><div class="square"><div style="-webkit-column-width: 15px; -webkit-column-gap: 0;-moz-column-width: 15px; -moz-column-gap: 0;-ms-column-width: 15px; -ms-column-gap: 0;-o-column-width: 15px; -o-column-gap: 0;column-width: 15px; column-gap: 0; width:30px;height:30px;background:red;">
  404. <div style="inline-block;width:15px;height:30px;background:lime;"></div>
  405. <div style="inline-block;width:15px;height:30px;background:lime;"></div>
  406. </div>
  407. </div><div class="info">column-width: 15px;
  408. column-gap: 0;</div></div>
  409. </td></tr>
  410. <tr><th><h3>Web Storage - name/value pairs</h3><span class="links">[<a href="http://caniuse.com/namevalue-storage">Table</a>] [<a href="http://tests.caniuse.com/?feat=namevalue-storage&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  411. <div class="test_wrap"><h3>Auto (m)</h3><div id="namevalue-storage0" class="auto pass"></div><script>setResult('namevalue-storage0', Modernizr.localstorage);</script><div class="info">Modernizr test for: "localstorage"</div></div>
  412. <div class="test_wrap"><h3>Auto</h3><div id="namevalue-storage1" class="auto pass"></div><script>
  413. (function() {
  414. var result = false;
  415. if(window.localStorage) {
  416. try {
  417. localStorage.setItem('foo', 'bar');
  418. if(localStorage.getItem('foo') === 'bar'
  419. && localStorage['foo'] === 'bar'
  420. && localStorage.foo === 'bar'
  421. ) {
  422. localStorage.removeItem('foo');
  423. if(localStorage.getItem('foo') === null) {
  424. result = true;
  425. }
  426. }
  427. } catch(e) {}
  428. }
  429. setResult('namevalue-storage1', result);
  430. })();
  431. </script><div class="info">Test if getItem, setItem and removeItem work.</div></div>
  432. </td></tr>
  433. <tr><th><h3>Web Notifications</h3><span class="links">[<a href="http://caniuse.com/notifications">Table</a>] [<a href="http://tests.caniuse.com/?feat=notifications&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  434. <div class="test_wrap"><h3>Auto</h3><div id="notifications0" class="auto pass"></div><script>
  435. setResult('notifications0',
  436. "webkitNotifications" in window
  437. || "mozNotifications" in window
  438. || "oNotifications" in window
  439. || "msNotifications" in window
  440. || "khtmlNotifications" in window
  441. || "notifications" in window
  442. );
  443. </script></div>
  444. </td></tr>
  445. <tr><th><h3>Offline web applications</h3><span class="links">[<a href="http://caniuse.com/offline-apps">Table</a>] [<a href="http://tests.caniuse.com/?feat=offline-apps&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  446. <div class="test_wrap"><h3>Auto (m)</h3><div id="offline-apps0" class="auto pass"></div><script>setResult('offline-apps0', Modernizr.applicationcache);</script><div class="info">Modernizr test for: "applicationcache"</div></div>
  447. </td></tr>
  448. <tr><th><h3>querySelector/querySelectorAll</h3><span class="links">[<a href="http://caniuse.com/queryselector">Table</a>] [<a href="http://tests.caniuse.com/?feat=queryselector&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  449. <div class="test_wrap"><h3>Auto</h3><div id="queryselector0" class="auto pass"></div><script>
  450. setResult('queryselector0', !!document.querySelectorAll && !!document.querySelector)
  451. </script></div>
  452. <div class="test_wrap"><h3>Auto</h3><div id="queryselector1" class="auto pass"></div> <div id="queryselector1test">
  453. <div data-foo="queryselector1"></div>
  454. <div id="queryselector1target"></div>
  455. <div class="altqueryselector1test"></div>
  456. </div>
  457. <script>
  458. (function() {
  459. if(document.querySelector) {
  460. var elem = document.querySelector('[data-foo=queryselector1] + *');
  461. var target = document.getElementById('queryselector1target');
  462. setResult('queryselector1', elem === target);
  463. }
  464. }());
  465. </script><div class="info">querySelector test on selector '[data-foo=bar] + *'</div></div>
  466. <div class="test_wrap"><h3>Auto</h3><div id="queryselector2" class="auto pass"></div> <div id="queryselector2test">
  467. <div data-foo="queryselector2"></div>
  468. <div id="queryselector2target"></div>
  469. <div class="altqueryselector2test"></div>
  470. </div>
  471. <script>
  472. (function() {
  473. if(document.querySelector) {
  474. var elem = document.querySelector('[data-foo=queryselector2] + *');
  475. var target = document.getElementById('queryselector2target');
  476. setResult('queryselector2', elem === target);
  477. }
  478. }());
  479. </script><div class="info">querySelectorAll test on selector '[data-foo=bar] + *'</div></div>
  480. </td></tr>
  481. <tr><th><h3>SVG (basic support)</h3><span class="links">[<a href="http://caniuse.com/svg">Table</a>] [<a href="http://tests.caniuse.com/?feat=svg&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  482. <div class="test_wrap"><h3>Auto (m)</h3><div id="svg0" class="auto pass"></div><script>setResult('svg0', Modernizr.svg);</script><div class="info">Modernizr test for: "svg"</div></div>
  483. <div class="test_wrap"><h3>Visual-square</h3><div id="svg1" class="visual-square"></div><div class="square"><object type="image/svg+xml" width="30" height="30" data="./caniuse_files/svg-img.svg" style="overflow:visible"> SVG fail
  484. </object></div><div class="info">SVG in &lt;object&gt;</div></div>
  485. </td></tr>
  486. <tr><th><h3>SVG effects for HTML</h3><span class="links">[<a href="http://caniuse.com/svg-html">Table</a>] [<a href="http://tests.caniuse.com/?feat=svg-html&prefix=all">Single feat</a>]</span></th><td class="current partial">&nbsp;</td><td>
  487. <div class="test_wrap"><h3>Visual</h3><div id="svg-html1" class="visual"></div><div class="vis_test"> <object type="image/svg+xml" width="60" height="30" data="http://tests.caniuse.com/blur-html.svg"> SVG fail
  488. </object></div><div class="vis_ref"><img src="./caniuse_files/svg-html-blur.png"></div><p class="condition">Text must appear blurry</p><div class="info">SVG with feGaussianBlur filter on foreignObject</div></div>
  489. </td></tr>
  490. <tr><th><h3>Inline SVG in HTML5</h3><span class="links">[<a href="http://caniuse.com/svg-html5">Table</a>] [<a href="http://tests.caniuse.com/?feat=svg-html5&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  491. <div class="test_wrap"><h3>Auto (m)</h3><div id="svg-html50" class="auto pass"></div><script>setResult('svg-html50', Modernizr.inlinesvg);</script><div class="info">Modernizr test for: "inlinesvg"</div></div>
  492. <div class="test_wrap"><h3>Visual-square</h3><div id="svg-html51" class="visual-square"></div><div class="square"><svg width="30" height="30" xmlns="http://www.w3.org/2000/svg" style="background:red;">
  493. <rect height="30" width="30" y="0" x="0" fill="#00ff00"></rect>
  494. </svg>
  495. </div></div>
  496. </td></tr>
  497. <tr><th><h3>SVG SMIL animation</h3><span class="links">[<a href="http://caniuse.com/svg-smil">Table</a>] [<a href="http://tests.caniuse.com/?feat=svg-smil&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  498. <div class="test_wrap"><h3>Auto (m)</h3><div id="svg-smil0" class="auto pass"></div><script>setResult('svg-smil0', Modernizr.smil);</script><div class="info">Modernizr test for: "smil"</div></div>
  499. <div class="test_wrap"><h3>Visual-square</h3><div id="svg-smil1" class="visual-square"></div><div class="square"><object type="image/svg+xml" width="30" height="30" data="http://tests.caniuse.com/svg-animate.svg" style="overflow:visible"> SVG fail
  500. </object></div><div class="info">SVG with animate element inside a rect</div></div>
  501. </td></tr>
  502. <tr><th><h3>Touch events</h3><span class="links">[<a href="http://caniuse.com/touch">Table</a>] [<a href="http://tests.caniuse.com/?feat=touch&prefix=all">Single feat</a>]</span></th><td class="current unknown">&nbsp;</td><td>
  503. <div class="test_wrap"><h3>Auto (m)</h3><div id="touch0" class="auto fail"></div><script>setResult('touch0', Modernizr.touch);</script><div class="info">Modernizr test for: "touch"</div></div>
  504. </td></tr>
  505. <tr><th><h3>CSS3 Transforms</h3><span class="links">[<a href="http://caniuse.com/transforms2d">Table</a>] [<a href="http://tests.caniuse.com/?feat=transforms2d&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;<span>-pre-</span></td><td>
  506. <div class="test_wrap"><h3>Auto (m)</h3><div id="transforms2d0" class="auto pass"></div><script>setResult('transforms2d0', Modernizr.csstransforms);</script><div class="info">Modernizr test for: "csstransforms"</div></div>
  507. <div class="test_wrap"><h3>Visual-square</h3><div id="transforms2d1" class="visual-square"></div><div class="square"><div style="width:30px;height:30px;background:red;overflow:hidden">
  508. <div style="background:lime;width:30px;height:30px;position:relative;left:-30px;-webkit-transform: translate(30px);-moz-transform: translate(30px);-ms-transform: translate(30px);-o-transform: translate(30px);transform: translate(30px); "></div>
  509. </div>
  510. </div><div class="info">transform: translate(30px);</div></div>
  511. </td></tr>
  512. <tr><th><h3>CSS3 3D Transforms</h3><span class="links">[<a href="http://caniuse.com/transforms3d">Table</a>] [<a href="http://tests.caniuse.com/?feat=transforms3d&prefix=all">Single feat</a>]</span></th><td class="current unknown">&nbsp;</td><td>
  513. <div class="test_wrap"><h3>Auto (m)</h3><div id="transforms3d0" class="auto pass"></div><script>setResult('transforms3d0', Modernizr.csstransforms3d);</script><div class="info">Modernizr test for: "csstransforms3d"</div></div>
  514. <div class="test_wrap"><h3>Visual-square</h3><div id="transforms3d1" class="visual-square"></div><div class="square"><style>
  515. #transforms3d1container {
  516. background: red;
  517. width: 30px;
  518. height: 30px;
  519. overflow: hidden;
  520. -webkit-perspective: 600;
  521. -webkit-perspective-origin: 0 200px;
  522. -moz-perspective: 600;
  523. -moz-perspective-origin: 0 200px;
  524. -ms-perspective: 600;
  525. -ms-perspective-origin: 0 200px;
  526. -o-perspective: 600;
  527. -o-perspective-origin: 0 200px;
  528. perspective: 600;
  529. perspective-origin: 0 200px;
  530. }
  531. #transforms3d1test {
  532. width:400px; height:100px;
  533. background: lime;
  534. position: relative;
  535. top: 30px;
  536. -webkit-transform: translate3d(-234px, 0, 0) rotate3d(0, 1, 0, -70deg);
  537. -moz-transform: translate3d(-234px, 0, 0) rotate3d(0, 1, 0, -70deg);
  538. -ms-transform: translate3d(-234px, 0, 0) rotate3d(0, 1, 0, -70deg);
  539. -o-transform: translate3d(-234px, 0, 0) rotate3d(0, 1, 0, -70deg);
  540. transform: translate3d(-234px, 0, 0) rotate3d(0, 1, 0, -70deg);
  541. }
  542. </style>
  543. <div id="transforms3d1container">
  544. <div id="transforms3d1test"></div>
  545. </div></div><div class="info">Parent:
  546. perspective: 600;
  547. perspective-origin: 0 200px;
  548. Child:
  549. transform: translate3d(-234px, 0, 0) rotate3d(0, 1, 0, -70deg);</div></div>
  550. </td></tr>
  551. <tr><th><h3>Video element</h3><span class="links">[<a href="http://caniuse.com/video">Table</a>] [<a href="http://tests.caniuse.com/?feat=video&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  552. <div class="test_wrap"><h3>Auto</h3><div id="video0" class="auto pass"></div><script>
  553. setResult('video0', !!document.createElement('video').canPlayType);
  554. </script></div>
  555. <div class="test_wrap"><h3>Interact</h3><div id="video1" class="interact"></div><video width="160" height="120" controls="">
  556. <source src="video.mp4" type="video/mp4">
  557. <source src="video.ogv" type="video/ogv">
  558. <source src="video.webm" type="video/webm">
  559. </video><div class="info">Video with controls and all three formats available.</div></div>
  560. <div class="test_wrap"><h3>Interact</h3><div id="video2" class="interact"></div><video width="160" height="120" controls="">
  561. <source src="mimevid.php?type=.mp4" type="video/mp4">
  562. <source src="mimevid.php?type=.ogv" type="video/ogg">
  563. <source src="mimevid.php?type=.webm" type="video/webm">
  564. </video><div class="info">Video with controls and all three formats available (with MIME).</div></div>
  565. </td></tr>
  566. <tr><th><h3>Web Sockets</h3><span class="links">[<a href="http://caniuse.com/websockets">Table</a>] [<a href="http://tests.caniuse.com/?feat=websockets&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  567. <div class="test_wrap"><h3>Auto (m)</h3><div id="websockets0" class="auto pass"></div><script>setResult('websockets0', Modernizr.websockets);</script><div class="info">Modernizr test for: "websockets"</div></div>
  568. </td></tr>
  569. <tr><th><h3>Web Workers</h3><span class="links">[<a href="http://caniuse.com/webworkers">Table</a>] [<a href="http://tests.caniuse.com/?feat=webworkers&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  570. <div class="test_wrap"><h3>Auto (m)</h3><div id="webworkers0" class="auto pass"></div><script>setResult('webworkers0', Modernizr.webworkers);</script><div class="info">Modernizr test for: "webworkers"</div></div>
  571. <div class="test_wrap"><h3>Auto</h3><div id="webworkers1" class="auto pass"></div><script>
  572. (function() {
  573. try {
  574. var w = new Worker('worker.js');
  575. w.onmessage = function (event) {
  576. var success = (event.data && event.data === 'worker works');
  577. setResult('webworkers1', success);
  578. }
  579. w.postMessage('');
  580. } catch(e) {
  581. setResult('webworkers1', false);
  582. }
  583. }());
  584. </script><div class="info">Create a new Worker using new Worker('worker.js');
  585. Then, test postMessage and onmessage event.</div></div>
  586. </td></tr>
  587. <tr><th><h3>Cross-document messaging</h3><span class="links">[<a href="http://caniuse.com/x-doc-messaging">Table</a>] [<a href="http://tests.caniuse.com/?feat=x-doc-messaging&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  588. <div class="test_wrap"><h3>Auto (m)</h3><div id="x-doc-messaging0" class="auto pass"></div><script>setResult('x-doc-messaging0', Modernizr.postmessage);</script><div class="info">Modernizr test for: "postmessage"</div></div>
  589. </td></tr>
  590. <tr><th><h3>XMLHttpRequest 2</h3><span class="links">[<a href="http://caniuse.com/xhr2">Table</a>] [<a href="http://tests.caniuse.com/?feat=xhr2&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  591. <div class="test_wrap"><h3>Auto</h3><div id="xhr20" class="auto pass"></div><script>
  592. var progEv = !!(window.ProgressEvent);
  593. var fdata = !!(window.FormData);
  594. setResult('xhr20', (progEv && fdata));
  595. </script></div>
  596. </td></tr>
  597. <tr><th><h3>XHTML served as application/xhtml+xml</h3><span class="links">[<a href="http://caniuse.com/xhtml">Table</a>] [<a href="http://tests.caniuse.com/?feat=xhtml&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  598. <div class="test_wrap"><h3>Auto</h3><div id="xhtml0" class="auto pass"></div><iframe src="./caniuse_files/xhtml.html" width="15" height="15" style="display:none"></iframe></div>
  599. </td></tr>
  600. <tr><th><h3>CSS Generated content</h3><span class="links">[<a href="http://caniuse.com/css-gencontent">Table</a>] [<a href="http://tests.caniuse.com/?feat=css-gencontent&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  601. <div class="test_wrap"><h3>Visual</h3><div id="css-gencontent0" class="visual"></div><div class="vis_test"><style>
  602. #gencontent:before {
  603. content: 'A';
  604. }
  605. #gencontent:after {
  606. content: 'Z';
  607. }
  608. </style>
  609. <span id="gencontent">-</span></div><div class="vis_ref"><img src="./caniuse_files/before-after.png"></div><div class="info">Element with CSS:
  610. #gencontent:before {
  611. content: 'A';
  612. }
  613. #gencontent:after {
  614. content: 'Z';
  615. }</div></div>
  616. </td></tr>
  617. <tr><th><h3>CSS Table display</h3><span class="links">[<a href="http://caniuse.com/css-table">Table</a>] [<a href="http://tests.caniuse.com/?feat=css-table&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  618. <div class="test_wrap"><h3>Visual</h3><div id="css-table0" class="visual"></div><div class="vis_test"><style>
  619. #table-test { display: table; }
  620. #table-test .table-tr { display: table-row; }
  621. #table-test .table-td { display: table-cell;border:1px solid; }
  622. </style>
  623. <div style="display:inline-block;vertical-align:middle">
  624. <div id="table-test">
  625. <div class="table-tr">
  626. <div class="table-td">topleft</div>
  627. <div class="table-td">topright</div>
  628. </div>
  629. <div class="table-tr">
  630. <div class="table-td">bottomleft</div>
  631. <div class="table-td">bottomright</div>
  632. </div>
  633. </div>
  634. </div></div><div class="vis_ref"><img src="./caniuse_files/table.png"></div><p class="condition">Should be 2x2 table</p></div>
  635. </td></tr>
  636. <tr><th><h3>HTML5 form features</h3><span class="links">[<a href="http://caniuse.com/forms">Table</a>] [<a href="http://tests.caniuse.com/?feat=forms&prefix=all">Single feat</a>]</span></th><td class="current partial">&nbsp;</td><td>
  637. <div class="test_wrap"><h3>Visual</h3><div id="forms0" class="visual"></div><div class="vis_test"><input type="date"><br><input type="time"><br><input type="range"><br><input type="number"></div><p class="condition">date/time/range/number widgets</p></div>
  638. </td></tr>
  639. <tr><th><h3>MathML</h3><span class="links">[<a href="http://caniuse.com/mathml">Table</a>] [<a href="http://tests.caniuse.com/?feat=mathml&prefix=all">Single feat</a>]</span></th><td class="current unknown">&nbsp;</td><td>
  640. <div class="test_wrap"><h3>Visual</h3><div id="mathml0" class="visual"></div><div class="vis_test"><iframe src="./caniuse_files/mathml.html" width="210" height="110" style="border:0;"></iframe></div><div class="vis_ref"><img src="./caniuse_files/mathml_ref.png"></div></div>
  641. </td></tr>
  642. <tr><th><h3>PNG alpha transparency</h3><span class="links">[<a href="http://caniuse.com/png-alpha">Table</a>] [<a href="http://tests.caniuse.com/?feat=png-alpha&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  643. <div class="test_wrap"><h3>Visual</h3><div id="png-alpha0" class="visual"></div><div class="vis_test"><img src="./caniuse_files/alpha.png" style="background-color:lime"></div><div class="vis_ref"><img src="./caniuse_files/png_alpha_result.png"></div></div>
  644. </td></tr>
  645. <tr><th><h3>Ruby annotation</h3><span class="links">[<a href="http://caniuse.com/ruby">Table</a>] [<a href="http://tests.caniuse.com/?feat=ruby&prefix=all">Single feat</a>]</span></th><td class="current partial">&nbsp;</td><td>
  646. <div class="test_wrap"><h3>Visual</h3><div id="ruby0" class="visual"></div><div class="vis_test">
  647. <div style="display:inline-block;vertical-align:middle">
  648. <ruby>(bottom1)<rt>(top1)</rt>(bottom2)<rt>(top2)</rt></ruby>
  649. </div></div><div class="vis_ref"><img src="./caniuse_files/ruby.png"></div><p class="condition">Elements should be stacked on top of each other</p></div>
  650. </td></tr>
  651. <tr><th><h3>SVG filters</h3><span class="links">[<a href="http://caniuse.com/svg-filters">Table</a>] [<a href="http://tests.caniuse.com/?feat=svg-filters&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  652. <div class="test_wrap"><h3>Visual</h3><div id="svg-filters0" class="visual"></div><div class="vis_test"><object data="http://tests.caniuse.com/blur.svg" type="image/svg+xml" height="70" width="70">
  653. object SVG not supported
  654. </object>
  655. </div><div class="vis_ref"><img src="./caniuse_files/svg_blur.png"></div></div>
  656. <div class="test_wrap"><h3>Visual-square</h3><div id="svg-filters1" class="visual-square"></div><div class="square"><object type="image/svg+xml" width="30" height="30" data="http://tests.caniuse.com/fecolormatrix.svg" style="overflow:visible"> SVG fail
  657. </object></div><p class="condition">Must be green (not lime)</p><div class="info">SVG with &lt;feColorMatrix type="hueRotate" values="120"/&gt;</div></div>
  658. <div class="test_wrap"><h3>Visual-square</h3><div id="svg-filters2" class="visual-square"></div><div class="square"><object type="image/svg+xml" width="30" height="30" data="http://tests.caniuse.com/feflood.svg" style="overflow:visible"> SVG fail
  659. </object></div><div class="info">SVG with &lt;feFlood flood-color="lime"/&gt;</div></div>
  660. </td></tr>
  661. <tr><th><h3>CSS3 Word-wrap</h3><span class="links">[<a href="http://caniuse.com/wordwrap">Table</a>] [<a href="http://tests.caniuse.com/?feat=wordwrap&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  662. <div class="test_wrap"><h3>Visual</h3><div id="wordwrap0" class="visual"></div><div class="vis_test"><style>
  663. #wordwraptest {
  664. display: inline-block;
  665. width: 30px;
  666. word-wrap: break-word;
  667. }
  668. </style>
  669. <div id="wordwraptest">abcdefghijklmnopqrstuvwxyz</div>
  670. </div><p class="condition">Text should wrap</p></div>
  671. <div class="test_wrap"><h3>Visual</h3><div id="wordwrap1" class="visual"></div><div class="vis_test"><style>
  672. #wordwraptest2 {
  673. display: inline-block;
  674. width: 30px;
  675. word-wrap: normal;
  676. }
  677. </style>
  678. <div id="wordwraptest2">abcdefghijklmnopqrstuvwxyz</div>
  679. </div><p class="condition">Text should overflow box</p></div>
  680. <div class="test_wrap"><h3>Visual-square</h3><div id="wordwrap2" class="visual-square"></div><div class="square"><div style="width:30px;height:30px;background:red;overflow:hidden">
  681. <div style="color:lime;font-size:10px;line-height:10px;word-wrap:break-word;background:lime;">abcdefghijklmnop</div>
  682. </div>
  683. </div><div class="info">word-wrap: break-word;</div></div>
  684. </td></tr>
  685. <tr><th><h3>calc() as CSS unit value</h3><span class="links">[<a href="http://caniuse.com/calc">Table</a>] [<a href="http://tests.caniuse.com/?feat=calc&prefix=all">Single feat</a>]</span></th><td class="current unknown">&nbsp;</td><td>
  686. <div class="test_wrap"><h3>Visual-square</h3><div id="calc0" class="visual-square"></div><div class="square"><style>
  687. #calc0test {
  688. width: 0px;
  689. width: -webkit-calc(10px + 20px);
  690. width: -moz-calc(10px + 20px);
  691. width: -ms-calc(10px + 20px);
  692. width: -o-calc(10px + 20px);
  693. width: calc(10px + 20px);
  694. height: 30px;
  695. background: lime;
  696. }
  697. </style>
  698. <div id="calc0test"></div>
  699. </div><div class="info">width: calc(10px + 20px);</div></div>
  700. <div class="test_wrap"><h3>Visual-square</h3><div id="calc2" class="visual-square"></div><div class="square"><style>
  701. #calc2test {
  702. height:-webkit-calc(60px - 100%); width:-webkit-calc((100% / 2) + 15px - 0.5em); border-right:-webkit-calc(0.5em) solid lime;
  703. height:-moz-calc(60px - 100%); width:-moz-calc((100% / 2) + 15px - 0.5em); border-right:-moz-calc(0.5em) solid lime;
  704. height:-ms-calc(60px - 100%); width:-ms-calc((100% / 2) + 15px - 0.5em); border-right:-ms-calc(0.5em) solid lime;
  705. height:-o-calc(60px - 100%); width:-o-calc((100% / 2) + 15px - 0.5em); border-right:-o-calc(0.5em) solid lime;
  706. height:calc(60px - 100%); width:calc((100% / 2) + 15px - 0.5em); border-right:calc(0.5em) solid lime;
  707. background: lime;
  708. }
  709. </style>
  710. <div id="calc2test"></div>
  711. </div><div class="info">height: calc(60px - 100%);
  712. width: calc((100% / 2) + 15px - 0.5em);
  713. border-right: calc(0.5em) solid lime;</div></div>
  714. </td></tr>
  715. <tr><th><h3>CSS Grid Layout</h3><span class="links">[<a href="http://caniuse.com/css-grid">Table</a>] [<a href="http://tests.caniuse.com/?feat=css-grid&prefix=all">Single feat</a>]</span></th><td class="current unknown">&nbsp;</td><td>
  716. <div class="test_wrap"><h3>Visual-square</h3><div id="css-grid0" class="visual-square"></div><div class="square"><style>
  717. #css-grid0grid {
  718. display: -webkit-grid; display: -moz-grid; display: -ms-grid; display: -o-grid; display: grid;
  719. -webkit-grid-columns: 15px 1fr; -moz-grid-columns: 15px 1fr; -ms-grid-columns: 15px 1fr; -o-grid-columns: 15px 1fr; grid-columns: 15px 1fr;
  720. -webkit-grid-rows: 15px 15px; -moz-grid-rows: 15px 15px; -ms-grid-rows: 15px 15px; -o-grid-rows: 15px 15px; grid-rows: 15px 15px;
  721. }
  722. #css-grid0grid > div {
  723. background: lime;
  724. }
  725. #css-grid0a {
  726. -webkit-grid-row: 1; -moz-grid-row: 1; -ms-grid-row: 1; -o-grid-row: 1; grid-row: 1;
  727. -webkit-grid-column: 1; -moz-grid-column: 1; -ms-grid-column: 1; -o-grid-column: 1; grid-column: 1;
  728. }
  729. #css-grid0b {
  730. -webkit-grid-row: 1; -moz-grid-row: 1; -ms-grid-row: 1; -o-grid-row: 1; grid-row: 1;
  731. -webkit-grid-column: 2; -moz-grid-column: 2; -ms-grid-column: 2; -o-grid-column: 2; grid-column: 2;
  732. }
  733. #css-grid0c {
  734. -webkit-grid-row: 2; -moz-grid-row: 2; -ms-grid-row: 2; -o-grid-row: 2; grid-row: 2;
  735. -webkit-grid-column: 1; -moz-grid-column: 1; -ms-grid-column: 1; -o-grid-column: 1; grid-column: 1;
  736. -webkit-grid-column-span: 2; -moz-grid-column-span: 2; -ms-grid-column-span: 2; -o-grid-column-span: 2; grid-column-span: 2;
  737. }
  738. </style>
  739. <div id="css-grid0grid">
  740. <div id="css-grid0a"></div>
  741. <div id="css-grid0b"></div>
  742. <div id="css-grid0c"></div>
  743. </div>
  744. </div><div class="info">Grid with two columns, two rows and three elements taking up space.</div></div>
  745. </td></tr>
  746. <tr><th><h3>CSS3 Media Queries</h3><span class="links">[<a href="http://caniuse.com/css-mediaqueries">Table</a>] [<a href="http://tests.caniuse.com/?feat=css-mediaqueries&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  747. <div class="test_wrap"><h3>Visual-square</h3><div id="css-mediaqueries0" class="visual-square"></div><div class="square"><style>
  748. #mediaq1,#mediaq2,#mediaq3,#mediaq4 {
  749. background: red;
  750. float: left;
  751. width: 15px;
  752. height: 15px;
  753. }
  754. #mediaq3 {
  755. clear: left;
  756. }
  757. @media all and (min-width: 0px) {
  758. #mediaq1, #mediaq3 { background: lime; }
  759. }
  760. @media all and (max-width: 999999px) {
  761. #mediaq2, #mediaq4 { background: lime; }
  762. }
  763. @media all and (min-width: 999999px) {
  764. #mediaq3 { background: red; }
  765. }
  766. @media all and (max-width: 0px) {
  767. #mediaq4 { background: red; }
  768. }
  769. </style>
  770. <div id="mediaq1"></div>
  771. <div id="mediaq2"></div>
  772. <div id="mediaq3"></div>
  773. <div id="mediaq4"></div></div></div>
  774. </td></tr>
  775. <tr><th><h3>CSS 2.1 selectors</h3><span class="links">[<a href="http://caniuse.com/css-sel2">Table</a>] [<a href="http://tests.caniuse.com/?feat=css-sel2&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  776. <div class="test_wrap"><h3>Visual-square</h3><div id="css-sel20" class="visual-square"></div><div class="square"><style>
  777. #css-sel20test div {
  778. width: 30px;
  779. height: 30px;
  780. background: red;
  781. }
  782. #css-sel20test > div {
  783. background: lime;
  784. }
  785. </style>
  786. <div id="css-sel20test">
  787. <div></div>
  788. </div>
  789. </div><div class="info">Test for child ( &gt; )selector</div></div>
  790. <div class="test_wrap"><h3>Visual-square</h3><div id="css-sel21" class="visual-square"></div><div class="square"><style>
  791. #css-sel21test + div { background: lime; width:30px; height:30px;}
  792. </style>
  793. <div id="css-sel21test"></div>
  794. <div></div>
  795. </div><div class="info">Adjacent sibling selector test ( + )</div></div>
  796. <div class="test_wrap"><h3>Visual-square</h3><div id="css-sel22" class="visual-square"></div><div class="square"><style>
  797. #css-sel22test[role="none"] { background: lime; width:30px; height:30px;}
  798. </style>
  799. <div id="css-sel22test" role="none"></div></div><div class="info">Attribute selector ( [role="none"] )</div></div>
  800. </td></tr>
  801. <tr><th><h3>CSS3 Box-sizing</h3><span class="links">[<a href="http://caniuse.com/css3-boxsizing">Table</a>] [<a href="http://tests.caniuse.com/?feat=css3-boxsizing&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  802. <div class="test_wrap"><h3>Visual-square</h3><div id="css3-boxsizing0" class="visual-square"></div><div class="square"><style>
  803. #boxsizetest {
  804. -webkit-box-sizing: border-box;
  805. -moz-box-sizing: border-box;
  806. -ms-box-sizing: border-box;
  807. -o-box-sizing: border-box;
  808. box-sizing: border-box;
  809. background: red;
  810. border-left: 30px solid lime;
  811. display: inline-block;
  812. height: 30px;
  813. width: 30px;
  814. }
  815. </style>
  816. <div id="boxsizetest"></div>
  817. </div></div>
  818. </td></tr>
  819. <tr><th><h3>Data URLs</h3><span class="links">[<a href="http://caniuse.com/datauri">Table</a>] [<a href="http://tests.caniuse.com/?feat=datauri&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  820. <div class="test_wrap"><h3>Visual-square</h3><div id="datauri0" class="visual-square"></div><div class="square"><div style="background-image: url(&#39;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAMAAAAoyzS7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRFAP8AAAAAbwN%2BQwAAAAxJREFUeNpiYAAIMAAAAgABT21Z4QAAAABJRU5ErkJggg%3D%3D&#39;);width:30px;height:30px;"></div></div><div class="info">div with data URL as background image</div></div>
  821. </td></tr>
  822. <tr><th><h3>New semantic elements</h3><span class="links">[<a href="http://caniuse.com/html5semantic">Table</a>] [<a href="http://tests.caniuse.com/?feat=html5semantic&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  823. <div class="test_wrap"><h3>Visual-square</h3><div id="html5semantic0" class="visual-square"></div><div class="square"><style>
  824. #html5semantic0test {
  825. width: 30px;
  826. height: 30px;
  827. background: red;
  828. }
  829. #html5semantic0test * {
  830. background: lime;
  831. height: 4px;
  832. }
  833. #html5semantic0test section {
  834. height: 6px;
  835. }
  836. </style>
  837. <div id="html5semantic0test">
  838. <section></section>
  839. <article></article>
  840. <aside></aside>
  841. <hgroup></hgroup>
  842. <header></header>
  843. <footer></footer>
  844. <nav></nav>
  845. </div></div><div class="info">section, article, aside, hgroup, header, footer, nav tested for default "block" style.</div></div>
  846. </td></tr>
  847. <tr><th><h3>CSS inline-block</h3><span class="links">[<a href="http://caniuse.com/inline-block">Table</a>] [<a href="http://tests.caniuse.com/?feat=inline-block&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  848. <div class="test_wrap"><h3>Visual-square</h3><div id="inline-block0" class="visual-square"></div><div class="square"><div style="background:lime;display:inline-block;width:15px;height:30px;"></div><div style="background:lime;display:inline-block;width:15px;height:30px;"></div></div></div>
  849. </td></tr>
  850. <tr><th><h3>CSS min/max-width/height</h3><span class="links">[<a href="http://caniuse.com/minmaxwh">Table</a>] [<a href="http://tests.caniuse.com/?feat=minmaxwh&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  851. <div class="test_wrap"><h3>Visual-square</h3><div id="minmaxwh0" class="visual-square"></div><div class="square"><div style="width:200%;max-width:30px;height:30px;overflow:visible;background:lime"></div></div></div>
  852. <div class="test_wrap"><h3>Visual-square</h3><div id="minmaxwh1" class="visual-square"></div><div class="square"><div style="width:0;min-width:30px;height:30px;background:lime"></div></div></div>
  853. <div class="test_wrap"><h3>Visual-square</h3><div id="minmaxwh2" class="visual-square"></div><div class="square"><div style="height:100px;max-height:30px;width:30px;background:lime"></div></div></div>
  854. <div class="test_wrap"><h3>Visual-square</h3><div id="minmaxwh3" class="visual-square"></div><div class="square"><div style="height:0;min-height:30px;width:30px;background:lime"></div></div></div>
  855. </td></tr>
  856. <tr><th><h3>CSS3 object-fit/object-position</h3><span class="links">[<a href="http://caniuse.com/object-fit">Table</a>] [<a href="http://tests.caniuse.com/?feat=object-fit&prefix=all">Single feat</a>]</span></th><td class="current unknown">&nbsp;</td><td>
  857. <div class="test_wrap"><h3>Visual-square</h3><div id="object-fit0" class="visual-square"></div><div class="square"><style>
  858. #object-fit0test {
  859. width: 30px;
  860. height: 30px;
  861. background: lime;
  862. overflow: hidden;
  863. }
  864. #object-fit0test img {
  865. -webkit-object-fit: contain;
  866. -moz-object-fit: contain;
  867. -ms-object-fit: contain;
  868. -o-object-fit: contain;
  869. object-fit: contain;
  870. }
  871. </style>
  872. <div id="object-fit0test">
  873. <img src="./caniuse_files/red30x30.png" width="90" height="30">
  874. </div></div><div class="info">object-fit: contain</div></div>
  875. <div class="test_wrap"><h3>Visual-square</h3><div id="object-fit2" class="visual-square"></div><div class="square"><style>
  876. #object-fit2test {
  877. width: 30px;
  878. height: 30px;
  879. background: lime;
  880. overflow: hidden;
  881. }
  882. #object-fit2test img {
  883. -webkit-object-position: 30px 30px;
  884. -moz-object-position: 30px 30px;
  885. -ms-object-position: 30px 30px;
  886. -o-object-position: 30px 30px;
  887. object-position: 30px 30px;
  888. }
  889. </style>
  890. <div id="object-fit2test">
  891. <img src="./caniuse_files/red30x30.png" width="30" height="30">
  892. </div>
  893. </div><div class="info">object-position: 30px 30px;</div></div>
  894. </td></tr>
  895. <tr><th><h3>rem (root em) units</h3><span class="links">[<a href="http://caniuse.com/rem">Table</a>] [<a href="http://tests.caniuse.com/?feat=rem&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  896. <div class="test_wrap"><h3>Visual-square</h3><div id="rem0" class="visual-square"></div><div class="square"><div style="background:red;width:30px;height:30px;position:relative;overflow:hidden;text-align:left">
  897. <span style="font-size:1px;background:lime;color:lime;position:relative;left:-6px;line-height:30px;font-size:5rem;">A</span>
  898. </div></div><div class="info">span with single character and font-size: 5rem;</div></div>
  899. </td></tr>
  900. <tr><th><h3>SVG in CSS backgrounds</h3><span class="links">[<a href="http://caniuse.com/svg-css">Table</a>] [<a href="http://tests.caniuse.com/?feat=svg-css&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  901. <div class="test_wrap"><h3>Visual-square</h3><div id="svg-css0" class="visual-square"></div><div class="square"><div style="width:30px;height:30px;background-image: url(caniuse_files/svg-img.svg)"></div>
  902. </div></div>
  903. </td></tr>
  904. <tr><th><h3>SVG in HTML img element</h3><span class="links">[<a href="http://caniuse.com/svg-img">Table</a>] [<a href="http://tests.caniuse.com/?feat=svg-img&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  905. <div class="test_wrap"><h3>Visual-square</h3><div id="svg-img0" class="visual-square"></div><div class="square"><img src="./caniuse_files/svg-img.svg" width="30" height="30"></div></div>
  906. </td></tr>
  907. <tr><th><h3>contenteditable attribute (basic support)</h3><span class="links">[<a href="http://caniuse.com/contenteditable">Table</a>] [<a href="http://tests.caniuse.com/?feat=contenteditable&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  908. <div class="test_wrap"><h3>Interact</h3><div id="contenteditable0" class="interact"></div><div contenteditable="true">
  909. <p>This element should be editable.</p>
  910. </div><div class="info">Div element with attribute contenteditable="true"</div></div>
  911. </td></tr>
  912. <tr><th><h3>CSS3 selectors</h3><span class="links">[<a href="http://caniuse.com/css-sel3">Table</a>] [<a href="http://tests.caniuse.com/?feat=css-sel3&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  913. <div class="test_wrap"><h3>Interact</h3><div id="css-sel30" class="interact"></div><a href="http://tools.css3.info/selectors-test/test.html" target="_blank">Test here</a></div>
  914. </td></tr>
  915. <tr><th><h3>Drag and Drop</h3><span class="links">[<a href="http://caniuse.com/dragndrop">Table</a>] [<a href="http://tests.caniuse.com/?feat=dragndrop&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  916. <div class="test_wrap"><h3>Interact</h3><div id="dragndrop0" class="interact"></div><a href="http://html5demos.com/drag">Test here</a></div>
  917. </td></tr>
  918. <tr><th><h3>WAI-ARIA Accessibility features</h3><span class="links">[<a href="http://caniuse.com/wai-aria">Table</a>] [<a href="http://tests.caniuse.com/?feat=wai-aria&prefix=all">Single feat</a>]</span></th><td class="current partial">&nbsp;</td><td>
  919. </td></tr>
  920. <tr><th><h3>Text API for Canvas</h3><span class="links">[<a href="http://caniuse.com/canvas-text">Table</a>] [<a href="http://tests.caniuse.com/?feat=canvas-text&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  921. <div class="test_wrap"><h3>Auto (m)</h3><div id="canvas-text0" class="auto pass"></div><script>setResult('canvas-text0', Modernizr.canvastext);</script><div class="info">Modernizr test for: "canvastext"</div></div>
  922. </td></tr>
  923. <tr><th><h3>WebGL - 3D Canvas graphics</h3><span class="links">[<a href="http://caniuse.com/webgl">Table</a>] [<a href="http://tests.caniuse.com/?feat=webgl&prefix=all">Single feat</a>]</span></th><td class="current partial">&nbsp;</td><td>
  924. <div class="test_wrap"><h3>Auto (m)</h3><div id="webgl0" class="auto pass"></div><script>setResult('webgl0', Modernizr.webgl);</script><div class="info">Modernizr test for: "webgl"</div></div>
  925. <div class="test_wrap"><h3>Visual-square</h3><div id="webgl1" class="visual-square"></div><div class="square"><canvas width="30" height="30" style="background:red;" id="webgl_canvas"></canvas>
  926. <script>
  927. var elem = $('#webgl_canvas')[0], g;
  928. try {
  929. g = elem.getContext && elem.getContext('experimental-webgl');
  930. } catch(e){};
  931. if (g){
  932. g.clearColor(0,1,0,1);
  933. g.clear(g.COLOR_BUFFER_BIT);
  934. }
  935. </script>
  936. </div></div>
  937. </td></tr>
  938. <tr><th><h3>SVG fonts</h3><span class="links">[<a href="http://caniuse.com/svg-fonts">Table</a>] [<a href="http://tests.caniuse.com/?feat=svg-fonts&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  939. <div class="test_wrap"><h3>Visual</h3><div id="svg-fonts0" class="visual"></div><div class="vis_test"><style>
  940. @font-face {
  941. font-family: Windsong_svg;
  942. src: url(caniuse_files/Windsong-webfont.svg#webfontuOn4Eelr) format("svg");
  943. }
  944. #windsong_svg {
  945. font: 18px Windsong_svg;
  946. margin: 5px;
  947. }
  948. </style>
  949. <p id="windsong_svg">Windsong font</p>
  950. </div><div class="vis_ref"><img src="./caniuse_files/windsong_font.png"></div></div>
  951. </td></tr>
  952. <tr><th><h3>TTF/OTF - TrueType and OpenType font support</h3><span class="links">[<a href="http://caniuse.com/ttf">Table</a>] [<a href="http://tests.caniuse.com/?feat=ttf&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  953. <div class="test_wrap"><h3>Visual</h3><div id="ttf0" class="visual"></div><div class="vis_test"><style>
  954. @font-face {
  955. font-family: 'Windsong_otf';
  956. src: url('caniuse_files/Windsong-webfont.otf');
  957. }
  958. #windsong_otf {
  959. font: 18px Windsong_otf;
  960. margin: 5px;
  961. }
  962. </style>
  963. <p id="windsong_otf">Windsong font</p>
  964. </div><div class="vis_ref"><img src="./caniuse_files/windsong_font.png"></div><div class="info">OTF font test</div></div>
  965. <div class="test_wrap"><h3>Visual</h3><div id="ttf1" class="visual"></div><div class="vis_test"><style>
  966. @font-face {
  967. font-family: 'Windsong_ttf';
  968. src: url('caniuse_files/Windsong-webfont.ttf');
  969. }
  970. #windsong_ttf {
  971. font: 18px Windsong_ttf;
  972. margin: 5px;
  973. }
  974. </style>
  975. <p id="windsong_ttf">Windsong font</p>
  976. </div><div class="vis_ref"><img src="./caniuse_files/windsong_font.png"></div><div class="info">TTF font test</div></div>
  977. </td></tr>
  978. <tr><th><h3>WOFF - Web Open Font Format</h3><span class="links">[<a href="http://caniuse.com/woff">Table</a>] [<a href="http://tests.caniuse.com/?feat=woff&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  979. <div class="test_wrap"><h3>Visual</h3><div id="woff0" class="visual"></div><div class="vis_test"><style>
  980. @font-face {
  981. font-family: 'Windsong_woff';
  982. src: url('caniuse_files/Windsong-webfont.woff');
  983. }
  984. #windsong_woff {
  985. font: 18px Windsong_woff;
  986. margin: 5px;
  987. }
  988. </style>
  989. <p id="windsong_woff">Windsong font</p>
  990. </div><div class="vis_ref"><img src="./caniuse_files/windsong_font.png"></div></div>
  991. </td></tr>
  992. <tr><th><h3>Progress &amp; Meter</h3><span class="links">[<a href="http://caniuse.com/progressmeter">Table</a>] [<a href="http://tests.caniuse.com/?feat=progressmeter&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  993. <div class="test_wrap"><h3>Visual</h3><div id="progressmeter0" class="visual"></div><div class="vis_test"><div style="display:inline-block;vertical-align:middle">
  994. <progress value="5" max="10">fail</progress>
  995. <meter value="5" max="10">fail</meter>
  996. </div></div><p class="condition">Progress and meter widgets at 50%</p></div>
  997. </td></tr>
  998. <tr><th><h3>Datalist element</h3><span class="links">[<a href="http://caniuse.com/datalist">Table</a>] [<a href="http://tests.caniuse.com/?feat=datalist&prefix=all">Single feat</a>]</span></th><td class="current unknown">&nbsp;</td><td>
  999. <div class="test_wrap"><h3>Interact</h3><div id="datalist0" class="interact"></div><input type="text" list="mydatalist">
  1000. <datalist id="mydatalist">
  1001. <option value="foo">foo</option>
  1002. <option value="bar">bar</option>
  1003. <option value="foobar">foobar</option>
  1004. </datalist><p class="condition">Show "foo" and "foobar" as options when "f" is entered</p></div>
  1005. </td></tr>
  1006. <tr><th><h3>Form validation</h3><span class="links">[<a href="http://caniuse.com/form-validation">Table</a>] [<a href="http://tests.caniuse.com/?feat=form-validation&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  1007. <div class="test_wrap"><h3>Interact</h3><div id="form-validation0" class="interact"></div><iframe src="./caniuse_files/form_validation.html" width="300" height="80"></iframe><p class="condition">Form should show warning and NOT submit</p></div>
  1008. </td></tr>
  1009. <tr><th><h3>MPEG-4/H.264 video format</h3><span class="links">[<a href="http://caniuse.com/mpeg4">Table</a>] [<a href="http://tests.caniuse.com/?feat=mpeg4&prefix=all">Single feat</a>]</span></th><td class="current fail">&nbsp;</td><td>
  1010. <div class="test_wrap"><h3>Auto</h3><div id="mpeg40" class="auto pass"></div><script>
  1011. var v = document.createElement('video');
  1012. setResult('mpeg40', !!(v.canPlayType && v.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"').replace(/no/, '')));
  1013. </script></div>
  1014. <div class="test_wrap"><h3>Interact</h3><div id="mpeg41" class="interact"></div><video src="video.mp4" width="160" height="120" controls="">fail</video><div class="info">Video, no MIME, no type attribute.</div></div>
  1015. <div class="test_wrap"><h3>Interact</h3><div id="mpeg42" class="interact"></div><video width="160" height="120" controls="">
  1016. <source src="video.mp4" type="video/ogg; codecs=&quot;theora, vorbis&quot;">
  1017. </video><div class="info">Video with source element</div></div>
  1018. <div class="test_wrap"><h3>Interact</h3><div id="mpeg43" class="interact"></div><video width="160" height="120" controls="">
  1019. <source src="mimevid.php?type=.mp4" type="video/mp4; codecs=&quot;avc1.42E01E, mp4a.40.2&quot;">
  1020. </video><div class="info">Video with source element and MIME set</div></div>
  1021. </td></tr>
  1022. <tr><th><h3>Ogg/Theora video format</h3><span class="links">[<a href="http://caniuse.com/ogv">Table</a>] [<a href="http://tests.caniuse.com/?feat=ogv&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  1023. <div class="test_wrap"><h3>Auto</h3><div id="ogv0" class="auto pass"></div><script>
  1024. var v = document.createElement('video');
  1025. setResult('ogv0', !!(v.canPlayType && v.canPlayType('video/ogg; codecs="theora"').replace(/no/, '')));
  1026. </script></div>
  1027. <div class="test_wrap"><h3>Interact</h3><div id="ogv1" class="interact"></div><video src="video.ogv" width="160" height="120" controls="">fail</video><div class="info">Video, no MIME, no type attribute.</div></div>
  1028. <div class="test_wrap"><h3>Interact</h3><div id="ogv2" class="interact"></div><video width="160" height="120" controls="">
  1029. <source src="mimevid.php?type=.ogv" type="video/ogg; codecs=&quot;theora, vorbis&quot;">
  1030. </video><div class="info">Video with source element and MIME set</div></div>
  1031. <div class="test_wrap"><h3>Interact</h3><div id="ogv3" class="interact"></div><video width="160" height="120" controls="">
  1032. <source src="video.ogv" type="video/ogg; codecs=&quot;theora, vorbis&quot;">
  1033. </video><div class="info">Video with source element</div></div>
  1034. </td></tr>
  1035. <tr><th><h3>WebM/VP8 video format</h3><span class="links">[<a href="http://caniuse.com/webm">Table</a>] [<a href="http://tests.caniuse.com/?feat=webm&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  1036. <div class="test_wrap"><h3>Auto</h3><div id="webm0" class="auto pass"></div><script>
  1037. var v = document.createElement('video');
  1038. setResult('webm0', !!(v.canPlayType && v.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/no/, '')));
  1039. </script></div>
  1040. <div class="test_wrap"><h3>Interact</h3><div id="webm1" class="interact"></div><video src="video.webm" width="160" height="120" controls="">fail</video><div class="info">Video, no MIME, no type attribute.</div></div>
  1041. <div class="test_wrap"><h3>Interact</h3><div id="webm2" class="interact"></div><video width="160" height="120" controls="">
  1042. <source src="video.webm" type="video/ogg; codecs=&quot;theora, vorbis&quot;">
  1043. </video><div class="info">Video with source element</div></div>
  1044. <div class="test_wrap"><h3>Interact</h3><div id="webm3" class="interact"></div><video width="160" height="120" controls="">
  1045. <source src="mimevid.php?type=.webm" type="video/webm; codecs=&quot;vp8, vorbis&quot;">
  1046. </video><div class="info">Video with source element and MIME set</div></div>
  1047. </td></tr>
  1048. <tr><th><h3>Animated PNG (APNG) [unoff]</h3><span class="links">[<a href="http://caniuse.com/apng">Table</a>] [<a href="http://tests.caniuse.com/?feat=apng&prefix=all">Single feat</a>]</span></th><td class="current unknown">&nbsp;</td><td>
  1049. <div class="test_wrap"><h3>Auto</h3><div id="apng0" class="auto fail"></div><script>
  1050. (function() {
  1051. // From: http://eligrey.com/blog/post/apng-feature-detection
  1052. var apngTest = new Image();
  1053. var canv = document.createElement("canvas");
  1054. var apng_supported = null;
  1055. if(canv.getContext && canv.getContext("2d").drawImage) {
  1056. var ctx = canv.getContext("2d");
  1057. var apng_supported = false;
  1058. apngTest.onload = function () {
  1059. ctx.drawImage(apngTest, 0, 0);
  1060. apng_supported = ( ctx.getImageData(0, 0, 1, 1).data[3] === 0 );
  1061. setResult('apng0', apng_supported);
  1062. };
  1063. apngTest.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACGFjVEwAAAABAAAAAcMq2TYAAAANSURBVAiZY2BgYPgPAAEEAQB9ssjfAAAAGmZjVEwAAAAAAAAAAQAAAAEAAAAAAAAAAAD6A+gBAbNU+2sAAAARZmRBVAAAAAEImWNgYGBgAAAABQAB6MzFdgAAAABJRU5ErkJggg==";
  1064. } else {
  1065. setResult('apng0', false);
  1066. }
  1067. }());
  1068. </script><div class="info">Test for second frame using Canvas element </div></div>
  1069. <div class="test_wrap"><h3>Visual</h3><div id="apng1" class="visual"></div><div class="vis_test"><img src="./caniuse_files/apng_test.png" width="16" height="16"></div><p class="condition">Must animate</p></div>
  1070. </td></tr>
  1071. <tr><th><h3>CSS Canvas Drawings [unoff]</h3><span class="links">[<a href="http://caniuse.com/css-canvas">Table</a>] [<a href="http://tests.caniuse.com/?feat=css-canvas&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;<span>-pre-</span></td><td>
  1072. <div class="test_wrap"><h3>Auto</h3><div id="css-canvas0" class="auto pass"></div><script>
  1073. setResult('css-canvas0', 'getCSSCanvasContext' in document)
  1074. </script><div class="info">'getCSSCanvasContext' in document</div></div>
  1075. </td></tr>
  1076. <tr><th><h3>CSS Reflections [unoff]</h3><span class="links">[<a href="http://caniuse.com/css-reflections">Table</a>] [<a href="http://tests.caniuse.com/?feat=css-reflections&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;<span>-pre-</span></td><td>
  1077. <div class="test_wrap"><h3>Auto (m)</h3><div id="css-reflections0" class="auto pass"></div><script>setResult('css-reflections0', Modernizr.cssreflections);</script><div class="info">Modernizr test for: "cssreflections"</div></div>
  1078. <div class="test_wrap"><h3>Visual-square</h3><div id="reflections1" class="visual-square"></div><div class="square">
  1079. <div style="width:30px; height:30px; overflow:hidden; position:relative; background:red;">
  1080. <div style="background: lime;
  1081. height: 30px;
  1082. position: relative;
  1083. top: -30px;
  1084. width: 30px;
  1085. -webkit-box-reflect: below 0;
  1086. -moz-box-reflect: below 0;
  1087. -ms-box-reflect: below 0;
  1088. -o-box-reflect: below 0;
  1089. box-reflect: below 0;
  1090. "></div>
  1091. </div></div></div>
  1092. </td></tr>
  1093. <tr><th><h3>Web SQL Database [unoff]</h3><span class="links">[<a href="http://caniuse.com/sql-storage">Table</a>] [<a href="http://tests.caniuse.com/?feat=sql-storage&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  1094. <div class="test_wrap"><h3>Auto (m)</h3><div id="sql-storage0" class="auto pass"></div><script>setResult('sql-storage0', Modernizr.websqldatabase);</script><div class="info">Modernizr test for: "websqldatabase"</div></div>
  1095. </td></tr>
  1096. <tr><th><h3>Stream API [unoff]</h3><span class="links">[<a href="http://caniuse.com/stream">Table</a>] [<a href="http://tests.caniuse.com/?feat=stream&prefix=all">Single feat</a>]</span></th><td class="current unknown">&nbsp;</td><td>
  1097. <div class="test_wrap"><h3>Auto</h3><div id="stream0" class="auto fail"></div><script>
  1098. setResult('stream0', "getUserMedia" in navigator);
  1099. </script><div class="info">Test for "getUserMedia" in navigator object</div></div>
  1100. </td></tr>
  1101. <tr><th><h3>CSS Masks [unoff]</h3><span class="links">[<a href="http://caniuse.com/css-masks">Table</a>] [<a href="http://tests.caniuse.com/?feat=css-masks&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;<span>-pre-</span></td><td>
  1102. <div class="test_wrap"><h3>Visual</h3><div id="css-masks0" class="visual"></div><div class="vis_test"><style>
  1103. #masktest {
  1104. -webkit-mask-image: url(caniuse_files/alpha.png);
  1105. -moz-mask-image: url(caniuse_files/alpha.png);
  1106. -ms-mask-image: url(caniuse_files/alpha.png);
  1107. -o-mask-image: url(caniuse_files/alpha.png);
  1108. mask-image: url(caniuse_files/alpha.png);
  1109. background: black;
  1110. height: 16px;
  1111. width: 32px;
  1112. display: inline-block;
  1113. margin-left: -32px;
  1114. }
  1115. #masktestbg {
  1116. display: inline-block;
  1117. background: lime;
  1118. height: 16px;
  1119. width: 32px;
  1120. left: -32px;
  1121. }
  1122. </style>
  1123. <div id="masktestbg"></div><div id="masktest"></div>
  1124. </div><div class="vis_ref"><img src="./caniuse_files/png_alpha_result.png"></div><div class="info">mask-image: url(caniuse_files/alpha.png);</div></div>
  1125. </td></tr>
  1126. <tr><th><h3>CSS3 Text-overflow [unoff]</h3><span class="links">[<a href="http://caniuse.com/text-overflow">Table</a>] [<a href="http://tests.caniuse.com/?feat=text-overflow&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;</td><td>
  1127. <div class="test_wrap"><h3>Visual</h3><div id="text-overflow0" class="visual"></div><div class="vis_test"><style>
  1128. #textof {
  1129. width: 4em;
  1130. display: inline-block;
  1131. overflow: hidden;
  1132. font: 16px courier, monospace;
  1133. -webkit-text-overflow: ellipsis;
  1134. -moz-text-overflow: ellipsis;
  1135. -ms-text-overflow: ellipsis;
  1136. -o-text-overflow: ellipsis;
  1137. text-overflow: ellipsis;
  1138. text-overflow: ellipsis;
  1139. }
  1140. </style>
  1141. <div id="textof">
  1142. abcdefghijklmnopqrstuvwxyz
  1143. </div></div><p class="condition">Should end with ellipsis</p><div class="info">text-overflow: ellipsis;</div></div>
  1144. </td></tr>
  1145. <tr><th><h3>CSS text-stroke [unoff]</h3><span class="links">[<a href="http://caniuse.com/text-stroke">Table</a>] [<a href="http://tests.caniuse.com/?feat=text-stroke&prefix=all">Single feat</a>]</span></th><td class="current pass">&nbsp;<span>-pre-</span></td><td>
  1146. <div class="test_wrap"><h3>Visual</h3><div id="text-stroke0" class="visual"></div><div class="vis_test"><style>
  1147. #textstroke {
  1148. -webkit-text-stroke: 2px lime;
  1149. -moz-text-stroke: 2px lime;
  1150. -ms-text-stroke: 2px lime;
  1151. -o-text-stroke: 2px lime;
  1152. text-stroke: 2px lime;
  1153. color: #000;
  1154. font-size: 15px;
  1155. padding: 5px;
  1156. font-family: Times New Roman, Times, serif;
  1157. }
  1158. </style>
  1159. <div id="textstroke">
  1160. green stroked text
  1161. </div></div><div class="vis_ref"><img src="./caniuse_files/stroked-text.png"></div><div class="info">text-stroke: 2px lime;</div></div>
  1162. </td></tr>
  1163. <tr><th><h3>EOT - Embedded OpenType fonts [unoff]</h3><span class="links">[<a href="http://caniuse.com/eot">Table</a>] [<a href="http://tests.caniuse.com/?feat=eot&prefix=all">Single feat</a>]</span></th><td class="current fail">&nbsp;</td><td>
  1164. <div class="test_wrap"><h3>Visual</h3><div id="eot0" class="visual"></div><div class="vis_test"><style>
  1165. @font-face {
  1166. font-family: 'Windsong_eot';
  1167. src: url('caniuse_files/Windsong-webfont.eot');
  1168. }
  1169. #windsong_eot {
  1170. font: 18px Windsong_eot;
  1171. margin: 5px;
  1172. }
  1173. </style>
  1174. <p id="windsong_eot">Windsong font</p>
  1175. </div><div class="vis_ref"><img src="./caniuse_files/windsong_font.png"></div></div>
  1176. </td></tr>
  1177. <tr><th><h3>XHTML+SMIL animation [unoff]</h3><span class="links">[<a href="http://caniuse.com/xhtmlsmil">Table</a>] [<a href="http://tests.caniuse.com/?feat=xhtmlsmil&prefix=all">Single feat</a>]</span></th><td class="current fail">&nbsp;</td><td>
  1178. </td></tr>
  1179. </tbody></table>
  1180. <p>Most tests by <a href="http://a.deveria.com/">Alexis Deveria</a>, additional contributions by <a href="http://paulirish.com/">Paul Irish</a></p>
  1181. <script>
  1182. (function() {
  1183. var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
  1184. document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
  1185. }());
  1186. </script><script src="./caniuse_files/ga.js" type="text/javascript"></script>
  1187. <script>
  1188. (function() {
  1189. try {
  1190. var pageTracker = _gat._getTracker("UA-16085010-1");
  1191. pageTracker._trackPageview();
  1192. } catch(err) {}
  1193. }());
  1194. </script></body></html>