While you're right, they just define styles for each td and th inside this column, they themselves technically have a display mode, because it display: table-column gives them this opportunity.
If you set <col> as display: none , the corresponding table elements will no longer have the styles applied that were set to col (try this Fiddle ).
Personally, I feel this is a bit of a hacker way that allows an HTML element to behave like a set of CSS rules to dictate styles of table contents.
source share