zoukankan      html  css  js  c++  java
  • IE下的haslayout特性

    什么是hasLayout?hasLayout是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

    有时候还会遇到 外层的div高度为0,而内层div高度大于0,外层没有随着内层的高度变化。IE下解决这个问题,只要触发IE的hasLayout就行了,在CSS里增加一句 zoom:1;

  • 相关阅读:
    K
    士兵队列训练问题
    分析A + B Problem II
    C++中sort()的用法
    swing初级应用创建一个窗体
    java生成随机数
    JAVA数字格式化
    CodeForces
    POJ
    51Nod
  • 原文地址:https://www.cnblogs.com/52php/p/5660068.html
Copyright © 2011-2022 走看看