- From: Faruk Ates <farukates@me.com>
- Date: Mon, 07 Sep 2009 02:48:56 -0700
- To: www-style@w3.org
[1] Section 4.8 from CSS 3 Backgrounds and Borders specifies the box-
shadow property as follows:
> The ‘box-shadow’ property attaches one or more drop-shadows to the
> box. The property is a comma-separated list of shadows, each
> specified by 2-4 length values, an optional color, and an optional
> ‘inset’ keyword. Omitted lengths are 0, omitted colors are a UA-
> chosen color.
> The type <shadow> stands for:
> inset || [ <length> <length> <length>? <length>? || <color> ]
> where the first two lengths are required.
[2] Section 8.3 from CSS 3 Text specifies the text-shadow property as:
> This property accepts a comma-separated list of shadow effects to be
> applied to the text of the element. <shadow> is defined as
> [ <color>? <length> <length> <length>? | <length> <length> <length>?
> <color>? ], where the first two lengths represent the offset and the
> third an optional blur radius.
I've searched the list archives for discussion on synchronizing box-
shadow and text-shadow, but found only one relevant mention, which is
from Bert Bos in 1998, saying:
> Inset can be simulated with two shadows: a dark one to the top left,
> and a light one to the bottom right. Outset is similar, but reverses
> the shadows:
>
> EM.inset {text-shadow: white -1px -1px, black 1px 1px}
>
> It's not perfect in high resolutions, but usually good enough.
It seems that this was never brought up again for discussion, although
text-shadow does get tossed in as a simile to box-shadow, but
apparently without respect for the crucial difference of the missing
'inset' keyword.
While I understand Bert's reasoning that two shadows can *simulate*
the presence of inner shadows, I want to point out that they do so in
a completely unacceptable manner to most designers. This solution,
while perhaps "good enough" for some, is not good enough for using
text instead of an image for carefully designed headings / large type.
[4] I made an example graphic that shows the difference between the
two. Both examples use a 25% pure black shadow top-left and a 50% pure
white shadow bottom-right.
Additionally, box-shadow and text-shadow are virtually identical in
function, but the specs have them behaving inconsistently between one
another. The omission from the 'inset' keyword on text-shadow feels
like an oversight that could be easily remedied—which, as a result,
would not only keep the two shadow effects behaving the same way
(which most developers will expect it to), but it would also allow
designers to use scalable, inherently more accessible text for many
headings instead of images.
My proposal is that text-shadow is adjusted to include the 'inset'
keyword. For full compatibility, it should perhaps simply match the
description of box-shadow entirely, including the fourth length
(spread radius). Another thought is that this could be changed along
with changing the name of the 'inset' keyword to read 'inner'—as
shadows are not synonymous to borders; their behaviors are very
different, and using the same keyword could lead to confusion (I've
seen this thought expressed before in the archives).
- Faruk
[1] http://www.w3.org/TR/css3-background/#the-box-shadow
[2] http://www.w3.org/TR/css3-text/#text-shadow
[3] http://lists.w3.org/Archives/Public/www-style/1998Apr/0114.html
[4] http://j.mp/23QblD
Received on Monday, 7 September 2009 11:29:59 UTC