zoukankan      html  css  js  c++  java
  • 认识hasLayout——IE浏览器css bug的一大罪恶根源 转

     

      什么是hasLayouthasLayout 是IE特有的一个属性。很多的ie下的css bug都与其息息相关。在ie中,一个元素要么自己对自身的内容进行计算大小和组织,要么依赖于父元素来计算尺寸和组织内容。当一个元素的 hasLayout属性值为true时,它负责对自己和可能的子孙元素进行尺寸计算和定位。虽然这意味着这个元素需要花更多的代价来维护自身和里面的内 容,而不是依赖于祖先元素来完成这些工作。
    下列元素默认 hasLayout=true
    <table> <td> <body> <img> <hr> <input> <select> <textarea> <button> <iframe> <embed> <object> <applet> <marquee>
    很多情况下,我们把 hasLayout的状态改成true 就可以解决很大部分ie下显示的bug。
    hasLayout属性不能直接设定,你只能通过设定一些特定的css属性来触发并改变 hasLayout 状态。下面列出可以触发hasLayout的一些CSS属性值。
    -------------------------------------
    display
    启动haslayout的值:inline-block
    取消hasLayout的值:其他值
    --------------------------------------
    width/height
    启动hasLayout的值:除了auto以外的值
    取消hasLayout的值:auto
    ---------------------------------------
    position
    启动hasLayout的值:absolute
    取消hasLayout的值:static
    ----------------------------------------
    float
    启动hasLayout的值:left或right
    取消hasLayout的值:none
    ---------------------------------------
    zoom
    启动hasLayout的值:有值
    取消hasLayout的值:narmal或者空值
    (zoom是微软IE专有属性,可以触发hasLayout但不会影响页面的显示效果。zoom: 1常用来除错,不过 ie 5 对这个属性不支持。)
    ----------------------------------------
    writing-mode: tb-rl
    这也是微软专有的属性。
    ie7还有一些额外的属性可以触发该属性(不完全列表):
    min-height: (任何值)
    max-height: (任何值除了none)
    min- (任何值)
    max- (任何值除了none)
    overflow: (任何值除了visible)
    overflow-x: (任何值除了visible)
    overflow-y: (任何值除了visible)5
    position: fixed
    因元素hasLayout而导致的问题其实一般都很容易发现:往往是内容出现错位甚至完全不可见。举一个典型例子,当一个元素内含浮动或绝对定位的内容时,它通常会表现出奇怪和错误的行为,看下面的代码:

  • 相关阅读:
    我心飞翔
    又见草堂
    有一种爱只能用心去珍藏《转贴》
    人事管理制度(爆笑)
    廊桥放歌
    记住: 惰性,职业生涯的无形杀手
    职场“三无人员”如何突破自己
    升职“流产”,都是谦虚惹的祸(转)
    李嘉诚让员工忠诚的简单办法
    尤未尽意
  • 原文地址:https://www.cnblogs.com/lifeisshort/p/5076874.html
Copyright © 2011-2022 走看看