I am creating a contact form that will be included on several different sites.
The styles of the contact form and the styles of the site will both be included and I can’t very well predict the styles of the site. I want the styles of the contact form to be easily over-ruled by the styles of the site, but I don’t want to styles of the contact form to be accidentally over-ruled.
For example, if the site developer wants to change the color of the submit button, it should be easily done without using !important or some excessively specific #id #id element .class #id element.class type of selector.
But, on the other hand, if the site developer wrote styles using selectors like input { background: yellow; } or #site-wrapper input { background: yellow; } I don’t want it to over-rule my contact form styles that refer to classes, .contact_input { background: white; }
So my question is, what would the best practices be in this situation? I was thinking of putting an ID on my form and adding that to every selector, so my selectors would become #contactform .contact_input { background: white; } and I think that would work in terms of avoiding conflicts, but I’m wondering if there is a better way to do it, because that seems a little ineffecient in terms of page rendering. Maybe it’s not a big deal, but I just thought I’d throw it out there and see what people think.
That’s a quite hard cause both, the selector itself and its location in sheet do matter. Also the fact that there is no only one, true way of writing CSS doesn’t help.
I guess it would be the best if you use ID and tag selector. Additionally use attribute selector:
However you should mention that it’s strongly recommended to put that sheet on the top of others, eg:
Why that approach?
Usually a developer will want to forms look the same all over the website, that’s why he will use tag name selector:
These selectors are weaker that
#contact-form inputso they won’t override anything. However sometimes it’s necessary to override some rules so the developer will use#contact-form inputselector which is pretty natural in such case.If sheets has been attached as a recommendation says developer’s styles will override yours, despite the fact that both have selectors with exactly same strength. That’s why the location of the rules matter.