Screen readers assume that the content inside the table is tabular and reads it as such. For example. "row 1, column 1: (contents)". If you use tables to host your site, this does not necessarily make sense. You tell the end client that you have data with a table value when you are not actually doing this.
In contrast, div have no meaning other than a “section,” so screen readers are not trying to label them. You can use divs to create arbitrary visual breaks in your layout without affecting the markup value.
This is what we mean when we say “semantic” markup. Semantic means that the markup accurately describes the meaning of the content inside it - tables wrap around tabular data, UL wrap unordered lists, etc.
Rex m
source share