开发者

How to do not apply CSS on a specific TAG

I do not know if is possible in CS开发者_开发技巧S, but I would like a general Role to don't apply to a specific element in my case id=special. In my example all the DIV should be red but I want only id=special to have not applied this color. I understand I can always overwrite the element with id=special but I'm interested to know if is possible have some sort of exclusion from the general Role.

Any idea in CSS 2 and CSS 3?

Example:

<div>this is red</div>
<div>this is red</div>
<div id="special">this one must be blus</div>
div>this is red</div>

// My General Role
div
{
  background-color:Red;
}


CSS3 allows for the :not() selector:

div:not([id])
-or-
div:not(#special)
depending on what you want to exclude

You can read all about the selectors in the w3c docs.

As for CSS2, there's a limited set of selectors, and they don't account for negation.


CSS2 Solution

div {
    color: red;
}

div#special {
    color: inherit;
}

demo: http://jsfiddle.net/zRxWW/1/


CSS3 solution:

div:not(#special)


You would want to use div:not(#special), but if it's going to be blue anyways then you might as well just override the rule. The :not() selector is a CSS3 property and thus isn't supported by all browsers.


This is a great example of how CSS specificity works. A general rule applying to all elements of a certain type (your div rule turning the background red) is superseded by the more specific rule applying to an ID. This concept has existed since CSS1, and is available in all browsers. Thus:

div {
  background-color:red;
}
#special {
 background-color: blue;  
}

... will leave all divs red. By applying the special id to a div, that one div will be blue instead.

See it in action: http://jsfiddle.net/9Hyas/

Check out these articles for more about CSS specificity: http://coding.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/ and http://www.htmldog.com/guides/cssadvanced/specificity/

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