爱米*阅

不是日志,不是剪切板

Handle IE - [技术 | Tech]

发布时间   2010-12-09 @ 21:36:00 标签    html ie haslayout css 编辑 | 分享 0

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://www.blogbus.com/amixyue-logs/87955195.html

作者按:

handle IE 才是高手!特此抽空整理 IE 下所有诡异现象在此。长期补充中——

HasLayout

什么是hasLayout?

没有一个css属性叫做 hasLayout 或者layout。但是你却可以通过其它 dimensional CSS property 如 :

  • display : inline-block
  • height : (any value except auto )
  • float : (left or right )
  • position : absolute
  • width : (any value except auto )
  • writing-mode : tb-rl
  • zoom : (any value except normal )

    等触发 hasLayout,对于 IE7 还有:

    • min-height : (any value)
    • max-height : (any value except none )
    • min-width : (any value)
    • max-width : (any value except none )
    • overflow : (any value except visible )
    • overflow-x : (any value except visible )
    • overflow-y : (any value except visible )5
    • position : fixed

    于是 IE 就使用另一套渲染引擎,渲染页面。

    hasLayout 有什么特点?

    load document->parse –>render

    在 render 的过程中,需要 size & arrange ,一种是相对于其祖先 size & arrange,另一种就是自身 size & arrange。

    hasLayout 的元素,就是自理能力非常高的。默认 hasLayout 的元素有:

    • body and html (in standards mode)
    • table , tr , th , td
    • img
    • hr
    • input , button , file , select , textarea , fieldset
    • marquee
    • frameset , frame , iframe
    • objects , applets , embed

    其它元素,则需要通过 dimentional css property 触发 haslayout。

    hasLayout 有什么缺点?

    元素自布局的时候,对于执行效率和内存管理都有很大的副作用。所以尽量避免。

  • 分享到: