マストヘッドにインラインsvgと背景画像があります。私はcssクリップパスを使用して、以下の画像でsvgアニメーションを「切り取り」ます。
私はそれをfirefoxとchromeでうまく機能していますが、サファリはクリッピング/マスキングをまったく適用していません。
このプロジェクトを開始する前にcaniuseの仕様を確認しましたが、Chromeに適用されるのと同じルールと例外が記載されています。最初にchromeでテストしたところ、動作しましたので、サファリが同じになることを確認し続けました処理。
私はサファリでクリッピングを適切に機能させる方法を理解するために頭を悩ませてきました。
これをサファリで機能させるにはどうすればよいですか?参考のためのペン: 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);
}
-webkit-
接頭辞が必要です。 CSSとJSに-webkit-
接頭辞を追加すると、Safariでサークルとインセットのオプションが機能することを確認できます。
CanIUse.comは、-webkit-
接頭辞を使用している場合、Safariの部分的なサポートを報告します: http://caniuse.com/#search=clip-path
CSS:
#clipped {
margin-bottom: 20px;
clip-path: url(#cross);
-webkit-clip-path: url(#cross);
}
JS:
var clipPathSelect = document.getElementById("clipPath");
clipPathSelect.addEventListener("change", function (evt) {
document.getElementById("clipped").style.clipPath = evt.target.value;
document.getElementById("clipped").style.webkitClipPath = evt.target.value;
});
フォークされたCodePen:https://codepen.io/techsock/pen/JEyqvM
これはSafariのclip-path
の実装に問題があるようです。 clip-path
に関するWebkitの問題に関してMaster Bugが報告されています。 JSFiddleでは、Safariが複数のrect
要素を含むSVGクリップパスを時々正しくレンダリングしますが、確実ではありません(下のスクリーンショットを参照)。非常に信頼できる回避策はないようです。また、この例をプルしたMDNページにも記載されています: https://developer.mozilla.org/en-US/docs/Web/CSS/clip-path#Browser_compatibility 。 MDNはSafariをNo Support
としてリストします。
-webkit-
接頭辞を追加するだけです:
-webkit-clip-path: polygon(50% 0%, 1000% 0%, 50% 100%, -1000% 0%);