我有一個g
元素,其中包含一個或多個path
元素。正如我在another question中提到的那樣,我通過計算transform
屬性來縮放和翻譯g
元素,以便它適合畫布另一部分中的網格。如何計算getBBox()SVGRect?
計算是通過使用兩個矩形之間的差值,來自g
元素的getBBox()
和網格周圍的矩形完成的。
這裏的問題 - 畢竟我做的變換,我更新g
元素的內容,並再次呼籲getBBox()
,沒有去除transform
。得到的矩形似乎在不考慮transform
的情況下進行計算。我預料它會反映這種變化。這種行爲是否與SVG規範一致?如何獲得變換矩形的邊界框?
這是BTW,它在Firefox 4中運行的HTML 5文檔中,如果這有什麼區別的話。
更新:顯然這種行爲似乎很明顯違反了規範。從文本here at w3c:
SVGRect getBBox()
返回當前用戶空間緊張的邊框(即應用程序的「變換」屬性,如果有的話)之後所有的幾何包含圖形元素,不包括撫摸,裁剪,蒙版和過濾效果)。請注意,getBBox必須在調用方法時返回實際的邊界框,即使元素尚未呈現。
我正確地讀這個嗎?如果是這樣的話,這似乎是Firefox使用SVG實施的一個錯誤;我沒有機會嘗試任何其他的。如果有人能指出我的位置,我會提交一份錯誤報告。
10年後,瀏覽器中的SVG支持仍然是一個惹人注目的事情。 (更不用說SMIL ...... :() – 2011-06-05 11:01:11