欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  web前端

CSS魔法堂:hasLayout原来是这样的!_html/css_WEB-ITnose

程序员文章站 2022-06-06 15:03:59
...

前言

过去一直听说旧版本IE下很多诡异bug均由一个神秘角色引起的,那就是hasLayout。趁着最近突然发神经打算好好学习CSS,顺便解答多年来的疑惑。

hasLayout到底是何方神圣?

hasLayout可以简单看作是IE5.5/6/7中的BFC(Block Formatting Context)。也就是用于决定一个元素要么自己对自身内容进行组织和尺寸计算,要么由其containing block来组织和尺寸计算。

当hasLayout为true时(就是所谓的"拥有布局"),相当于元素产生新BFC,元素自己对自身内容进行组织和尺寸计算;

当hasLayout为false时(就是所谓的"不拥有布局"),相当于元素不产生新BFC,元素由其所属的containing block进行组织和尺寸计算。

和产生新BFC的特性一样,hasLayout无法通过CSS属性直接设置,而是通过某些CSS属性间接开启这一特性。不同的是某些CSS属性是以不可逆方式间接开启hasLayout为true。并且默认产生新BFC的只有 html元素,而默认hasLayout为true的元素就不只有 html元素了。

另外我们可以通过 object.currentStyle.hasLayout属性来判断元素是否开启了hasLayout特性。

到这里我们应该了解到若要理解hasLayout则必须理解BFC,因此这里可参考 CSS魔法堂:重新认识Box Model、IFC、BFC和Collapsing margins

默认 hasLayout==true的元素

, 
, ,
, CSS魔法堂:hasLayout原来是这样的!_html/css_WEB-ITnose,
,

专题推荐

作者信息
CSS魔法堂:hasLayout原来是这样的!_html/css_WEB-ITnose

认证0级讲师

推荐视频教程
  • CSS魔法堂:hasLayout原来是这样的!_html/css_WEB-ITnosejavascript初级视频教程
  • CSS魔法堂:hasLayout原来是这样的!_html/css_WEB-ITnosejquery 基础视频教程
  • 视频教程分类