• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >浏览器兼容 > 详解IE浏览器的haslayout属性及相关兼容性问题解决

详解IE浏览器的haslayout属性及相关兼容性问题解决

作者:kingring 字体:[增加 减小] 来源:互联网 时间:2017-06-02

本文主要包含ie haslayout,haslayout,bfc haslayout,haslayout属性,haslayout是什么等相关知识,kingring 希望在学习及工作中可以帮助到您

IE,这个令所有网站设计人员讨厌,但又不得不为它工作的浏览器。不论是6、7还是8,它们都有一个共同的渲染标准haslayout,所以haslayout 是一个非常有必要彻底弄清除的概念。大多 数IE下的显示错误,就是源于它。

什么是Layout呢?
"Layout" 是 IE 的一个私有属性,并不是W3C标准。它决定了一个对象(就是一个标签div、li等)在内容中如何显示、与周围对象的位置关系、以及怎样响应程序或用户产生的事件。

这个属性可以被一些css强制激活。一些HTML标签默认具有haslayout。
PS:一个对象的layout属性被激活,它的具体表现就是haslayout=true。我们可以用IE Developer Toolbar工具看到被激活的对象带有"haslayout = -1"的属性。

下面这些标签默认拥有haslayout属性:

</div>
  1. <html>, <body>  
  2. <table>, <tr>, <th>, <td>  
  3. <img>  
  4. <hr>  
  5. <input>, <button>, <select>, <textarea>, <fieldset>, <legend>  
  6. <iframe>, <embed>, <object>, <applet>  
  7. <marquee>  
</div> </div>

你可能就问:微软干嘛要设layout这个东西呢?当一个对象的layout被激活时,它以及它的子对象的定位和尺寸计算将独立进行,不受附近对象 的干扰。也就是说它拥有一个独立的布局(layout)。因此浏览器要花费更多的代价来处理拥有haslayout的对象。为了提高性能,微软增加了 layout这个IE私有的概念。

怎样激活layout?
下面列出的css属性可以激活对象的layout:

</div>
  1. position: absolute  
</div> </div>

设置绝对定位可能会引发新的问题。

</div>
  1. float: left|rightright  
</div> </div>

IE下的浮动也会产生一些莫名其妙的问题。

</div>
  1. display: inline-block  
</div> </div>

当一个内联元素需要haslayout属性时就需要用它,但是IE本身不支持inline-block的,只是表现得像标准里说的inline-block。
1.width: 除'auto'外的任意值
优先考虑使用该属性。
2.height: 除'auto'外的任意值
对 IE6 及更早版本来说很常用,该方法被称为霍莉破解(Holly hack),即设定这个元素的高度为 1% (height:1%;)。但是要注意,当这个元素的 overflow 属性被设置为 visible 时,这个方法就失效了。
3.zoom: 除'normal'外的任意值
又一个ie私有属性,不兼容标准。zoom:1可以在测试或者不追求标准的情况下使用,效果不错。

</div>
  1. writing-mode: tb-rl  
</div> </div>

ie私有属性,不推荐用。
IE7 还有一些额外的属性:

1.min-height: (任意值)
2.max-height: (除 none 外任意值)
3.min-width: (任意值)
4.max-width: (除 none 外任意值)
5.overflow: (除 visible 外任意值)
6.overflow-x: (除 visible 外任意值)
7.overflow-y: (除 visible 外任意值)
8.position: fixed

重置haslayout
在没有其它属性激活layout的情况下,使用下面的css可以重置haslayout属性:

1.width, height (设为 "auto")
2.max-width, max-height (设为 "none")(在 IE 7 中)
3.position (设为 "static")
4.float (设为 "none")
5.overflow (设为 "visible") (在 IE 7 中)
6.zoom (设为 "normal")
7.writing-mode (从 "tb-rl" 设为 "lr-t")
display 属性的不同:当用"inline-block"激活了haslayout 属性时,就算在一条独立的规则中覆盖这个属性为"block"或"inline",haslayout 这个标志位也不会被重置为 false。

把 mid-width, mid-height 设为它们的默认值"0"仍然会赋予 hasLayout,但是 IE 7 却可以接受一个不合法的属性"auto"来重置 hasLayout。

触发 hasLayout 清除浮动
样例:

</div>
  1. haslayout-clear-float:{width:1px}  
</div> &l

您可能想查找下面的文章:

  • 详解IE浏览器的haslayout属性及相关兼容性问题解决
  • 深入解析IE浏览器专有的CSS属性hasLayout

相关文章

  • 2017-06-02IE下textarea默认不显示滚动条的实现代码
  • 2017-06-02IE7部分标签(span、input )设置text-indent:-9999px后不在相应位置显示
  • 2017-06-02IE下textarea中font-size值很大时文字不显示的解决方法
  • 2017-06-02Web字体格式介绍以及浏览器兼容性一览
  • 2017-06-02FireFox正常 IE错位的绝对定位元素
  • 2017-06-02兼容浏览器的css网页细线表格设计
  • 2017-06-02CSS Hack 区分 IE6 / IE7 /IE8 /Firefox
  • 2017-06-02图片垂直居中css写法兼容ie6
  • 2017-06-02IE7.0以下版本列表li中的元素错位一个上一个下的解决方法
  • 2017-06-02IE6 bug修正的10个小技巧 推荐

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • IE10 CSS Hack介绍及IE11的CSS Hack提前了解
    • IE和FF在对js支持的不同(整理)及解决方法
    • css hack问题
    • ie6不支持hover ie6 标签(除a标签)不支持伪类:hover解决方案
    • png图片在ie8浏览器下有黑色边框的解决方法
    • 文字超过宽度显示省略号(无js全兼容)
    • ie6下a标签的onclick事件不执行问题解决方案
    • CSS hack 介绍及速查对照表
    • CSS背景图拉伸效果兼容FF/Chrome/IE等主流浏览器(亲测)
    • IE6/IE7下绝对定位position:absolute和margin的冲突问题解决

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有