That is precisely how it is different. We're not talking about content that is just consumed with our eyes. It is consumed by computer programs also. And we need to convey information in a way that those programs can understand. Hiding semantic meaning in classes is bad, as is pushing presentation information into markup. A screen reader has no way to understand that a div with a class of "errormsg" is anything at all. It is just a generic meaningless item. A screen reader can understand that a paragraph tag with a role of "alert" has a specific defined meaning, this is text content indicating an error or warning message. Just as a div with a class of "navbar-fixed-top" is completely meaningless, and a nav tag conveys the specific meaning of "this is a container holding navigation items".
I'm not sure how using a grid system or something like bootstrap is "pushing presentation into markup".
Regardless of whether you use bootstrap or not you are always going to be specifying CSS classes which describe the presentation of elements, not sure how else it can be done?
Screen reader software will generally ignore anything that it doesn't understand or deem irrelevant.
Whenever I have tried screen readers they will say "ok, there's 3 divs with content here. Let's read them out one at a time or just read the headings and wait for the user to select one". How they are arranged in a grid will be irrelevant to the software.
Does bootstrap present some particular problem for screen readers?
You are yet to explain what you think best practices should be here.
>Regardless of whether you use bootstrap or not you are always going to be specifying CSS classes which describe the presentation of elements, not sure how else it can be done?
>Screen reader software will generally ignore anything that it doesn't understand or deem irrelevant.
Yes, that's the problem. Putting useful information in places where software has no way to understand it.
>Whenever I have tried screen readers they will say "ok, there's 3 divs with content here. Let's read them out one at a time or just read the headings and wait for the user to select one".
And if you had the appropriate tag instead of a meaningless div, it would know what to do. That's the point. Google for semantic html.
> Yes, that's the problem. Putting useful information in places where software has no way to understand it.
You aren't putting "useful information" in the classes, you are putting presentation related information in there, if you are displaying the content non-visually it is irrelevant and can be safely ignored.
Writing semantic HTML is nice for bots and browsers, but there is nothing stopping you from doing this whilst using bootstrap or whatever. Another thing to consider is that bootstrap aims for backwards compatibility so you are going to be restricted by tags that can be supported by old versions of IE etc.
Even if you could write perfect semantic HTML I don't see how that would make it bad practice to organise your pages using grids?
>You aren't putting "useful information" in the classes, you are putting presentation related information in there, if you are displaying the content non-visually it is irrelevant and can be safely ignored.
"This is navigation" is not just presentation, it is real, meaningful information.
>Writing semantic HTML is nice for bots and browsers, but there is nothing stopping you from doing this whilst using bootstrap or whatever
The contortions it would take to make bootstrap work with proper markup would consume far more time than simply writing correct CSS to begin with.
Navigation is not something that is done via CSS.
You provide navigation information inside the HTML itself, via <a href="/whatever.html">Link Title</a>.
If you disable CSS in your browser you can still view the page and it is still perfectly functional and should work fine with a decent screenreader.
I'm hugely confused by what you mean by "proper markup", bootstrap does not do markup itself, you create the markup and apply bootstrap's CSS classes to make it look a certain way.
Could you provide a link to a page that you would use as an example of how it should be "done right"?
It is really unclear what you're talking about. You seem to be suggesting that designing to a grid means somehow disguising your navigational menus, but that is just flagrantly untrue, so jiggy is trying to inquire as to what you actually mean. Rereading your comments will not clarify it, because your comments are either unclear (if you do not mean that grids = disguised nav menus) or very poorly substantiated (if you do mean to say that grids = disguised nav menus).