2014-05-13 70 views
1

我有一個SVG。 在Firefox和Chrome中,width:100%height:100%運行良好。但在Internet Explorer 9中不是。IE9中的SVG寬度

有人知道如何解決它?

謝謝。

UPDATE:

我真的問題是把這個SVG成table(寬度是可怕的IE9)。 <td>是動態的,我無法爲SVG的容器設置width

回答

3

這是因爲html,body和div元素摺疊到SVG的固有高度。

要解決,你可以設置HTML,身體,div元素,以100%的高度:

html, body, div { width: 100%; height: 100%; } 

http://jsfiddle.net/7Z8kg/2/


更新:

OK ,據我所知,IE9未能計算SVG元素上的widthheight ,所以它回落到default for replaced elements(300×150px)。你設置了一個height而不是父親(.ic3-svg-arrow)上的width,所以SVG仍然默認爲300px寬。

我已經在這裏使用the Intrinsic Ratio trick:在本質上給父元素一個長寬比(在這種情況下是1:1),並使用絕對定位使SVG適合該大小。這依賴於你事先知道寬高比,但似乎也對這個問題的工作:

/* Use padding to create a 1:1 aspect ratio */ 
.ic3-svg-arrow { 
    height: 0; 
    padding-bottom: 100%; 
    position: relative; 
} 
/* Use positioning to make the SVG fit the ratio */ 
.ic3-svg-arrow svg { 
    position: absolute; 
    top: 0; 
    left: 0; 
    height: 100%; 
    width: 100%; 
} 

http://jsfiddle.net/7Z8kg/15/橫跨IE9,IE11,Firefox和Chrome看起來是一樣的我。

我從this article, which has lots of useful SVG sizing tips獲取靈感。

+0

它的工作原理,我更新了問題。我真正的問題是更新後的版本,只是我想簡化問題。行爲是一樣的,但我無法在容器上設置「寬度」。 –

+0

你可以在CSS中設置'table-layout:fixed;'嗎?例如http://jsfiddle.net/7Z8kg/7/ –

+0

在Chrome中沒有這樣工作:( –