[css3-images] Referencing <svg> element directly with element()

Hi all,

using the element() notation and referencing an <svg> element[1], I'm  
wondering if it is possible to reference a whole <svg> fragment which in  
itself is not rendered? One that only renders when referenced via  
element() but which is invisible and doesn't take up any space in the main  
document? It seems to me that even the paint server model (svg gradients,  
patterns) that is defined in the spec suffers from the same problem, even  
if the <svg> contained only elements inside a <defs> the <svg> itself  
would still take up space in the main document.

One way to solve that might be to use cssElementMap, but that has the  
drawback of having to use scripting. Is there a script-less way of doing  

If I understand the spec correctly, elements that are "paint sources" (e.g  
<img>, <canvas> and <video>) can still be used when referenced via  
element() even if they are not rendered. Please clarify what "not  
rendered" means. Would display:none be included in that definition for  
example? Please consider making <svg> as a "paint source" as well. That  
would make svg easier to use here, since you wouldn't have to wrap the  
content inside a <pattern> element.

[1] http://dev.w3.org/csswg/css3-images/#element-reference

Erik Dahlstrom, Core Technology Developer, Opera Software
Co-Chair, W3C SVG Working Group
Personal blog: http://my.opera.com/macdev_ed

Received on Wednesday, 22 February 2012 11:15:41 UTC