CSS盒模型

CSS盒模型

1. 标准盒模型与IE盒模型

css盒模型分为标准模型IE模型两类,两者的区别就是宽高包含范围的区别:
标准模型 盒子的宽 = width;IE模型盒子的宽 = border+padding+width。
浏览器默认为标准盒模型box-sizing:content-box。要想设置为IE盒模型,设置box-sizing:border-box就可以实现。

2.JS如何设置盒模型对应的宽和高

  • dom.style.width/height

可读可写;缺点:只能取出内联样式里设置的宽高。

  • dom.currentStyle.width/height

获取的是在页面渲染完成后的结果,不管是哪种方式设置的样式,都能获取到。IE8支持。

  • window.getComputedStyle(dom).width/height

获取的值和dom.currentStyle.width/height基本一致,只读。IE9及以上还有其他浏览器基本都支持。

  • dom.getBoundingClientRect().width/height

根据元素在视窗中的绝对位置来获取宽高

  • dom.offsetWidth/offsetHeight

获取除margin外的宽和高。比较常用。

拓展各种获得宽高的方式:

  • 获取屏幕的高度和宽度(屏幕分辨率):window.screen.height/width
  • 获取屏幕工作区域的高度和宽度(去掉状态栏):window.screen.availHeight/availWidth
  • 网页全文的高度和宽度:document.body.scrollHeight/Width
  • 滚动条卷上去的高度和向右卷的宽度:document.body.scrollTop/scrollLeft
  • 网页可见区域的高度和宽度(不加边线):document.body.clientHeight/clientWidth
  • 网页可见区域的高度和宽度(加边线):document.body.offsetHeight/offsetWidth

更多参考 JS中的offsetWidth、offsetHeight、clientWidth、clientHeight等等的详细介绍

3.BFC

边距重叠

垂直方向上的两个块状元素放在一起,且每个元素都设置了上下margin值,元素相贴的那一边的margin取margin-top和margin-bottom中最大的那个。

下面的代码,当父元素设置overflow:hidden的时候,就会创建一个BFC,父元素高度会由100px变成110px。

<style type="text/css">
    *{
        margin: 0;
        padding:0;
    }
    #wrap{
        background-color: #fae56e;
        /*overflow: hidden;*/
    }
    #child{
        width: 100%;
        height: 100px;
        margin-top: 10px;
        background-color: lightblue;
    }
</style>
</head>
<body>
<section id="wrap">
    <article id="child">
    </article>
</section>
</body>

BFC 块级格式化上下文

BFC特点
  1. 在一个BFC中,盒子从顶端开始垂直一个接着一个地排列,两个相邻盒子之间的垂直间距由margin属性决定。在同一个BFC中,两个相邻块盒子之间垂直方向上的外边距会叠加。
  2. 在一个BFC中,每一个盒子的左外边界(margin-left)会紧贴着容器的左边(border-left)(对于从右到左的格式化,则相反),即使存在浮动元素也是如此。
  3. BFC在页面上是一个容器,容器内外的元素不会相互之间影响。
  4. 计算BFC高度时,浮动元素也会参与计算。
BFC渲染规则
  1. 在一个BFC内部,盒子会在垂直方向上一个接着一个排列。
  2. 在一个BFC内部,相邻的margin-top和margin-bottom会叠加。
  3. 在一个BFC内部,每一个元素的左边界会紧贴着包含盒子的左边,即使存在浮动元素也是如此。
  4. 在一个BFC内部,如果存在内部元素是一个新的BFC,并且存在内部元素是浮动元素。则该BFC的区域不会与float元素的区域重叠。
  5. BFC就是页面上的一个隔离的盒子,该盒子内部的子元素不会影响到外面的元素。
  6. 计算一个BFC的高度时,其内部浮动元素的高度也会参与计算。
怎样创建BFC
  1. float值不为none
  2. position不为static或relative
  3. display为table-caption或table-cell或table
  4. overflow不为visible
BFC使用场景
  1. 解决边距重叠问题:给元素添加一个父元素,创建父级元素为BFC。
  2. BFC在布局上的应用:BFC元素不会与浮动元素重叠。
  3. 清除浮动原理:设置父元素为BFC,子元素即使是float也会参与到BFC高度计算。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值