input:not(:placeholder-shown):invalid { /* styles here only apply *after* the user has entered data */ /* rather than immediately after the input is selected */}
input:not(:placeholder-shown):invalid { /* styles here only apply *after* the user has entered data */ /* rather than immediately after the input is selected */}
You can do an impressive amount of form validation with just HTML attributes. You can make the user experience pretty clean and clear with CSS selectors. But