Accessible Tables: scope, headers and id
A table a screen reader can read is a table with named headers. scope handles simple tables, headers and id handle the hard ones.
963 published notes across every category.
A table a screen reader can read is a table with named headers. scope handles simple tables, headers and id handle the hard ones.
A table with eight columns cannot fit on a phone. Four patterns that keep the data usable, and the trade off each one makes.
Every form is a container, a set of named controls and a submit button. Learn what action and method do, why name matters more than id, and what the b...
One element, more than twenty types. Choosing the right one gives you the correct mobile keyboard, free validation and better autofill, at no cost.
A label names a field for every reader and grows its click target. Two ways to bind one, and the reasons a form without labels is not usable.
Checkboxes for many answers, radios for one. The name attribute is what groups radios, and fieldset with legend is what makes either group make sense.
Dropdowns done properly: grouping options, multiple selection, the placeholder option trick, and when a datalist beats a select.
Three controls with their own rules: a textarea whose value is its content, a file input that needs the right enctype, and hidden fields that are not...
Three button types, one attribute, and a default that causes more accidental submissions than any other rule in HTML.
The browser can check most of a form before it is sent, with no JavaScript. Learn the attributes, the CSS hooks, and why none of it replaces server va...
Two methods, two very different places for your data. Learn which to use, what is safe in a URL, and why neither is encrypted on its own.
Two pages can look identical and be worlds apart. Semantic markup is what tells browsers, screen readers and search engines what each part of a page a...