Correct me if I’m mistaken, but AFAIK, unknown HTML tags in markup (i.e. tags not defined in the HTML spec, like say, <foobar>) will eventually be treated as a regular <div> in an HTML 5 browser environment.
I’m thinking: how supportable is this practice? I mean, if I use unknown HTML tags in my markup, what pitfalls can I expect? Will a velociraptor pounce on me within the next few seconds?
The reason I ask is that if these tags defer to <div>, I can potentially use these tags in a more semantic manner than, say, assigning class names that identify modules. Have a look at this article, for example, of a .media class. Now what if instead of writing up that CSS to target .media, I make it target <media> instead? In my opinion, that makes the markup much more readable and maintainable, but I do acknowledge that it’s not “correct” HTML.
EDIT
Just to be transparent, I did find this SO question from a few years back. It’s been closed as off-topic, but I feel that I have a valid point in my own wording. It’s a close duplicate, I admit, but it’s from a few years back, so there might have been changes in the general environ of opinions across web developers about the topic.
You should always approach HTML as it is defined in its respective specification. “Defining” new tags is a bit of an extreme approach. It might pass a browser check because it implements various failsafes, but there is no guarantee of this. You’re entering the land of Undefined Behaviour, at best. Not to mention you will fail validation tests, but you seem to be aware of that.
If you wish to be more semantically expressive in your markup, you can use HTML5 which defines quite a bit of more descriptive tags for describing the structure of your page instead of generic
divs which need to be appendedids orclasses.In the end, a short answer: No, it’s bad practice, you shouldn’t do it and there could be unforeseen problems later on in your development.