慕课网-前端跳槽面试必备技巧

前端面试准备--2.css盒模型

2017-09-18  本文已影响201人  飞菲fly

css盒模型

1.题目:谈谈你对css盒模型的认识(从理论转化到应用)

  • 基本概念:标准模型+ IE模型
    border、margin、padding、content
  • 标准模型
  • IE模型

1、标准模型和IE模型区别

1.计算宽度和高度的不同,怎么不同的,怎么计算的;

  • 标准模型的宽度是:content的宽度,不包含padding和border
  • IE模型的宽度是:宽和高是计算 border 和 padding 的

css如何设置这两种模型:

box-sizing:content-box;(标准模型--浏览器默认)
box-sizing:border-box;(IE模型)

JS如何设置获取盒模型对应的宽和高

  1.dom.style.width/height(只能取内联样式的宽和高)
      ----getElementById('div').style.width/height
            
  2.dom.currentStyle.width/height
     (渲染之后的宽高--只有IE支持)
        
  3.window.getComputedStyle(dom).width/height
    (渲染之后的宽高--兼容性通用型更好一些)
            
 4.dom.getBoundingClientRect().width/height
       (适用场景:计算一个元素的绝对位置;这个绝对位置根据视窗
也就是左上角这个位置的绝对位置) 这个方法可以拿到四个元素:left top width height

实例题:(根据盒模型解释边距重叠)

一.要看父元素的盒模型怎么设置的:

1.父子元素边距重叠

overflow:hidden;解决重叠问题;相当于给父元素创建了一个BFC(块级格式化上下文)

    eg:子元素高度为100px,距父元素顶部10px,计算父元素的高度?
    1.因为父元素和子元素存在边距重叠,所以父元素高度为100px;
    2.设置了overflow:hidden;之后父元素高度为110px;

2.兄弟元素边距重叠

兄弟元素每个都有上边距或者下边距,发生重叠原则取最大值;

    eg:一个元素下边距为30px,下面那个元素上边距为5px,会合并成30px两者取最大值

3.空元素

空元素设置上下边距,margin-top\margin-bottom取一个最大值,作为它的一个边距

4.BFC(边距重叠解决方案)--另一种IFC

BFC基本概念:块级格式化上下文

1.在BFC这个元素的垂直方向的边距会发生重叠
2.BFC的区域不会与浮动元素的相重叠(清除浮动布局)
3.BFC在页面是一个独立的容器,外面的元素不会影响它里面元素,反过来一样
4.计算BFC高度的时候浮动元素也会参与计算

1.overflow:hidden | auto | visible
2.float值不是null(只要有浮动,当前元素就创建了BFC)
3.position值不是static或者relative就创建了BFC(设置成absolute,fixed)
4.display属性是为inline-box,table-cell(也就是和table相关的)

1.父级元素里面有三个子元素,子元素margin:5px auto 25px;
之后就第一个元素的上边距是5,其他的都是25px,这有一个边距重叠的问题;在写页面布局的时候不想有这个重叠,就给子元素增加一个父元素,父元素创建一个BFC就能解决问题;

2.布局相关的BFC应用

垂直方向三个p元素,p{margin:5px auto 25px},之后第二个第三个的上边距变成25px;发生了边距重叠,取得的是最大值;如果不想重叠,就需要再那个元素在加一个父级div,对父级div创建BFC(overflow:hidden)

两栏布局,左边宽度固定左浮动height:100px,右边自适应height:120px;右边的高度增高的时候,右边的背景色已经侵染到了左侧,(当布局的时候左侧没有float元素,它依然会往左侵染),解决方法:给右侧元素创建一个BFC(overflow:atuo)

上一篇下一篇

猜你喜欢

热点阅读