zoukankan      html  css  js  c++  java
  • 谈谈你对CSS盒模型的认识?

    我个人认为W3C定义盒子模型与IE定义的盒子模型,IE定义的比较合理,元素的宽度应该包含border(边框)和padding(填充),这个和我们现实生活的盒子是一样的,W3C也认识到自己的问题了,所以在CSS3中新增了一个样式box-sizing,包含两个属性content-box 和 border-box。
     
     
    1、基本概念:标准模型+IE模型、标准模型 与 IE模型区别
    (1)W3C定义的盒子模型包括margin、border、padding、content ,元素的width=content的宽度
      
    (2)IE盒子模型与W3C的盒子模型唯一区别就是元素的宽度,元素的width=content+padding+border
       
     
    2、CSS是如何设置这两种模型
    box-sizing: content-box (浏览器默认方式)类似于W3C定义的盒模型 content = width;
    box-sizing: border-box 类似于IE定义的盒模型 content = width + border + padding;
     
    3、JS如何设置获取盒模型对应的宽和高
    dom.style.width/height //内联样式才可以
    dom.currentStyle.width/height //仅IE支持 原理是渲染后的元素的宽高相对来说比较准确
    window.gteComputedStyle(dom).width/height //兼容Firefox与Chrome 原理跟上面的一样,所有浏览器都支持
    dom.getBoundingClientRect().width/height
    //dom.getBoundingClientRect() 函数返回一个Object对象,该对象有6个属性:top,lef,right,bottom,width,height;
     
    4、实例题(根据盒模型介绍边距重叠)
    边界重叠是指两个或多个盒子(可能相邻也可能嵌套)的相邻边界(其间没有任何非空内容、补白、边框)重合在一起而形成一个单一边界。
    两个或多个块级盒子的垂直相邻边界会重合,它们的边界宽度是相邻边界宽度中的最大值。注意水平边界是不会重合的。
     
    5、BFC(布局边距重叠解决方案)
    基本概念(原理):BFC(Block formatting context)直译为"块级格式化上下文"
    原理/特性/渲染规则:
    • 处于同一个BFC中的元素相互影响,可能会发生margin collapse(边距坍塌&边距重叠);
    • BFC在页面上是一个独立的容器,容器里面的子元素不会影响到外面的元素,反之亦然;
    • 计算BFC的高度时,考虑BFC所包含的所有元素,包括浮动元素也参与计算;
    • 浮动盒的区域不会叠加到BFC上;
    创建:怎么创建或者说哪些元素会生成BFC?
    1. float属性不为none
    3. position为absolute或fixed
    4. display为inline-block, table-cell, table-caption, flex, inline-flex
    5. overflow不为visible
     
    使用场景:
    1、利用BFC可以闭合浮动
    2、防止与浮动元素重叠
    3、由于BFC的隔离作用,可以利用BFC包含一个元素,防止这个元素与BFC外的元素发生margin collapse。

  • 相关阅读:
    mysql 三星索引设置
    mysql 索引长度解释及不使用索引的一种特殊情况
    null作为方法的参数,并在方法里面赋值后的结果是什么?
    线程、调度线程池、异常
    系统服务化,需要考虑的问题
    05-Python之高级语法
    01-python基本语法元素
    04-Python之文件、异常和模块
    03-Python之类
    02-Python之函数
  • 原文地址:https://www.cnblogs.com/wjf9492/p/8515452.html
Copyright © 2011-2022 走看看