Your translation in the g element affects the way clipPath . You have 2 options:
Add the clip-path attribute to the static parent element. You can then apply your translation to the child without affecting clipPath rendering.
Apply reverse translation to clipPath element. (Note: I have never applied this method, but I read about it here: https://stackoverflow.com/a/166778/ )
I prefer option # 1 because I donβt need to change the tranform clipPath every time I change the transformation g . In your case, you already have the parent element g , so you can add the clip-path attribute there if you intend to apply clipPath to apply "g # sites" to each element of your element.
<g id="sites" clip-path="url(#myClip)"> <g class="site" transform="translate(483.29548177370367,267.14072835257724)"> <path fill="rgba(0, 255, 0, 0.5)" d="M0,30A30,20 0 1,1 0,-30A30,20 0 1,1 0,30M0,1A1,1 0 1,0 0,-1A1,1 0 1,0 0,1Z" /> </g> <g class="site" transform="translate(483.29548177370367,267.14072835257724)"> <path fill="rgba(0, 0, 255, 0.5)" d="M0,30A30,20 0 1,1 0,-30A30,20 0 1,1 0,30M0,1A1,1 0 1,0 0,-1A1,1 0 1,0 0,1Z" /> </g> </g>
(jsfiddle: http://jsfiddle.net/SWyeD/ )
If you only plan on using this clipPath for the first lap, you simply add an intermediate container element.
<g id="sites"> <g clip-path="url(#myClip)"> <g class="site" transform="translate(483.29548177370367,267.14072835257724)"> <path fill="rgba(0, 255, 0, 0.5)" d="M0,30A30,20 0 1,1 0,-30A30,20 0 1,1 0,30M0,1A1,1 0 1,0 0,-1A1,1 0 1,0 0,1Z" /> </g> </g> <g class="site" transform="translate(483.29548177370367,267.14072835257724)"> <path fill="rgba(0, 0, 255, 0.5)" d="M0,30A30,20 0 1,1 0,-30A30,20 0 1,1 0,30M0,1A1,1 0 1,0 0,-1A1,1 0 1,0 0,1Z" /> </g> </g>
(jsfiddle: http://jsfiddle.net/bdB65/ )