W3C home > Mailing lists > Public > www-style@w3.org > February 2014

Re: [shadow-styling] Scoping at-rules like @font-face in scoped styled and shadow trees?

From: Cameron McCormack <cam@mcc.id.au>
Date: Wed, 26 Feb 2014 16:19:02 +1100
Message-ID: <530D7946.9030902@mcc.id.au>
To: "Tab Atkins Jr." <jackalmage@gmail.com>
CC: www-style list <www-style@w3.org>
Tab Atkins Jr. wrote:
> Nobody else has any opinions?  If not, we should go with #1 and settle
> it in a spec.

I don't like #1 at all.  I think the risk of name collision is too great.

Off the top of my head solution to satisfy #2:

* Every style sheet is assigned a unique identifier of some sort 
automatically.

* The name that a given at-rule defines (like the font-family in an 
@font-face, the identifier right after the @keyframes) is implicitly 
prefixed with this unique identifier.

* To reference a name that has been declared in a scoped style sheet you 
use say scoped(name).  This is expanded out to <unique_identifier> + 
name at specified value time.

So:

   <!DOCTYPE html>
   <style>
   @keyframes anim {
     from { color: red; }
     to   { color: blue; }
   }
   p:hover { animation: 2s anim; }
   </style>
   <body>
     <p>one</p>
     <div>
       <style scoped>
         @keyframes anim {
           from { color: green; }
           to   { color: yellow; }
         }
         p.x:hover { animation: 2s scoped(anim); }
       </style>
       <p>two</p>
       <p class=x>three</p>
     </div>
   </body>

would cause the "one" and "two" to animate from red to blue and the 
"three" to animate from green to yellow.

The scoped @keyframes rule defines a globally available keyframes name 
that is <unique_identifier> + "anim", and if you inspected the 
declaration in the scoped style sheet the value for animation-name would 
be <unique_identifier> + "anim" too.


I don't really like that the global ID the UA comes up with is visible 
to script.  We could have it so that the specified value of 
animation-name still looks like "scoped(anim)" even though internally 
it's also stored the unique ID along with it.  Same for the computed value.

Or the global ID could be something like the URL of the style sheet plus 
the index that it appears in document.styleSheets.  Plus something to 
handle style="".
Received on Wednesday, 26 February 2014 05:19:36 UTC

This archive was generated by hypermail 2.3.1 : Monday, 2 May 2016 14:39:19 UTC