面试|CSS

112 阅读3分钟

1. 对盒子模型的理解

盒模型由四个元素组成,margin、border、padding、content

盒模型有两种:标准盒模型和IE盒模型

  • 标准盒模型的width和height属性范围只包含了content
  • IE盒模型的width和height属性范围包含了border、padding、content

可以通过修改元素的bos-sizing属性来改变盒模型

  • box-sizing: content-box表示标准盒模型(默认值)
  • box-sizing: border-box表示IE盒模型(怪异盒模型)

2. 居中方式

  1. 水平居中一个块级元素:可以使用margin属性将元素的左右margin设置为auto。
.myelement {
  width: 200px;
  margin: 0 auto;
}
  1. 垂直居中一个块级元素:可以使用flex布局或grid布局
//flex
.mycontainer {
  display: flex;
  justify-content: center;
  align-items: center;
}
//grid
.mycontainer { 
    display: grid; 
    grid-template-columns: repeat(3, 1fr); 
    grid-template-rows: repeat(3, 100px); 
    height: 100vh; 
} 
.myelement { 
    background-color: red; 
    grid-column: 2 / 3; 
    grid-row: 2 / 3; 
}
//在上述代码中,我们创建了一个名为`mycontainer`的grid容器,并设置了3列和3行,将元素放置在第2列第2行的位置上,从而实现了居中效果。
  1. 水平和垂直居中一个块级元素:可以使用绝对定位和负边距实现,例如:
.myelement {
  width: 200px;
  height: 200px;
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -100px;
  margin-left: -100px;
}

这里的.myelement使用了绝对定位,将top和left属性设置为50%,表示元素的左上角应该位于父元素的中心位置。然后,使用负边距将元素的宽度和高度的一半向上和向左移动,使其居中。

3. BFC

BFC是Web页面的可视化CSS渲染的一部分,是布局过程中生成块级盒子的区域,也是浮动元素与其他元素的交互限定区域。

通俗的来讲:BFC是一个独立的布局环境,可以理解为一个容器,在这个容器内部的元素不会受到外界的干扰。

3.1 创建BFC

  • 根元素:body;

  • 元素设置浮动:float 除 none 以外的值;

  • 元素设置绝对定位:position (absolute、fixed);

  • display 值为:inline-block、table-cell、table-caption、flex等;

  • overflow 值为:hidden、auto、scroll;

3.2 BFC的特点:

  • 垂直方向上,自上而下排列,和文档流的排列方式一致;
  • BFC区域不会与浮动的容器发生重叠;
  • BFC是独立的容器,容器内部元素不会影响外部元素;

3.3 BFC的作用:

  • 解决margin的重叠问题:由于BFC是一个独立的区域,内部的元素和外部的元素互不影响,将两个元素变为两个BFC,就解决了margin重叠的问题。

  • 解决高度塌陷的问题:在对子元素设置浮动后,父元素会发生高度塌陷,也就是父元素的高度变为0。解决这个问题,只需要把父元素变成一个BFC。常用的办法是给父元素设置overflow:hidden

  • 创建自适应两栏布局:可以用来创建自适应两栏布局:左边的宽度固定,右边的宽度自适应。左侧设置float:left,右侧设置overflow: hidden。这样右边就触发了BFC,BFC的区域不会与浮动元素发生重叠,所以两侧就不会发生重叠,实现了自适应两栏布局。

4. position的值有哪些

静态定位static 默认值不脱离文档流,top,right,bottom,left 等属性不生效;

绝对定位absolute 绝对定位的关键是找对参照物,找到最近的一级带有带定位的父级元素进行位置移动如果找不到,那么相对于浏览器窗口进行定位。元素会脱离正常文档流;

相对定位relative 参照物:元素自身偏移前位置;

固定定位fixed 参照物:浏览器窗口;固定定位会脱离文档流;