- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Tue, 22 Jan 2013 13:28:18 -0800
- To: Sylvain Galineau <sylvaing@microsoft.com>
- Cc: Mounir Lamouri <mounir@lamouri.fr>, www-style list <www-style@w3.org>
On Tue, Jan 22, 2013 at 12:23 PM, Sylvain Galineau
<sylvaing@microsoft.com> wrote:
> [Tab Atkins Jr.:]
>> It's been explored in past threads on the matter.
> Links? I don't recall this being settled one way or the other.
http://lists.w3.org/Archives/Public/www-style/2011Apr/0240.html
(thread conversation between me and you ^_^)
http://lists.w3.org/Archives/Public/www-style/2010Mar/0095.html
(two-year-old thread from Mounir on the same subject)
There may be more, but that's all a quick search dug up.
>> Basically, a pseudo-
>> element lets you achieve the intended placeholder appearance in a more
>> reliable way.
>
> Can you elaborate on scenarios that are less reliable in pseudo-class based
> implementations? Given that we have implementations, examples are best.
I gave them in somewhat abstract terms in the message you're replying
to. In more concrete terms, say that we used a pseudo-class, and the
UA style was:
input:placeholder { color: #999; } /* approximately the color WebKit
ends up on by default */
Then, an author comes along and makes a website with a dark theme, and
so adjusts the input coloring to have a gray background of their own:
input { color: white; background: gray; }
As you can see at
<http://leaverou.github.com/contrast-ratio/#white-on-gray>, the
author's chosen color combination is reasonably contrasted. It's not
an ideal mix, but it's not horrible either. On the other hand, a
placeholder'd input would have terrible contrast
<http://leaverou.github.com/contrast-ratio/#%23999-on-gray>. If the
author rarely writes placeholder'd inputs and didn't test them, ey
might not notice the bad contrast for a while. When ey does notice,
ey's got to manually fix up the placeholder color with an
"input:placeholder{}" rule emself.
On the other hand, if we used a pseudo-element, the UA style could be:
input::placeholder { opacity: .54; }
/* for black-on-white, produces a color that is approximately #8a8a8a */
Then, if the author changed to "color: white; background: gray;", the
placeholder text color would be approximately #c5c5c5, which, while
not great for contrast, is still nearly double the contrast value of
#999 <http://leaverou.github.com/contrast-ratio/#%23c5c5c5-on-gray>.
It should be easy to come up with a similar example for
non-black/white colors, where the opacity approach preserves the
author's intended color, while the color approach changes it to gray.
> I don't follow this reasoning. If :placeholder is a state of the element
> what prevents the author from using the exact same style he would otherwise
> apply to the pseudo-element?
It requires the author to specifically override the placeholder style
if they ever change the normal input style. The pseudo-element
approach works automatically in most cases.
~TJ
Received on Tuesday, 22 January 2013 21:29:05 UTC