Closed
Bug 1480029
Opened 6 years ago
Closed 6 years ago
Using ::-webkit-input-placeholder does not apply CSS rules
Categories
(Core :: CSS Parsing and Computation, defect)
Tracking
()
RESOLVED
DUPLICATE
of bug 1424106
People
(Reporter: clementparis016, Unassigned)
Details
(Whiteboard: [webcompat])
User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:61.0) Gecko/20100101 Firefox/61.0
Build ID: 20180704003137
Steps to reproduce:
I wrote the following CSS code:
p,
input::-webkit-input-placeholder {
color: red;
}
(link to reproduction: https://jsfiddle.net/ClementParis016/1gc9yhxq/1/)
Actual results:
The CSS is not applied.
Expected results:
The CSS should be applied (i.e. the <p> element should have a red color).
Despite the MDN docs (https://developer.mozilla.org/en-US/docs/Web/CSS/::-webkit-input-placeholder) stating that the ::-webkit-input-placeholder pseudo-element is non-standard and subject to incompatibilities, it's still a perfectly valid CSS syntax that shouldn't prevent the rest of the CSS to be correctly parsed and applied to the document.
For now, a work around is to separate both CSS selectors like so:
p {
color: red;
}
input::-webkit-input-placeholder {
color: red;
}
This is especially problematic when using CSS pre-processors (like SASS or Less) and their extend features which combine together selectors that share the same rules.
Comment 1•6 years ago
|
||
That is not true. ::-webkit-input-placeholder is not a standard selector or a selector we support, so it's invalid at parse time.
Invalid selectors at parse time make the whole rule invalid. For example, the rule:
p,
input::-webkit-input-placeholder,
input::-my-random-pseudo {
color: red;
}
Doesn't show red in any browser.
Blink / WebKit have a hack where they parse any -webkit-prefixed pseudo as valid (see https://github.com/w3c/csswg-drafts/issues/2156). We may add that hack in bug 1424106... But I'd really prefer if we didn't have to. :(
Status: UNCONFIRMED → RESOLVED
Closed: 6 years ago
Resolution: --- → DUPLICATE
Reporter | ||
Comment 2•6 years ago
|
||
Thank for your reply and the resources you provided.
By valid syntax I mean it's a pseudo-element syntax (the :: part), I wasn't aware that the -webkit- prefix part was not.
To add to the confusion the W3C CSS validator (https://jigsaw.w3.org/) says the code is valid but warns that "::-webkit-input-placeholder is an unknown vendor extended pseudo-element".
I agree with your concerns about implementing the Blink/WebKit hack, but I'm sure a lot of people aren't even aware that the CSS gets completely ignored in Firefox :( Maybe that could be reflected into the MDN docs?
Comment 3•6 years ago
|
||
Chris, do you know if I can edit MDN to point with more emphasis in:
https://developer.mozilla.org/en-US/docs/Web/CSS/::-webkit-input-placeholder
towards the standard ::placeholder? Or make more emphasis on invalid pseudo-elements making the whole rule invalid?
Mike, looks like Edge implements ::-webkit-input-placeholder as an alias of ::placeholder, but don't implement the more general "::-webkit- pseudo-element is always valid" hack. Is there a bug on file to do the same?
Should we do it? (it's a one-line change really)
Thanks both!
Flags: needinfo?(miket)
Flags: needinfo?(cmills)
Comment 4•6 years ago
|
||
I guess edge aliases it to ::-ms-input-placeholder, since they don't seem to support ::placeholder itself.
Comment 5•6 years ago
|
||
I think (In reply to Emilio Cobos Álvarez (:emilio) from comment #3)
> Mike, looks like Edge implements ::-webkit-input-placeholder as an alias of
> ::placeholder, but don't implement the more general "::-webkit-
> pseudo-element is always valid" hack. Is there a bug on file to do the same?
>
> Should we do it? (it's a one-line change really)
It sounds reasonable. I guess we should be aware we might run into new UX/a11y issues related to https://bugzilla.mozilla.org/show_bug.cgi?id=1357674 as a result.
If we do this, let's make sure to document it in the compat standard as well.
Flags: needinfo?(miket)
Whiteboard: [webcompat]
Comment 6•6 years ago
|
||
(In reply to Emilio Cobos Álvarez (:emilio) from comment #3)
> Chris, do you know if I can edit MDN to point with more emphasis in:
>
>
> https://developer.mozilla.org/en-US/docs/Web/CSS/::-webkit-input-placeholder
>
> towards the standard ::placeholder? Or make more emphasis on invalid
> pseudo-elements making the whole rule invalid?
Please do! Thanks Emilio.
Flags: needinfo?(cmills)
You need to log in
before you can comment on or make changes to this bug.
Description
•