Uploaded September 2025 | Updated September 2026, 2 weeks ago
The browser comes with native, client-side form validation that works quite well, but the errors have a few issues, from problems with internationalization, and no way to custom style them. Luckily, we can use the same API the browser uses under the hood to customize our errors quite easily!
π Links
β Frontend Mentor Project: frontendmentor.io/challenges/contact-form--G-hYlqKJj?via=kevinpowell
β Starting & finished code: github.com/kevin-powell/fem-contact-form-validation
β First video where I look at the styling: youtu.be/jJgNgNNHqjk
β MDN article on the Constraint Validation API: developer.mozilla.org/en-US/docs/Web/HTML/Guides/Constraint_validation
β Keep up to date with everything I'm up to kevinpowell.co/newsletter
π¬ Come hang out with other devs in my Discord Community discord.gg/nTYCvrK
β Are you a beginner? HTML & CSS for absolute beginners is for you: learn.kevinpowell.co
π Start writing CSS with confidence with CSS Demystified: [https://cssdemystified.com](https://cssdemystified.com/)
π Already mastered CSS? Check out my advanced course, Beyond CSS: https://www.beyondcss.dev/
β Timestamps
00:00 - Introduction
03:00 - Using novalidate and manually checking validation
09:30 - Checking all the form fields
15:00 - Adding error messages
17:30 - Removing the error elements when they are empty
18:52 - Styling for the error states
20:20 - aria-live=βpoliteβ
22:00 - Custom text for each error message
25:25 - Adding the errors for the radio buttons
29:00 - Adding error messages when the user moves out of a form field
32:45 - Removing error messages when a user fixes the problem
34:00 - Adding focus to the first invalid element on submit
36:40 - Fixing the layout when error messages appear
#css
---
Help support my channel
π¨βπ Get a course: kevinpowell.co/courses
π Buy a shirt: cottonbureau.com/people/kevin-powell
π Support me on Patreon: patreon.com/kevinpowell or through YT memberships: youtube.com/@KevinPowell/join
---
π§βπ» My editor: VS Code - code.visualstudio.com
π My theme: One Dark Pro Var Night
π€ My font: Cascadia Code
---
I'm on some other places on the internet too!
If you'd like a behind the scenes and previews of what's coming up on my YouTube channel:
Bluesky: https://bsky.app/profile/kevinpowell.co
Codepen: codepen.io/kevinpowell
Github: github.com/kevin-powell
---
And whatever you do, don't forget to keep on making your corner of the internet just a little bit more awesome!
The browser comes with native, client-side form validation that works quite well, but the errors have a few issues, from problems with internationalization, and no way to custom style them. Luckily, we can use the same API the browser uses under the hood to customize our errors quite easily!
π Links
β Frontend Mentor Project: frontendmentor.io/challenges/contact-form--G-hYlqKJj?via=kevinpowell
β Starting & finished code: github.com/kevin-powell/fem-contact-form-validation
β First video where I look at the styling: youtu.be/jJgNgNNHqjk
β MDN article on the Constraint Validation API: developer.mozilla.org/en-US/docs/Web/HTML/Guides/Constraint_validation
β Keep up to date with everything I'm up to kevinpowell.co/newsletter
π¬ Come hang out with other devs in my Discord Community discord.gg/nTYCvrK
β Are you a beginner? HTML & CSS for absolute beginners is for you: learn.kevinpowell.co
π Start writing CSS with confidence with CSS Demystified: [https://cssdemystified.com](https://cssdemystified.com/)
π Already mastered CSS? Check out my advanced course, Beyond CSS: https://www.beyondcss.dev/
β Timestamps
00:00 - Introduction
03:00 - Using novalidate and manually checking validation
09:30 - Checking all the form fields
15:00 - Adding error messages
17:30 - Removing the error elements when they are empty
18:52 - Styling for the error states
20:20 - aria-live=βpoliteβ
22:00 - Custom text for each error message
25:25 - Adding the errors for the radio buttons
29:00 - Adding error messages when the user moves out of a form field
32:45 - Removing error messages when a user fixes the problem
34:00 - Adding focus to the first invalid element on submit
36:40 - Fixing the layout when error messages appear
#css
---
Help support my channel
π¨βπ Get a course: kevinpowell.co/courses
π Buy a shirt: cottonbureau.com/people/kevin-powell
π Support me on Patreon: patreon.com/kevinpowell or through YT memberships: youtube.com/@KevinPowell/join
---
π§βπ» My editor: VS Code - code.visualstudio.com
π My theme: One Dark Pro Var Night
π€ My font: Cascadia Code
---
I'm on some other places on the internet too!
If you'd like a behind the scenes and previews of what's coming up on my YouTube channel:
Bluesky: https://bsky.app/profile/kevinpowell.co
Codepen: codepen.io/kevinpowell
Github: github.com/kevin-powell
---
And whatever you do, don't forget to keep on making your corner of the internet just a little bit more awesome!



π Already mastered CSS? Check out my advanced course, Beyond CSS: https://www.beyondcss.dev/
β Timestamps
00:00 - Introduction
00:55 - Centering text with a max-width
04:30 - Using nesting for modifiers
06:20 - Forcing styles to fix things like stacking contexts
#css
Help support my channel
π¨βπ Get a course: https://www.kevinpowell.co/courses
π Buy a shirt: https://cottonbureau.com/people/kevin-powell
π Support me on Patreon: https://www.patreon.com/kevinpowell or through YT memberships: https://youtube.com/@KevinPowell/join
π§βπ» My editor: VS Code - https://code.visualstudio.com/
π My theme: One Dark Pro Var Night
π€ My font: Cascadia Code
Im on some other places on the internet too!
If youd like a behind the scenes and previews of whats coming up on my YouTube channel:
Bluesky: https://bsky.app/profile/kevinpowell.co
Codepen: https://codepen.io/kevinpowell/
Github: https://github.com/kevin-powell
And whatever you do, dont forget to keep on making your corner of the internet just a little bit more awesome! 3 powerful CSS nesting tricks](https://i.ytimg.com/vi/hiwvjsmD2iY/mqdefault.jpg)

π Already mastered CSS? Check out my advanced course, Beyond CSS: https://www.beyondcss.dev/
#css
β Timestamps
00:00 - Introduction
00:46 - Battle 235
08:07 - Battle 236
23:44 - Battle 237
#css
Help support my channel
π¨βπ Get a course: https://www.kevinpowell.co/courses
π Buy a shirt: https://cottonbureau.com/people/kevin-powell
π Support me on Patreon: https://www.patreon.com/kevinpowell or through YT memberships: https://youtube.com/@KevinPowell/join
π§βπ» My editor: VS Code - https://code.visualstudio.com/
π My theme: One Dark Pro Var Night
π€ My font: Cascadia Code
Im on some other places on the internet too!
If youd like a behind the scenes and previews of whats coming up on my YouTube channel:
Bluesky: https://bsky.app/profile/kevinpowell.co
Codepen: https://codepen.io/kevinpowell/
Github: https://github.com/kevin-powell
And whatever you do, dont forget to keep on making your corner of the internet just a little bit more awesome! Challenging you to a CSS Battle](https://i.ytimg.com/vi/hoDmeE72G7A/mqdefault.jpg)




π Already mastered CSS? Check out my advanced course, Beyond CSS: https://www.beyondcss.dev/
β Timestamps
00:00 - Introduction
01:00 - The HTML
04:00 - form-group vs. wrapping inside a label
06:25 - Continuing the HTML
09:40 - Using a fieldset for the radio buttons
15:30 - Adding the checkbox
18:00 - Starting the CSS
24:20 - Creating the layout for the form
31:20 - Styling the inputs
35:45 - Adding the star to the required labels
39:20 - Fixing the star for the fieldset and radio labels
44:00 - Adding the border and background to the radio selectors
49:00 - The fieldset layout
51:20 - The height of the text area without magic numbers
54:50 - Styling the button
56:60 - Making the entire radio button area clickable
1:00:00 - Error states
Help support my channel
π¨βπ Get a course: https://www.kevinpowell.co/courses
π Buy a shirt: https://cottonbureau.com/people/kevin-powell
π Support me on Patreon: https://www.patreon.com/kevinpowell or through YT memberships: https://youtube.com/@KevinPowell/join
π§βπ» My editor: VS Code - https://code.visualstudio.com/
π My theme: One Dark Pro Var Night
π€ My font: Cascadia Code
Im on some other places on the internet too!
If youd like a behind the scenes and previews of whats coming up on my YouTube channel:
Bluesky: https://bsky.app/profile/kevinpowell.co
Codepen: https://codepen.io/kevinpowell/
Github: https://github.com/kevin-powell
And whatever you do, dont forget to keep on making your corner of the internet just a little bit more awesome! A deceptively complex form / HTML & CSS / Frontend Mentor](https://i.ytimg.com/vi/jJgNgNNHqjk/mqdefault.jpg)

π Already mastered CSS? Check out my advanced course, Beyond CSS: https://www.beyondcss.dev/
Im on some other places on the internet too!
If youd like a behind the scenes and previews of whats coming up on my YouTube channel:
Bluesky: https://bsky.app/profile/kevinpowell.co
Codepen: https://codepen.io/kevinpowell/
Github: https://github.com/kevin-powell
And whatever you do, dont forget to keep on making your corner of the internet just a little bit more awesome! New CSS features to know for 2025](https://i.ytimg.com/vi/jSCgZqoebsM/mqdefault.jpg)

