zoukankan      html  css  js  c++  java
  • IE的haslayout的触发

    原文连接:http://www.cnblogs.com/yunxuange/archive/2012/09/19/2693886.html

     

    layout是Windows上的IE浏览器产生许多bug的根源。如果遇到一个IE bug首先应该做的事情之一就是尝试应用规则迫使元素拥有layout。

    layout(布局)概念是Windows上的IE特有的(IE Mac 和 windows 上的 IE 是完全不同的两个东西,它们各自拥有自己的渲染引擎。),并且它不是css属性。拥有layout的元素负责本身及其子元素的尺寸和定位;不拥有 layout的元素,它的尺寸和位置由最近的拥有layout的父元素控制。

    可以使用JavaScript函数hasLayout查看一个元素是否拥有布局,函数返回true即该元素拥有layout,否则返回false。hasLayout是一个只读属性。

     

    在默认情况下拥有layout的元素包括:

    • body
    • 标准模式中的html
    • table
    • tr/td
    • img
    • hr
    • input/select/textarea/button
    • iframe/embed/object/applet
    • marquee

    设置以下css属性会自动地使元素拥有layout:

    • position: absolute 或 fixed
    • float: left 或 right
    • display: table 或 table-cell 或 inline-block 或 inline-table
    • overflow: hidden 或 scroll 或 auto(IE7会,IE6不会)
    • 除 “auto” 之外的任何值
    • height: 除 “ auto” 之外的任何值
    • min- 任何值(IE6不支持此属性)
    • max- 除 “none” 之外的任何值(IE6不支持此属性)
    • min-height: 任何值(IE6不支持此属性)
    • max-height: 除 “none” 之外的任何值(IE6不支持此属性)
    • zoom: 除 “normal” 外的任何值(Microsoft属性——不能通过W3C检验)
    • writing-mode: tb-rl(Microsoft属性——不能通过W3C检验)

    layout产生的影响:

    • 拥有layout的元素是IE产生浮动Bug的根源
    • 拥有layout的文本元素不会围绕浮动元素
    • 拥有layout的元素不进行收缩
    • layout元素对浮动进行自动清理
    • 拥有layout的列表元素(ul/ol/dl/li)会表现异常
    • 拥有layout的元素背景图像定位(background-position)会产生偏差
    • 相对定位(position: relative)的元素不能获得layout
    • 拥有layout的元素之间外边距(margin)不叠加
    • 在不拥有layout的块级(display:block)链接上,单击区域只覆盖文本




  • 相关阅读:
    !JS实战之随机像素图
    bgp选路原则【第二部】
    BGP基础【第三部】
    【★】KMP算法完整教程
    ★如何引导客户需求?几个经…
    html标签缺省(自带)样式大全
    Web颜色对照表大全
    PS各个工具的字母快捷键和英…
    色相、明度及饱和度
    用webgl打造自己的3D迷宫游戏
  • 原文地址:https://www.cnblogs.com/czf-zone/p/3632310.html
Copyright © 2011-2022 走看看