<!DOCTYPE html> <html> <head> <title>Test inheritance into captions</title> <style> /** * The idea is that "color" inherits by default while "border-color" does * not. So if the former is red and the latter is green on a parent, and * the child's border-color is set to "inherit", it'll be green only if * the child is inheriting from the parent. If not, it'll either be * whatever the border-color is on what it's inheriting from, which will * be red if what it's inheriting from has the default (currentColor) * border-color). */ /* 't' for "test" */ * { color: red; border: 0px hidden red; background: transparent } .t, .t2 { border-color: green } .t > caption { border-color: inherit; border-style: solid; border-width: 10px } .t2 > caption { border-style: solid; border-width: 10px } .t2 > caption.test { border-color: inherit } </style> <script> function makeCaption() { return document.createElement("caption"); } window.onload = function() { var lst = document.getElementsByClassName("d"); for (var i = 0; i < lst.length; ++i) { lst[i].appendChild(makeCaption()); } var lst = document.getElementsByClassName("d2"); for (var i = 0; i < lst.length; ++i) { lst[i].firstChild.className = "test"; } } </script> </head> <body> <table class="t"><caption></caption></table> <table class="t2 d2"><caption></caption></table> <table class="t d"></table> <div class="t d"></div> <div style="display: table" class="t d"></div> <table class="t2 d d2"></table> <div class="t2 d d2"></div> <div style="display: table" class="t2 d d2"></div> </body> </html>