I have an inline svg and a background image on the masthead. I am using css clip-path to 'clip' out the svg animation with the image below.
I have it working great in firefox and chrome but safari doesn't apply any of the clipping/masking at all.
I checked caniuse spec's before starting this project and it states the same rules and exceptions that apply to chrome, I just tested with chrome first and it worked so I continued on it figuring safari would have the same treatment.
I have been scratching my head trying to figure out how to get the clipping to work properly in safari with no avail.
How can I get this to work in safari? Pen for reference: https://codepen.io/H0BB5/pen/Xpawgp
HTML
<clipPath id="cross">
<rect y="110" x="137" width="90" height="90"/>
<rect x="0" y="110" width="90" height="90"/>
<rect x="137" y="0" width="90" height="90"/>
<rect x="0" y="0" width="90" height="90"/>
</clipPath>
CSS
#clipped {
margin-bottom: 20px;
clip-path: url(#cross);
}
You need the
-webkit-
prefix. I can confirm your circle and inset options work in Safari after adding the-webkit-
prefix to your CSS and JS.CanIUse.com reports partial support for Safari if using the
-webkit-
prefix: http://caniuse.com/#search=clip-pathCSS:
JS:
Forked CodePen: https://codepen.io/techsock/pen/JEyqvM
Update
It appears that this may be an issue with Safari's implementation of
clip-path
. There is a Master Bug reported regard webkit issues withclip-path
. In JSFiddle, Safari will occasionally render the SVG clip path containing multiplerect
elements correctly, but not reliably (see attached screenshots below). There does not appear to be an extremely reliable workaround. It also is noted on the MDN page you pulled this example from: https://developer.mozilla.org/en-US/docs/Web/CSS/clip-path#Browser_compatibility. MDN lists Safari asNo Support
.JSFiddle behavior screenshots:
✗ Incorrect
✗ Incorrect
✓ Correct