- From: Florian Rivoal <florianr@opera.com>
- Date: Thu, 21 Jun 2012 16:55:45 +0200
- To: "www-style@w3.org" <www-style@w3.org>
Hi,
IE and Webkit support background-position-x and background-position-y, and
it is being used in the wild (primarily for sprites), so I was considering
specifying so that we could have a solid basis to implementing it.
However, if we do introduce this, it prevents us from introducing
writing-mode sensitive logical position keywords.
With physical directions, there is no problem
background-position: bottom right;
->
background-position-x: right;
background-position-y: bottom;
But this can't work:
background-position: start head;
->
background-position-x: ??;
background-position-y: ??;
The only solution I can think of is pretty ugly:
background-position: bottom right;
->
background-position-x: right;
background-position-y: bottom;
background-position-inline: auto;
background-position-cross: auto;
background-position: start head;
->
background-position-x: auto;
background-position-y: auto;
background-position-inline: start;
background-position-cross: head;
This would need a precedence rule to deal with all the longhands being
manually set to non auto values.
If we don't care for this (ugly) workaround, I am afraid we have to
decide between logical keywords and *-x / *-y.
There are arguments in both directions.
In favor of -x and -y:
* they are already supported by 2 out of the 4 main engines, and have
been for many years, so maybe we should pave the cow path and boost
interoperability with existing content.
Against -x and -y:
* they are blocking another useful extension of background-position
unless we resort to ugly workarounds
* They can be simulated with variables, so we can live without them:
For instance, here is a typical example of how they are used:
.icon { background: url(sprite.png) 0 0 no-repeat; }
#a { background-position-y: 0; }
#b { background-position-y: -30px; }
#c { background-position-y: -60px; }
.icon:hover { background-position-x: -30px; }
.icon:active { background-position-x: -60px; }
This can be rewritten with variables:
.icon { background: url(sprite.png) var(bg-x, 0) var(bg-y, 0) no-repeat;}
#a { var-bg-y: 0; }
#b { var-bg-y: -30px; }
#c { var-bg-y: -60px; }
.icon:hover { var-bg-x: -30px; }
.icon:active { var-bg-x: -60px; }
- Florian
Received on Thursday, 21 June 2012 14:56:21 UTC