- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Tue, 18 Mar 2014 16:26:33 -0700
- To: Stephen E Slevinski Jr <slevin@signpuddle.net>
- Cc: www-svg <www-svg@w3.org>
On Tue, Mar 18, 2014 at 4:24 PM, Stephen E Slevinski Jr
<slevin@signpuddle.net> wrote:
> Hi SVG list,
>
> I ran into a problem that seems counter intuitive and I couldn't find any
> details online.
>
> I have 2 inline SVGs on a page. Both have internal style sheets. The fill
> color of the second SVG is overwriting the fill color of the first SVG.
>
> ==First SVG==
> <svg ...
> <style type="text/css">
> path.sym-line { fill: blue;}
> </style>
>
> ==Second SVG==
> <svg ...
> <style type="text/css">
> path.sym-line { fill: red;}
> </style>
Stylesheets are not automatically scoped to anything. Any <style>
element in the page is defining global styles for everything on the
page.
You can do <style scoped> in Firefox, but it's not implemented
anywhere else. Otherwise, you can put an id='' attribute on each
<svg> element, and prefix all your selectors with the appropriate ID.
~TJ
> Full example on Plunker:
> http://plnkr.co/edit/Xc9xGufUGeKypCGagBB3?p=preview
>
> Additionally, the internal style sheet can even affect standard HTML
> elements elsewhere on the page. This seems weird.
> <svg ...
> <style type="text/css">
> h1 { background: blue;}
> </style>
>
> When using an IMG or OBJECT tag, the style sheets do not cross pollinate or
> affect other elements on the page.
<img> and <object> elements load their resources in a separate
document, and stylesheets dont' cross documents.
~TJ
Received on Tuesday, 18 March 2014 23:27:20 UTC