私はJavascriptで構築しているSVGを持っています。大きな SVG ファイルを読み込み、パスで描画された断片に分割し、各要素をページに配置します。これらの SVG は、読み込んでいる他の画像のマスクとしてのみ使用しています。基本的に私の構造は次のようなものです。
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="26.750152587890625 10.117172241210938 197.24969482421875 348.1596221923828" width="197.25" height="348.16015625">
<mask id="designMask" maskContentUnits="objectBoundingBox">
<g id="CutContour1bg">
<path d="[my path coords]" style="fill:#FFFFFF;">
</g>
</mask>
<image href="http://myImage.jpg" style="mask: url(#designMask);" width="800px" height="800px" x="26.75" y="10.1171875">
</svg>
これにより、FF、IE9、Chrome、Safari 5.1(デスクトップ)で、SVG パーフェクトでマスクされている画像がレンダリングされます。ただし、モバイル サファリでは、画像が正しくレンダリングされません。仮面の座標をたどると、すべて正しい。FF では、SVG ロード (すべて黒) がマスクになると消えます。(デザインが読み込まれるまで待ってから、コンテンツが読み込まれる前に FF でマスクを探すのに問題があるため、ラップ<g>
します。<mask>
これは、マスクの位置が必要な場所に正確にあることを示していますが、そうでmaskContentUnits
はありません. 私が言っているように、それらはオブジェクトの境界ボックスではなく左上隅に残ります。マスク内の画像の一部がほとんど見えないため、マスクの単位は正しいのですがmaskContentUnits
、モバイル サファリで動作したり読み取ったりすることができません。
誰かがこの問題を見たことがありますか、またはそれを修正する方法はありますか? モバイル サファリを除いてどこでも動作するのは嫌いです。これは主にモバイルで動作することを意図しているためです。
ありがとう!