-
Having “layout”
Having “layout” We all know that browsers can be buggy, and IE on Windows seems buggier than most. One of the reasons IE/Win behaves differently from other browsers is because the rendering engine uses an internal concept called “layout.” Because layout is a concept particular to the internal working of the rendering engine, it is…
-
拥有布局 IE haslayout
找们那知道浏览器有bug,而且Windows上的lE的bug 似乎比太多数浏览器都多。IE/Win的衣现与其他浏览器不同的原因之一是,显示引擎使用一个称为布局(layout)的内部概念。因为布均是一个专门针对显示引擎内部工作方式的概念,所以一般悄况下不需要了解它。但是,布局问题是许多IE/Win显示bug的根源,所以理解这个概念以及它如何影响CSS是有捂助的。 什么是布局 Windows 上的IE 使用布局概念来控制元素的尺寸和定位。那些称为拥有布局(have layout)的元素负责本身及其子元素的尺寸和定位。如果一个元旦在没有拥有布局,那么它的尺寸和位置由最近的拥有布局的祖先元素控制。 IE 显示引擎利用布局概念减少它的处理开销。在理想悄况下,所有元素都控制自己的尺寸和定位。但是,这会在IE中导致很大的性能问题。因此,IE/Win 开发团队决定只将布局应用于实际需要它的那些元素,这样就可以充分地减少性能开销。 在默认情况下拥有布局的元素包括: body 标准模式中的 html table tr, td img hr input, select, textarea, button iframe, embed, object, applet marquee 布局概念是Windows 上的I E 特有的,而且它不是CS S 属性.尽管某些CSS 属性会使元ffi拥有布局,但是在CSS 巾无法显式地设宣布局.可以使用JavaScript 函数hasLayout 查看一个元亲是否拥有布局.如果元素拥有布局,这个函数就返回true ; 否则返回falseo hasLayout 是一个只读属性,所以无法使用JavaScript 选行设置. 设宜以下CSS 属性会自动地使元亲拥有布局· position: absolute float: left or right display: inline-block width: any…
-
XHTML CSS 学习总结
IE的haslayout是个很纠结的东西,掌握好CSS就得掌握好它。初学CSS时走了很多弯路,以下几篇文章在我的学习中起了很大的作用,希望能让大家受益。 之前有翻译一篇on having layout的文章,我的翻译文章在这里:IE Haslayout 详解, 本文Having layout 的摘自 CSS Mastery Part 9, 实例部分是对之前翻译文章很好的补充,部分IE BUG很少用到,就略去了。直接阅读本文的中文版:IE拥有布局 追寻本源,上策攻心——学习技术以学习它的思想、方法为上策,掌握方法再学习技术会茅塞顿开。以下是关于CSS调试思路的文章,各人的角度不太一样,但大体上的思想是差不多的,互为补充。 我的文章:XHTML CSS调试的一些思路 我的文章:整理后的CSS Mastery 的章节 BUGS AND BUG FIXING (En), 臭虫以及臭虫解决方案(中文版) 淘宝UED 怿飞写的如何快速定位页面中复杂 CSS BUG 问题
-
IE Haslayout 详解
IE的haslayout是个很纠结的东西,掌握好CSS就得掌握好它。初学CSS时走了很多弯路,以下几篇文章在我的学习中起了很大的作用,希望能让大家受益。 此文是和老包共同弄的,参考了On have layout 。 另外两篇文章摘自CSS Mastery【精通CSS】,与此文相互补充,希望对大家有帮助 Having “layout” 拥有布局 IE haslayout 拥有layout概述 Internet Explorer 中有很多奇怪的渲染问题可以通过赋予其”layout”得到解决。John Gallant 和 Holly Bergevin 把这些问题归类为”尺寸臭虫(dimensional bugs)”[32],意思是这些臭虫可以通过赋予相应元素某个宽度或高度解决。 “Layout”是一个 Internet Explorer for Windows的私有概念,它决定了一个元素如何显示以及约束其包含的内容、如何与其他元素交互和建立联系、如何响应和传递应用程序事件、用户事件等。这种渲染特性可以通过某些 CSS 属性被不可逆转地触发。而有些 HTML 元素则默认就具有”layout”。 微软的开发者们认为元素都应该可以拥有一个”属性(property)”(这是面向对象编程中的一个概念),于是他们便使用了 hasLayout,这种渲染特性生效时也就是将 hasLayout 设成了 true 之时。了解hasLayout将对IE的臭虫会有更多深入的体会甚至解决方案。