<!DOCTYPE html> <!-- Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ --> <html lang="en-US" class="reftest-wait"> <head> <meta charset="UTF-8"> <title>CSS Test: CSS display:contents; generated content</title> <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=907396"> <link rel="help" href="http://dev.w3.org/csswg/css-display"> <style type="text/css"> body,html { color:black; background-color:white; } div { display:inline; } .test { display: contents; content: "content"; color: lime; } .contents { display: contents; color: green; } .s1 {display: none;} .s2 {display: none;} .s3 {display: contents;} .s5 {display: contents;} .s7 {display: none;} .s8 {display: none;} .s9 {display: contents;} .s11 {display: contents;} .before::before { display: contents; content:"before"; } .after::after { display: contents; content:"after"; } </style> <script> function setup() { document.body.offsetHeight; document.querySelector('.t1').className = 'contents'; document.body.offsetHeight; document.querySelector('.t2').style.display = 'none'; document.body.offsetHeight; document.querySelector('.t3').className = 'contents'; document.body.offsetHeight; document.querySelector('.t4').style.display = 'none'; document.body.offsetHeight; document.querySelector('.t5').className = 'contents'; document.body.offsetHeight; document.querySelector('.t6').style.display = 'none'; document.body.offsetHeight; document.querySelector('.t7').className = 'contents'; document.body.offsetHeight; document.querySelector('.t8').style.display = 'none'; document.body.offsetHeight; document.querySelector('.t9').className = 'contents'; document.body.offsetHeight; document.querySelector('.t10').style.display = 'none'; document.body.offsetHeight; document.querySelector('.t11').className = 'contents'; document.body.offsetHeight; document.querySelector('.t12').style.display = 'none'; document.body.offsetHeight; document.querySelector('.t13').className = 'contents'; document.body.offsetHeight; document.querySelector('.s1').className = 'contents'; document.body.offsetHeight; document.querySelector('.s2').style.display = 'inline'; document.body.offsetHeight; document.querySelector('.s3').style.display = 'normal'; document.body.offsetHeight; document.querySelector('.s4').className = 'contents'; document.body.offsetHeight; document.querySelector('.s5').style.display = 'none'; document.body.offsetHeight; document.querySelector('.s6').style.display = 'none'; document.body.offsetHeight; document.querySelector('.s7').className = 'contents'; document.body.offsetHeight; document.querySelector('.s8').style.display = 'inline'; document.body.offsetHeight; document.querySelector('.s9').style.display = 'normal'; document.body.offsetHeight; document.querySelector('.s10').className = 'contents'; document.body.offsetHeight; document.querySelector('.s11').style.display = 'none'; document.body.offsetHeight; document.querySelector('.s12').style.display = 'none'; document.body.offsetHeight; } function runTest() { var doc = document; var win = window; setup(); var e = doc.querySelectorAll('*'); for (i=0; i < e.length; ++i) { var elm = e[i]; if (win.getComputedStyle(elm).display == 'contents') { var c = elm.childNodes[0]; if (c) { var next = c.nextSibling; elm.removeChild(c); elm.insertBefore(c,next); } var c = elm.childNodes[1]; if (c) { var next = c.nextSibling; elm.removeChild(c); elm.insertBefore(c,next); } var c = elm.childNodes.length ? elm.childNodes[elm.childNodes.length-1] : null; if (c) { elm.removeChild(c); elm.appendChild(c); } } } document.documentElement.className = ''; } </script> </head> <body onload="runTest()"> <div class="test"><span>A a</span></div> <div class="test"><span class="t1">t1</span></div> <div class="test"><span class="t2">t2</span></div> <div class="contents before">1<span>B b</span>2</div> <div class="contents after">1<span>C c</span>2</div> <div class="contents before after">1<span>D d</span>2</div> <div class="contents before">1<span class="t5">B b</span>2</div> <div class="contents after">1<span class="t6">C c</span>2</div> <div class="contents before after">1<span class="t7">D d</span>2</div> <div class="contents"> <div class="test"><span>span</span></div> <div class="test"><span class="t3">t3</span></div> <div class="test"><span class="t4">t4</span></div> <div class="contents before">1<span>span</span>2</div> <div class="contents after">1<span>span</span>2</div> <div class="contents before after">1<span>span</span>2</div> <div class="contents before">1<span class="t8">span</span>2</div> <div class="contents after">1<span class="t9">span</span>2</div> <div class="contents before after">1<span class="t10">span</span>2</div> <div class="contents before">1<span class="t11">span</span>2</div> <div class="contents after">1<span class="t12">span</span>2</div> <div class="contents before after">1<span class="t13">span</span>2</div> </div> <div class="contents"><span class="s1"> <div class="test"><span>span</span></div> <div class="contents before">1<span>span</span>2</div> <div class="contents after">1<span>span</span>2</div> <div class="contents before after">1<span>span</span>2</div> </span></div> <div class="contents"><span class="s2"> <div class="test"><span>span</span></div> <div class="contents before">1<span>span</span>2</div> <div class="contents after">1<span>span</span>2</div> <div class="contents before after">1<span>span</span>2</div> </span></div> <div class="contents"><span class="s3"> <div class="test"><span>span</span></div> <div class="contents before">1<span>span</span>2</div> <div class="contents after">1<span>span</span>2</div> <div class="contents before after">1<span>span</span>2</div> </span></div> <div class="contents"><span class="s4"> <div class="test"><span>span</span></div> <div class="contents before">1<span>span</span>2</div> <div class="contents after">1<span>span</span>2</div> <div class="contents before after">1<span>span</span>2</div> </span></div> <div class="contents"><span class="s5"> <div class="test"><span>span</span></div> <div class="contents before">1<span>span</span>2</div> <div class="contents after">1<span>span</span>2</div> <div class="contents before after">1<span>span</span>2</div> </span></div> <div class="contents"><span class="s6"> <div class="test"><span>span</span></div> <div class="contents before">1<span>span</span>2</div> <div class="contents after">1<span>span</span>2</div> <div class="contents before after">1<span>span</span>2</div> </span></div> <div class="contents before"><span class="s7"> <div class="contents before">1<span>span</span>2</div> <div class="contents after">1<span>span</span>2</div> <div class="contents before after">1<span>span</span>2</div> </span></div> <div class="contents after"><span class="s8"> <div class="contents before">1<span>span</span>2</div> <div class="contents after">1<span>span</span>2</div> <div class="contents before after">1<span>span</span>2</div> </span></div> <div class="contents"><span class="s9"> <div class="contents before">1<span>span</span>2</div> <div class="contents after">1<span>span</span>2</div> <div class="contents before after">1<span>span</span>2</div> </span></div> <div class="contents before after"><span class="s10"> <div class="test"><span>span</span></div> <div class="contents before">1<span>span</span>2</div> <div class="contents after">1<span>span</span>2</div> <div class="contents before after">1<span>span</span>2</div> </span></div> <div class="contents before"><span class="s11"> <div class="test"><span>span</span></div> <div class="contents before">1<span>span</span>2</div> <div class="contents after">1<span>span</span>2</div> <div class="contents before after">1<span>span</span>2</div> </span></div> <div class="contents after"><span class="s12"> <div class="test"><span>span</span></div> <div class="contents before">1<span>span</span>2</div> <div class="contents after">1<span>span</span>2</div> <div class="contents before after">1<span>span</span>2</div> </span></div> </body> </html>