有时候,你会发现,在缩小窗口或者拖选内容,又或者拉动滚动条的时候,奇怪的情况发生了: 恭喜你,你终于碰到了所谓的haslayout问题 何为Haslayout: “Layout”是一个 IE/Win 的私有概念,它决定了一个元素如何显示以及约束其包含的内容、如何与其他元素交互和建立联系、如何响应和传递应用程序事件/用户事件等,这有点类似于一个窗体的概念。 微软的开发者们认为盒状元素(box-type elements)应该具有一个“属性(property)”(这是面向对象编程中的一个概念),于是他们便使用了 layout , 也就是 hasLayout。 hasLayout 其实既不是一个属性更不是一个行为,而是 IE 这个渲染引擎代代继承一贯拥有的一个渲染概念,在这个概念下渲染的元素将具有一种特性。 实际上这种渲染特性在有些 HTML 元素中与身俱来,而在另外一些元素中也可以通过一些 CSS 属性将其触发为 true ,且一旦触发将不可逆转。 这真是一个伟大的属性,你经常遭遇到的一些浮动问题,滤镜未生效,背景、边框的渲染问题,都是拜他所赐,这个属性还会导致的问题: Many common IE float bugs. Boxes themselves treating basic properties differently. Margin collapsing between a container and its descendants. Various problems with the construction of lists. Differences in the positioning of [...]








