背景
我有一个标准的三列布局,其中第一列向左浮动,第三列向右浮动。第一列需要全高背景。
- 此布局用于模板,因此三列中的任何一列都可以包含最长的内容。
- 我无法更改标记源顺序,因此
display:table
无法解决。 - 我无法添加任何 DOM 节点。
- 布局以最小和最大宽度为中心,因此我无法将垂直重复的背景图像附加到具有内置背景颜色的页面。
- 它需要在 IE7 中看起来不错,但 IE8+ 需要支持。
解决方案
为了实现全高左列,我在colLeft
. 该伪元素已将固定定位设置为视口底部、100% 高度,并放置在左列的后面。这个解决方案很棒,因为:
- IE8+ 支持伪元素。
- 伪元素附加到左列,所以如果模板没有左列,背景自然不存在。
- 通过不设置
left
orright
属性,固定位置的伪元素保留在左列(有利于居中布局)。
(在 IE 中查看 CodePens 时,请确保文档模式遵循浏览器模式)。
问题
在 IE8 中,全高左栏背景仅向下延伸到初始视口底部(折叠)。
我用新节点而不是伪元素创建了另一个测试。leftColBg
这在 IE8 中按预期工作,这意味着固定定位应该可以工作。
这是我可以在 IE8 和生成的内容上找到的最佳解释:为什么伪元素上的过滤渐变在 IE8 中不起作用?
我认为 IE8 错误地定位了生成的内容,因为它不是包含内容的“对象”。谁能更好地解释这个 IE8 错误?有解决办法吗?