iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >在IE浏览器下出发CSS的haslayout属性是怎样的
  • 807
分享到

在IE浏览器下出发CSS的haslayout属性是怎样的

2024-04-02 19:04:59 807人浏览 薄情痞子
摘要

在IE浏览器下出发CSS的haslayout属性是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。我们都知道浏览器有bug

在IE浏览器下出发CSS的haslayout属性是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

我们都知道浏览器有bug,而IE的bug似乎比大多数浏览器都多。IE的表现与其他浏览器不同的原因之一就是,显示引擎使用一个称为布局(layout)的内部概念。

因为布局是专门针对显示引擎内部工作方式的概念,所以一般情况下不需要了解它。但是,布局问题是许多IE显示bug的根源,所以理解这个概念以及它如何影响CSS对修复bug是有帮助的。

一、什么是haslayout

haslayout是windows Internet Explorer渲染引擎的一个内部组成部分。在Internet Explorer中,使用布局概念来控制元素的尺寸和定位。在理想情况下,所有元素都控制自己的尺寸和定位。但是,这在IE中会导致很大的性能问题。因此,IE开发团队决定只将布局应用于实际需要它的那些元素,这样就可以充分地减少性能开销。

拥有布局(have layout)的元素负责本身及其子元素的尺寸和定位。如果一个元素没有布局,那么它的尺寸和位置由最近的拥有布局的祖先元素控制。IE显示引擎利用布局概念减少它的处理开销。一个元素要么自己对自身的内容进行计算大小和组织,要么依赖于父元素来计算尺寸和组织内容。

为了调节这两个不同的概念,渲染引擎采用了hasLayout的属性,属性值可以为true或false。当一个元素的 hasLayout属性值为true时,我们说这个元素有一个布局(layout),当一个元素有一个布局时,它负责对自己和可能的子孙元素进行尺寸计算和定位。简单来说,这意味着这个元素需要花更多的代价来维护自身和里面的内容,而不是依赖于祖先元素来完成这些工作。因此,一些元素默认会有一个布局。当我们说一个元素“拥有layout”或“得到layout”,或者说一个元素“has layout”的时候,我们的意思是指它的微软专有属性 hasLayout 被设为了true 。一个“layout元素”可以是一个默认就拥有layout的元素或者是一个通过设置某些CSS属性得到layout 的元素。如果某个html元素拥有haslayout属性,那么这个元素的 haslayout的值一定只有true,haslayout为只读属性一旦被触发,就不可逆转。通过IE Developer Toolbar可以查看IE下HTML元素是否拥有haslayout,在IE Developer Toolbar下,拥有haslayout的元素,通常显示为“haslayout = -1”。

二、默认拥有haslayout属性

<html>, <body>
<table>, <tr>, <th>, <td>
<img>
<hr>
<input>, <button>, <select>, <textarea>, <fieldset>, <legend>
<iframe>, <embed>, <object>, <applet>
<marquee>

三、IE下hasLayout布局的触发机制

言归正转,为此,我们要认识hasLayout,了解它,然后才能更好的针对问题找出解决办法。

首先,我们要了解Layout与hasLayout属性是什么?
Layout,意为“布局”,是IE/Windows下的特有概念,它决定了元素如何对其内容进行定位和尺寸计算,与其他元素的关系和相互作用,以及对应用还有使用者的影响。hasLayout为只读属性,对本身不具有Layout的元素,如果其Layout被动触发后是不可逆的。
hasLayout,是IE渲染引擎的一个内部组成部分。在IE中,一个元素计算大小和组织内容,要么对自身的内容进行计算大小和组织内容,要么依赖于父元素来计算尺寸和组织内容。为了调节这两个不同的概念,渲染引擎采用了hasLayout的属性,属性值可以为true或false。当一个元素的 hasLayout属性值为true时,我们说这个元素有一个布局(Layout)。

据不完全统计,默认具有haslyout的HTML标签元素有:<table>、<td>、<body>、<img>、<hr>、<input>、<select>、<textarea>、<button>、<iframe>、<embed>、<object> <applet>、<marquee>、< html>、< tr>、< th>、<fieldset>、< frameset>、<frame> 等。
当网页在IE中有异常表现时,可以首先通过尝试激发haslayout来确定是否为当前容器的Layout没有被激发造成。
接着,我们看如何来激发元素的hasLayout属性。以下是“寂寞贱客”
1、通过设置CSS能够获得的haslayout的属性有:display: inline-block;、height: (任何值除了auto);、float: (left或right);、position: absolute;、 width: (任何值除了auto);、writing-mode: tb-rl;、zoom: (除nORMal外任意值);、 min-height: (任意值);、 max-height: (除none外任意值);、min-width: (任意值);、max-width: (除none外任意值);、overflow: (除visible外任意值);、overflow-x: (除visible外任意值);、overflow-y: (除visible外任意值);、 position: fixed;(未完全统计)。
2、对于内联元素(默认即为内联的元素,如span,或display:inline; 的元素),width和height只在IE5.x下和IE6或更新版本的quirks模式下触发hasLayout。而对于IE6,如果浏览器运行于标准兼容模式(具有Doctype的模式)下,内联元素会忽略width或height属性,所以设置width或height不能在此种情况下令该元素具有layout。
3、zoom总是可以触发hasLayout,但是在IE5.0中不支持。
4、对IE6及更早版本来说,常用的方法被称为霍莉破解(Holly hack),即设定这个元素的height:1%;。需要注意的是,当这个元素的overflow属性为visible时,这个方法就失效了。曾经流行使用这种方法的时候,还没有出现IE7,而height属性在IE6下其实是按照"min-height"来解析的,所以只要对IE6进行hack,"* html{height:1%}"就可以触发hasLayout,同时又不产生副作用。后来出现的IE7仍然存在很多hasLayout的问题,但IE7已经能够正确识别height属性了,“height:1%”的方法已经不再适用了。
5、对IE7来说,最好的方法是设置元素的最小高度为0px(min-height0;)。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网html频道,感谢您对编程网的支持。

