- From: Stewart Brodie <stewart.brodie@antplc.com>
- Date: Mon, 15 Oct 2007 12:37:17 +0100
- To: www-style@w3.org
"Gabriele Romanato" <gabriele.romanato@gmail.com> wrote: > ---------- Forwarded message ---------- > From: Gabriele Romanato <gabriele.romanato@gmail.com> > Date: 15-ott-2007 13.12 > Subject: [CSS3] Conditional statements in CSS 3 > To: www-style-request@w3.org > > Dear all, > while I was writing an user style sheet that emulates the behavior of Lynx > browser, it came to my attention the following problem: > > img[alt]:before { > content: attr(alt) !important; > } > > img[src]:before { > content: attr(src) !important; > } > > In other words, it's not possible to choose between the above mentioned > options. When rules of equal specificity exist, the order of rules in the stylesheet is the determining factor. There is no ambiguity here. > I propose the following new keyword for the at-rules > > @if (img[src]) {style rules} > > @else if (img[alt]) {style rules} > > we can check now if there's such an attribute. This is exactly what your two rules already specify. The property values in the img[src]:before rule beat the img[alt]:before rule's properties. See point 4 in section 6.4.1 of the CSS 2.1 document: http://www.w3.org/TR/CSS21/cascade.html#cascading-order If you want to explicitly say that the img[alt] version only applies when there's no src attribute, you could always write it like this: img[alt]:not([src]):before but that's a CSS3 Selectors feature, not CSS2.1, so CSS2.1 user agents will reject this rule completely. -- Stewart Brodie Software Engineer ANT Software Limited
Received on Monday, 15 October 2007 11:40:56 UTC