我遇到了同樣的問題來了。顯然,iOS使用桌面的不同座標系,導致圖像呈現顛倒。 Safari對大多數類型的圖像進行了更正,但不包括CSS填充。
我的解決方案是將規模(1,-1)轉換應用到Raphael製作的模式定義元素。請注意,我爲此使用了Raphael 1.5.2;但是,當我查看時,我沒有看到2.0中的任何相關更改。
if (isIOS()) {
//iOS SVG fills use an upside-down coordinate system
var patternID = RaphaelElement[0].style.fill.replace('#', '')
var pattern = document.getElementById(patternID);
pattern.setAttribute("patternTransform", "scale(1, -1)");
}
說明:
基本上,你有2個重要的HTML/SVG DOM元素:
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="290" height="290">
<desc>Created with Raphaël</desc>
<defs>
<pattern id="r-11258319" patternTransform="scale(1, -1)">
<image />
</pattern>
</defs>
<path fill="url(#r-11258319)" style="fill: url("#r-11258319") rgb(0, 0, 0);" />
</svg>
(不重要SVG東西除去)
的path
元件是元件你有一個Raphael引用,而pattern
元素是你需要的元素改變。您需要將patternTransform="scale(1, -1)"
屬性添加到pattern
元素。這兩個元素只與模式的id相關聯,所以我不得不做一些hackery來提取.style.fill.replace('#', '')
。