0

编辑:我最终求助于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 的开发工具进行检查时,对象和嵌入似乎都是预期的 460 像素宽,但表格列会变得明显更宽。在 FF 中使用 Firebug 删除嵌入时,地图会消失,但布局不会改变。当同时删除对象时,列会缩小到缩进宽度。

我在某处读到display: block有时会解决此类问题,但这已经到位并且似乎无济于事。在 Chrome 中一切都很好,即地图右侧没有额外的空间。

我尝试在样式属性中设置宽度。我还尝试将整个东西包装在一个宽度为 460px 的 div 中并溢出:隐藏,但也无济于事。

我似乎不走运谷歌搜索这个问题,所以我希望有人能够提供帮助。提前致谢。

4

1 回答 1

0

这只是我误解了默认表的自动布局的一个例子table-layout: auto。原来,如果我把flash对象换成等宽的div,对列宽的效果是完全一样的。

我的结论是,仅在左列中存在具有固定宽度的对象就使布局引擎调整了两列之间的平衡,尽管它实际上并没有必要这样做。由于右列仅包含没有指定宽度的段落和标题等,因此从该列窃取一些宽度被认为是安全的。

于 2013-06-07T12:51:13.437 回答