Detailed answer
Thead, tbody, and tfoot identify header, body, and summary groups.
They make structure and group styling clearer. Browsers may insert tbody into the DOM even when it is absent from source. A selector that assumes tr is a direct child of table can therefore miss the rendered rows.
Example
<table><thead><tr><th>Topic</th><th>Count</th></tr></thead><tbody><tr><td>HTML</td><td>10</td></tr></tbody><tfoot><tr><th>Total</th><td>10</td></tr></tfoot></table>
Understanding the behavior
Thead, tbody and tfoot group related rows and provide useful structural hooks. They do not replace correct th cells or header associations. Browsers can insert a tbody in the parsed DOM even when the source omits it.
Practical implementation notes
When a selector such as table > tr does not match, inspect the parsed tree for an inserted row group. Write CSS and DOM queries against the structure that actually exists.
How to check it
Inspect the Elements panel for an inserted tbody and adjust the selector accordingly.
Expected result
The selector matches the parsed row group rather than an assumed source structure.
Watch out: Inspect the parsed DOM before debugging row selectors.
Read the reference ↗