据我所知,Internet Explorer会查找已经发出hasLayout的第一个父元素来计算100%的高度.这与大多数其他浏览器不同.
Documentation on Internet Explorer’s hasLayout property:
To begin with,there are two sets of elements.
Elements that rely on a parent element to size and arrange their contents
Elements that are responsible for sizing and arranging their own contents.
In general,elements in Internet Explorer’s Dynamic HTML engine are not
responsible for arranging themselves. A div or a p element may have a
position within the source-order and flow of the document,but their
contents are arranged by their nearest ancestor with a layout
(frequently body). These elements rely on the ancestor layout to do
all the heavy lifting of determining size and measurement information
for them.
Note: The element that is responsible for sizing and positioning an element may be an ancestor,not just the element’s immediate parent.) The major benefits of each element not having its own layout are performance and simplicity.
解决你的问题的一个快捷方法可能是在你的td中添加一个包装器div元素,它模拟了td的大小,但是由于它的自然触发器hasLayout(未被测试,IE8上的jsFiddle兼容性被破坏):
ExampleText with an unknown height (22px here) |
Remaining space (150px with IE9,122px with others) |