`
yiminghe
  • 浏览: 1460398 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

IE layout 探讨

阅读更多

今天的一个奇怪的事以及分析Ext.util.TextMetrics有 发现 探讨一下 :当 div 为绝对定位或者浮动的情况下(并且不设置宽度) ,div 会恰好收缩包含它的子节点。 但是 ie 系列当该 div 下的子节点有 layout ( On having layout 时,情况就不同了,该具有 layout  的子节点会自动扩展其宽度,并导致包含其的父节点div的所有子节点都扩展宽度至浏览器大小


如下面代码:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>宽度 测试</title>
<script type="text/javascript">
//<![CDATA[
window.onload=(function() {
 alert('test width :'+document.getElementById('test').offsetWidth);
 alert('test2 width :'+document.getElementById('test2').offsetWidth);
});
//]]>
</script>
</head>
<body>
<div id='test' style='border:1px solid green;position:absolute;top:100px;left:0px;height:100px;'>
  <div style='float:right;'>
		父节点绝对定位 : 子节点浮到右边了
  </div>
  <span>另一个子节点原地不动 </span>
</div>

<script type='text/javascript'>
	alert('为什么不加alert,ie下绝对定位的元素会显示不出来呢');
</script>

<div id='test2' style='border:1px solid green;float:right'>
	
	<div style='zoom:1;'>
		父节点浮动处理 : 子节点 在 ie 中有了 layout
  </div>
  
	<span>另一个子节点原地不动 </span>
</div>
</body>
</html>
 

正常情况下:

 

test  test2 应该紧紧包含其子节点,而不应该扩展到浏览器的宽度,这正是 firefox , opera 的表现,而 ie 系列就差强人意了。

 

各个浏览器的测试效果图:

 

 IE 6 结果最不如人意:

 

  

 

IE 7 一个div 合格了 :

 

 

ie8 刷新前后竟然还不一样,难道 ie8 bug ( dtd 的作用- ie8 bug ):

 

 

 


Firefox , opera 应该都是符合标准的 :

 

 

 

 

 

 

 

 

 

 

msdn 官方解释:

 

HasLayout Overview :There are also auto-sizing side effects: an element with layout cannot "shrink to fit" its children, so for example an absolute positioned box around an element with layout does not shrink to fit the layout element's children.

 


要解决这个问题:只能是在父节点 div 上显示设置 宽度 ,这也是 Ext.util.TextMetrics 的作用,读出子节点文字应有的宽度,再重置给父节点。(Ext.util.TextMetrics 近日待具体解析)

 

综上所述:IE 下 Layout ( On having layout ) 真的很重要,要重点理解。

 

  • 大小: 10.5 KB
  • 大小: 10.6 KB
  • 大小: 45.7 KB
  • 大小: 46 KB
  • 大小: 42 KB
  • 大小: 23.7 KB
分享到:
评论

相关推荐

    ie-css3(让ie6 ie7 ue8支持css3).rar

    例如,边框半径(border-radius)、阴影(box-shadow)、渐变(gradients)、多列布局(multi-column layout)和过渡(transitions)等。 2. **Internet Explorer兼容性问题**:在CSS3发布时,IE6、7和8已经存在,...

    IE6,IE7,IE8兼容性问题

    本文将针对IE6, IE7, IE8中常见的兼容性问题进行深入探讨,并提供相应的解决方案。 #### 二、CSS兼容性问题及解决方案 ##### 2.1 div的垂直居中问题 **问题描述**:在某些情况下,开发者希望将一个元素在其父容器...

    div+css兼容ie6ie7ie8ie9和FireFoxChrome等浏览器方法[借鉴].pdf

    本文将深入探讨如何使CSS样式兼容IE6、IE7、IE8、IE9以及Firefox、Chrome等现代浏览器。 1. **DOCTYPE声明的影响**: DOCTYPE声明对于浏览器的渲染模式至关重要。在HTML文档的顶部加入正确的DOCTYPE,如`&lt;!DOCTYPE...

    react-ReactGridLayout网格布局gridlayout系统但专为React服务

    在本文中,我们将深入探讨 React-Grid-Layout 的核心概念、主要功能以及如何在项目中集成和使用它。 ### 核心概念 1. **Grid**: Grid 是 React-Grid-Layout 的基础,它由一系列的单元格组成,每个单元格对应一个...

    IE工具集合

    本文将深入探讨“IE工具集合”,它主要涵盖了工业工程(Industrial Engineering,简称IE)领域以及精益物流的实用工具。IE是优化生产系统、提高效率、降低成本的一门学科,而精益物流则是IE理念在物流管理中的具体...

    IE6下的纯CSS完美position:fixed实现

    5. **双飞翼布局(double fly layout)**:这是一种针对IE6的布局解决方案,可能也可以用来模拟`position: fixed`。它通常涉及使用浮动和负margin,但不保证能完全复制`position: fixed`的行为。 6. **CSS Hack**:...

    如何做好IE工作之IE七大手法.zip

    下面,我们将深入探讨这七大手法。 1. 工作要素法(Element of Work Analysis, EWA):这是分析工作流程的基础方法,通过对工作过程中的每一个动作进行细致观察,记录并分类,以识别出无效或冗余的动作,进而改进...

    利用Visual C++打造自己的IE浏览器

    "利用Visual C++打造自己的IE浏览器"这个主题深入探讨了如何使用微软的Visual C++ IDE和MFC(Microsoft Foundation Classes)库来创建一个基于Internet Explorer引擎的自定义浏览器。 C++是一种强大的编程语言,它...

    css规范_IE bug,IE与Firefox的CSS兼容问题.....整理

    本文主要探讨了针对IE浏览器,尤其是IE与Firefox之间存在的CSS兼容性问题,并提供了一些解决方案和编写高效、维护友好的CSS代码的规范。 一、使用CSS方法 遵循W3C标准编写CSS,避免使用非标准或过时的属性,这将有...

    在IE6,7中遇到未知的问题无法解决时可以尝试触发其layout

    本文将深入探讨如何在遇到这类问题时,通过触发hasLayout来寻找解决方案。 首先,hasLayout是IE6和IE7特有的一个概念,它涉及到元素如何在页面上渲染,以及如何处理自身尺寸和内容。当一个元素"拥有layout",它会...

    ie常见问题

    本文将深入探讨IE浏览器中的常见问题及其解决方案,主要针对CSS兼容性方面。 首先,DOCTYPE声明对CSS处理有显著影响。在HTML文档中,正确的DOCTYPE声明可以帮助浏览器进入标准模式,从而正确解析CSS。对于IE,不...

    DIV+CSS 兼容性 IE FF

    ### DIV+CSS 兼容性 IE FF:深入探讨浏览器间的差异与共通点 #### 一、引言 随着Web技术的发展,DIV+CSS布局已成为网页设计中的主流方式。然而,在实际开发过程中,不同的浏览器(如Internet Explorer 6/7/8、Fire...

    IE方法在KD包装车间中的应用

    本文所探讨的IE方法在KD包装车间的应用案例,是工业工程实践的一个具体范例。 首先,要了解IE方法中的几个重要概念和工具:工艺程序分析、动作分析和时间分析。工艺程序分析是指对企业生产或服务流程的每个步骤进行...

    On having layout

    本文将详细探讨这一概念,帮助开发者更好地理解和掌握如何利用CSS来解决浏览器渲染不一致的问题。 #### 一、CSS布局与“hasLayout”定义 ##### 什么是“hasLayout”? “hasLayout”是Internet Explorer(IE)...

    ie6/7要逆天 text: empty text node 高度问题探讨

    本文将探讨一个特定的现象,即"empty text node"(空文本节点)在这些老版本的IE浏览器中表现出的高度问题。这个问题在某些情况下可能导致布局的不一致,增加前端开发者的调试难度。 首先,我们需要理解什么是...

    CSS Grid布局教程之浏览器开启CSS Grid Layout汇总

    在探讨CSS Grid布局教程中,浏览器对CSS Grid Layout的支持情况显得尤为关键。CSS Grid布局是一种先进的网页布局方式,它通过定义二维网格系统来实现复杂、灵活的页面布局,是CSS3新增的布局模型。 首先,我们需要...

    在DELPHI中实现用RZPAGECONTROL实现多标签窗口功能(类似IE8以上)

    RZPageControl是RAIZE组件库中的一个强大工具,它允许开发者轻松创建这样的功能,类似于IE8及更高版本的界面体验。在本教程中,我们将深入探讨如何使用RZPageControl来构建多标签窗口,并了解相关的知识点。 首先,...

    绝对定位也可触发行内元素的layout说明

    本篇文章将详细探讨这两个知识点,并着重解决在Internet Explorer 6(IE6)浏览器下遇到的问题。 首先,我们来理解什么是“绝对定位”。在CSS中,定位(Positioning)是一种控制元素在页面上精确位置的方法。绝对...

    IE与Firefox的CSS兼容大全 推荐

    文档中还探讨了cursor属性的兼容问题,cursor:pointer在FF和IE中都可以正常工作,而cursor:hand仅在IE中有效。类似地,链接的边框和背景色在FF中需要设置display:block和float:left,而在IE中则没有这样的限制。 在...

Global site tag (gtag.js) - Google Analytics