IE6真的不允许我从左/右/上/下设置宽度/高度吗?

时间:2010-04-24 09:16:45

标签: html css internet-explorer internet-explorer-6

建立一个超级快速的站点并让它在我的所有Mac浏览器上运行,我想我会在Windows XP和IE6的朋友旧戴尔笔记本电脑上看到它。

没有什么看起来很正确。这是因为我使用了大量的左/右/上/下(约束)声明来按比例调整元素的大小(我没有使用百分比大小,因为百分比在边距之前引用父级的大小并且应用了填充,左/右/上/下在之后引用它们,其位置为:绝对。我在询问here:))。

过去几周我已经阅读了很多关于IE6(和IE)的可怕程度,但是由于人们所说的所有支持它的原因(大的市场份额和担心安装更好的软件),并且因为公司的一半人我们正在构建一个使用IE6的网站(让他们慢慢升级到Chrome但是肯定),我想如果我能让IE6来渲染我的约束,那可能会有所帮助。

所以我正在使用simple layouts here,它们在我最新版本的Firefox,Safari,Chrome和Opera中运行良好,但IE6基本上是在说:

如果您没有为我设置宽度或高度,我假设它为零

但是position:absolute; left:0px; right:0px; top:0px; bottom:0px;的容器上的width:1000px; height:1000px;应该与在子容器上设置width:1000px; height:1000px相同,不是吗?

Taking a quick look at the source for this,为什么IE6不能基于绝对定位的 AND SIZED 元素渲染约束? (注意:我会把这个文件弄乱一段时间)

由于

2 个答案:

答案 0 :(得分:2)

简而言之,,它确实不允许这样(“绝对边缘定位”);这是一个众所周知且长期存在的错误。在绝对定位元素上缺少width总是触发缩小到适合的行为,即使宽度应该从左/右可以推导出来。垂直相同。

  

为什么IE6不能基于绝对定位的AND SIZED元素渲染约束?

我目前在示例中没有看到。通常,如果您将边缘都声明为维度(例如,左+右+宽度),则绝对定位的元素会“过度约束”,并且会丢弃其中一个规则以使其他规则适合

  

/ *表仍然需要标记中的'cellspacing =“0”'* /

不。单元格上border-collapse: collapse; border-spacing: 0;加上padding: 0的组合会使cellspacing / cellpadding变得不必要(谢天谢地)。

  

明确:两者; / * ie6需要绝对定位的元素! * /

???

没有

答案 1 :(得分:1)

IE6是“最古老的”浏览器,主流网络开发人员仍然主要支持......不情愿。令人沮丧的部分原因是它支持符合标准的CSS渲染相当不稳定。标准说要做一件事,并且IE6引擎经常做另一件事,或者某些bug导致它误入歧途。多年前,请记住,IE6实际上相当不错,至少与Netscape和当时的其他大玩家相比。不再。人们没有升级。

如果IE6(以及大多数情况下,IE7)是您需要支持的浏览器,通常最好从开始编写CSS的那一刻开始记住这一点。看到你已经有点过了这一点,我建议你研究一下风格可以针对IE,尤其是IE6 + IE7的选择方式。最常见和最强大的方法,也许是您现在需要的方法,是“conditional comments”,它允许您链接只有特定版本的IE才会读取的样式表。一旦你掌握了它,你可能需要熟悉一些IE6的怪癖,例如: the concept of "having layout"

我还建议您下载a virtualization toolVPC images,以便Microsoft提供向后兼容的测试。这些将允许您在Mac上运行带有IE6或IE7的Windows实例,假设它是基于英特尔的新品种。谷歌搜索“VirtualBox VPC图像mac”将为您提供一个很好的配置教程列表。它并不复杂,但确实占用了一些硬盘空间。