What is the proper CSS syntax is for applying multiple pseudo classes to a selector. I'd like to to insert "," after each item in a list except the last one. I am using the following css:
ul.phone_numbers li:after {
content: ",";
}
ul.phone_numbers li:last-child:after {
content: "";
}
This works fine on FF3, Chrome and Safari 3. IE7 doesn't work because it doesn't support :after (as expected). In IE 8 this renders with a comma after each li including the last one. Is this a problem with IE8 or is my syntax incorrect? It's ok if it doesn't work in IE8 but I would like to know what the proper syntax is.
-
IE8 doesn't support last-child :( They're focused on sorting out CSS 2.1 support it looks like. Why microsoft haven't adopted Gecko or Webkit yet I don't know.
http://msdn.microsoft.com/en-us/library/cc351024(VS.85).aspx#pseudoclasses
Brian Fisher : Thanks for the info and explanation. Is my syntax correct? Just in case IE9 supports last-child.sanchothefat : Yeah the syntax is fine, as the other guys have said :) -
You could use the adjacent sibling selector:
ul.phone_numbers li + li:before { content: ","; } -
:last-childis a pseudo-class, whereas:after(or::afterin CSS3) is a pseudo-element.To quote the standard:
Pseudo-classes are allowed anywhere in selectors while pseudo-elements may only be appended after the last simple selector of the selector.
This means your syntax is correct according to CSS2.1 and CSS3 as well, i.e. IE8 still sucks ;)
0 comments:
Post a Comment