[whatwg] A <link rel=stylesheet scoped> usecase

Ian Hickson ian at hixie.ch
Thu Jun 7 16:28:35 PDT 2012


On Fri, 2 Mar 2012, Gray Zhang wrote:
> 
> I've noticed a scoped attribute for link element has been previously 
> discussed, I'm currently working with some new HTML features and find a 
> case where the scoped attribute is required on link element.
> 
> I'm working on an code editor and building up a scalable theme system, 
> as I designed, it should satisfy a list of requirements:
> 
> 1. user (3rd party) can publish their theme to my system
> 2. user can preview themes and choose one for their editor
> 3. there is no server side support such as providing a snapshot image for
> skin
> 4. a theme is simply a .css file without anything else
> 
> The preview-and-choose panel may look like this:
> http://lists.w3.org/Archives/Public/www-archive/2012Mar/att-0003/code-editor-theme-panel
> 
> Each preview pane is constructed with pure DOM, if <link scoped> is
> supported, I could have some elements and text in a wapper, then apply an
> external css on this wrapper so that color/background effect could be
> rendered:
> 
> <div>
>     <!-- This link element only works for it's containing div -->
>     <link rel="stylesheet"
> href="3rd-party-theme/user-published-20120302133702.css" scoped="scoped" />
>     <span class="keyword">function</span><span
> class="identifier">test</span>...
> </div>
> 
> By now, for the reason that there is not link[scoped] and style[scoped] is
> not supported for any browser, my solution is add a data-theme attribute on
> wrapper element, and the theme .css file should add some extra selector:
> 
> .visual-root[data-theme="fireworks"] {
>     background-color: #404040;
>     color: #addede;
> }
> 
> The addition of [data-theme="foo"] selector is a really bad smell for me,
> in such case I also provided theme author a script to auto generate a theme
> structure, but all these could be solved with the support of link[scoped]
> element.

This is the first time I've seen a good use case for this!

It still seems like a bit of an edge case, so I think it's ok for us to 
continue to rely on @import for this for now. But we should keep an eye 
out for how often people use this technique; if it is indeed something 
that comes up a lot, then introducing scoped="" on <link rel=stylesheet> 
would make sense.


On Fri, 2 Mar 2012, Tab Atkins Jr. wrote:
> 
> Do this instead:
> 
> <div>
>   <style scoped>
>     @import "3rd-party-theme/user-published-20120302133702.css";
>   </style>
>   <span class="keyword">function</span><span> class="identifier">test</span>...
> </div>

That's a good workaround, but if the use case is something we want to 
actually address, I think supporting <link> here makes sense too.


On Fri, 2 Mar 2012, Tab Atkins Jr. wrote:
> On Fri, Mar 2, 2012 at 10:03 AM, Kang-Hao (Kenny) Lu
> <kennyluck at csail.mit.edu> wrote:
> > 
> > I talked to Hixie on IRC[1] and he seems to think that there's no use
> > case for <style>@import</style> either.
> 
> Hixie has odd views sometimes.  ^_^ 

For the record, I meant specifically a <style scoped> @import. Obviously 
@import in general has plenty of uses -- the same ones as <link>, mostly.

-- 
Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'


More information about the whatwg mailing list