--结束END--

本文标题: 在IE浏览器下出发CSS的haslayout属性是怎样的

本文链接: https://www.lsjlt.com/news/81764.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 在IE浏览器下出发CSS的haslayout属性是怎样的
    在IE浏览器下出发CSS的haslayout属性是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。我们都知道浏览器有bug...
    99+
    2024-04-02
  • 怎样理解IE浏览器专有的CSS属性hasLayout
    怎样理解IE浏览器专有的CSS属性hasLayout,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一.hasLayout 是什么?hasL...
    99+
    2024-04-02
  • IE浏览器中CSS Hack技术用法是怎样的
    这篇文章给大家介绍IE浏览器中CSS Hack技术用法是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。针对IE浏览器CSS Hack你知道的有哪些,这里向大家描述一下常用IE浏览...
    99+
    2024-04-02
  • IE浏览器专有css属性中zoom的使用方法
    这篇文章将为大家详细讲解有关IE浏览器专有css属性中zoom的使用方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。zoom:1;一般是拿来解决IE6的子...
    99+
    2024-04-02
  • CSS中float在IE浏览器下换行问题怎么解决
    本篇内容介绍了“CSS中float在IE浏览器下换行问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
    99+
    2024-04-02
  • IE浏览器单独写CSS样式的方法有哪些
    本篇内容主要讲解“IE浏览器单独写CSS样式的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“IE浏览器单独写CSS样式的方法有哪些”吧!IE hack...
    99+
    2024-04-02
  • 火狐浏览器和IE的CSS区别是什么
    本篇文章给大家分享的是有关火狐浏览器和IE的CSS区别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。你对IE和火狐浏览器的CSS区别是否...
    99+
    2024-04-02
  • CSS hack技术在IE8浏览器中的应用是怎样的
    这期内容当中小编将会给大家带来有关CSS hack技术在IE8浏览器中的应用是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。向大家介绍...
    99+
    2024-04-02
  • IE浏览器中值得关注的JS问题是怎么样的
    IE浏览器中值得关注的JS问题是怎么样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。刚才在调试js,在mozilla中一切正常,但是在ie中却报告有configuration...
    99+
    2023-06-03
  • li在ie/firefox浏览器中行高不一致解决方法是怎样的
    本篇文章给大家分享的是有关li在ie/firefox浏览器中行高不一致解决方法是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。代码如下:...
    99+
    2024-04-02
  • Win8电脑怎么导出ie浏览器的收藏夹
    这篇文章主要为大家展示了“Win8电脑怎么导出ie浏览器的收藏夹”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Win8电脑怎么导出ie浏览器的收藏夹”这篇文章吧。Win8电脑导出ie浏览器的收藏...
    99+
    2023-06-27
  • IE浏览器与FF浏览器关于Ajax传递参数值为中文时的区别是怎样的
    今天就跟大家聊聊有关IE浏览器与FF浏览器关于Ajax传递参数值为中文时的区别是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。具体如下:这里主...
    99+
    2024-04-02
  • Web开发的网页浏览器现状是怎样的
    Web开发的网页浏览器现状是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。现在的互联网网络浏览器市场给我们呈现的是一个变...
    99+
    2024-04-02
  • CSS基本属性样式是怎么样的
    这篇文章给大家分享的是有关CSS基本属性样式是怎么样的的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.Color:颜色;规定颜色值为颜色单词名称例如(red)或者十六进制值得颜...
    99+
    2024-04-02
  • XP系统IE浏览器“你的浏览器已升级”弹出窗口的解决方法是什么
    本篇内容主要讲解“XP系统IE浏览器“你的浏览器已升级”弹出窗口的解决方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“XP系统IE浏览器“你的浏览器已升级”弹出窗口的解决方法是什么”吧!...
    99+
    2023-06-13
  • 常见css属性进行浏览器兼容性的示例分析
    这篇文章给大家分享的是有关常见css属性进行浏览器兼容性的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。css3.jpeg其实,在实际的开发过程中,我们对常见的css属性...
    99+
    2024-04-02
  • HTML5的hidden属性怎么兼容老浏览器
    本篇内容介绍了“HTML5的hidden属性怎么兼容老浏览器”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2024-04-02
  • 常用css样式属性分别是怎样的
    常用css样式属性分别是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一 CSS文字属性:color : #999999; font...
    99+
    2024-04-02
  • 针对不同浏览器获取到css文件里相关属性的两种方法分别是怎样的
    针对不同浏览器获取到css文件里相关属性的两种方法分别是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 先看...
    99+
    2024-04-02
  • 浏览器运行环境是怎样的
    这篇文章主要讲解了“浏览器运行环境是怎样的”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“浏览器运行环境是怎样的”吧!国际五大浏览器品牌:按照全球使用率降序排...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作