2010-07-21 21 views
3

我有問題將SVG嵌入到網頁中。我找到了最簡單的方法來使用圖像標籤。例如:如何讓SVG在web-kit中透明渲染?

<img src="my_graphic.svg" height="100"/> 

適用於web-kit。我不需要明確設置寬度,瀏覽器將保持高寬比。非常好!

雖然這在Firefox中不起作用 - 它不是跨瀏覽器。那麼如何嵌入作爲一個對象?

<object type="image/svg+xml" 
     height="100" 
     width="554" 
     data="my_graphic.svgz"> 
     <span/></object> 

這次我使用svgz和MIME類型已被添加,瞧!它可以在firefox和webkit中使用。然而,在webkit中,我需要明確指出寬度,否則我們會得到一些討厭的包含元素滾動條。但更糟的是背景不再透明。它用白色背景呈現。

因此,一種方法在webkit中完美工作。另一個在Mozilla中完美運行。我能做些什麼才能使它在兩個方面都可靠地工作?

對此有何興趣?請參閱我的鏈接以供參考: http://sumocreations.com/demo/svg/new_dttg.html

+0

你可以使用內聯SVG呢? – 2010-07-21 01:11:48

+0

我還沒有測試過這個,但是這對於這個解決方案來說是非常不利的。內聯SVG最適合動態生成的圖形,而不是可重用的資產,併入頁面的設計中。 – 2010-07-21 01:19:25

回答

1

我發現的唯一工作是通過檢測使用SVG源的img是否正確呈現。我只通過指定一個維度來做到這一點。無論是高度還是寬度,但不是兩者。然後,我可以測試替代維度是否大於零。如果是我隱藏的對象。如果沒有,我隱藏圖像。這裏是如何用jQuery做到這一點:

<script type="text/javascript"> 
    $(document).ready(function() { 
     if($('img.logo').width() < 1) { 
     $('img.logo').hide(); $('object.logo').show(); 
    } else { 
     $('img.logo').show(); $('object.logo').hide(); 
     } 
    }); 
</script> 

查看演示:http://sumocreations.com/demo/svg/new_dttg.html

+0

我已經創建了一個jQuery插件來自動執行此操作: http://github.com/jimjeffers/jQuery-SVG-Image-Plugin/ 和一些快速文檔可在此處獲得: http://jimjeffers.github.com/jQuery-SVG-Image-Plugin/ – 2010-07-21 05:23:59

0

<img>標記放置在對象內。

該對象將在Firefox中呈現,webkit應顯示<img>標記。

編輯:

而且,這是怎麼回事用自我封閉的跨度標籤? <span>不支持自動關閉。

+0

我認爲這不會起作用,因爲WebKit支持標記。雖然它有@heycam指出的透明度錯誤。 – 2010-07-21 00:56:56

+0

我已經證實這不會透明渲染,但它更簡潔。自我關閉跨度來自我在別處找到的代碼示例。 – 2010-07-21 00:59:54

2

我不認爲目前0123k在WebKit中具有透明背景是可能的。 There's a bug歸檔此問題。我不知道解決方法。

+1

我找到了解決辦法。不幸的是,你必須使用svg源來指定一個img的單個維度。如果它大於零,則瀏覽器(webkit)能夠呈現該對象,並且我們可以隱藏嵌入對象。如果不是,我們可以將備用切換爲可見狀態。我希望將來有更清晰的方式來做到這一點。現在,這將不得不做。 – 2010-07-21 01:13:01

+0

還有[mozilla bug](https://bugzilla.mozilla.org/show_bug.cgi?id = 276431)用於支持SVG的標籤 – 2010-07-21 01:22:30