编辑:我最终诉诸td { max-width: 460px; }
,这解决了IE和FF中的直接问题。关于这种布局行为的原因仍然很好奇。
我正在使用一个使用两列表格布局的现有页面。在左侧的单元格中,有一个普通的<object><param /><param /><embed /></object>
代码段嵌入了flash地图(http://backspace.com/mapapp/):
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" id="zoom_map" style="display: block !important;" height="251" width="460">
<param name="movie" value="/[path]/world.swf?data_file=/[path]/data.xml">
<param name="quality" value="high">
<param name="bgcolor" value="#FFFFFF">
<embed src="/[path]/world.swf?data_file=/[path]/data.xml" quality="high" bgcolor="#FFFFFF" name="Clickable World Map" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" style="display: block !important;" title="Adobe Flash Player" align="top" height="251" width="460">
</object>
问题是在IE 9和FF 21.0中,即使在使用Firebug或IE的开发工具进行检查时,对象和嵌入似乎都是预期的460px宽,表格列也会变宽。在FF中使用Firebug删除嵌入时,地图会消失但布局不会更改。当删除对象时,列缩小到入口宽度。
我在某处读到display: block
有时会修复这样的问题,但这已经到位并且似乎没有帮助。在Chrome中,一切都很好,即地图右侧没有额外的空间。
我尝试在style属性中设置宽度。我也尝试将整个东西包裹在宽度为460px且溢出的div中:隐藏,但也无济于事。
我似乎没有用Google搜索这个问题,所以我希望有人能够提供帮助。提前谢谢。
答案 0 :(得分:0)
这只是我误解了使用默认table-layout: auto
自动布置表格的情况。事实证明,如果我用相同宽度的div替换flash对象,则对列宽的影响完全相同。
我的结论是,在左列中仅存在具有固定宽度的对象使得布局引擎调整两列之间的平衡,即使它实际上不必如此。由于右栏只包含没有指定宽度的段落和标题等,因此从该列中窃取一些宽度被认为是安全的。