高频CSS面试题

214 阅读4分钟

两种盒子模型分别说一下

盒子模型包括: content(内容)、padding(内边距)、margin(外边距)、border(边框)

css中有两种盒子模型,分别是 标准盒模型(W3C) 和 怪异盒模型(IE)。

两个盒子模型的区别:

  • 标准盒模型: 标准盒子模型的width和height 只表示 content(内容)的宽高。
  • 怪异盒模型: 怪异盒子模型的width和height,表示 padding、border、content三个整体的宽高。

css3中的一个属性: box-sizing 可以指定盒子模型

  • box-sizing:content-box 指标准盒模型,默认的
  • box-sizing:border-box 指怪异盒模型。

水平居中 垂直居中 垂直水平居中

水平居中

  • 方法一:首先父元素是块级元素(如果不是,设置为块级元素), 父元素 text-algin:center
  • 方法二:flex布局,给父元素添加 display: flex; justify-content: center;

垂直居中

  • 父元素高度没写死情况下
    • 用 padding值撑起来就是垂直居中了
  • 父元素高度写死情况下
    • 高度多少, line-height 就多少 (一般用于单行文字)
    • 用flex布局,主轴设为 column , 然后写 justify-content: center;
    • 用定位,子绝父相后,给子元素设置 top:50% ; transform: translateY(-50%);

垂直水平居中

  • 定位,子绝父相后,给子元素设置 top:50%;left:50%,tarnsorm:transloate(-50%,-50%)
  • flex布局, align-items: center; justify-content: center;

flex怎么用,常用属性有哪些?

flexbox 是由俩个轴来排列的,默认主轴是 水平的

  • justify-content :center 主轴的居中
  • align-items : center 侧轴居中
    • flex-start(默认值):左对齐
    • flex-end:右对齐
    • center: 居中
    • space-between:两端对齐,项目之间的间隔都相等。
    • space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
  • flex-direction:row 默认主轴为 row (row-reverse、column、column-reverse )
  • flex-wrap:wrap 默认是不换行 (nowrap 、 wrap 、wrap-reverse)

flex:1 表示什么

flex属性 是 flex-grow、flex-shrink、flex-basis三个属性的缩写。

  • flex-grow:定义项目的的放大比例;
  • flex-shrink: 定义项目的缩小比例;
  • flex-basis: 定义在分配多余空间之前,项目占据的主轴空间(main size),浏览器根据此属性计算主轴是否有多余空间,

flex:1即为flex-grow:1,经常用作自适应布局,将父容器的display:flex,侧边栏大小固定后,将内容区flex:1,内容区则会自动放大占满剩余空间。

BFC是什么 / BFC怎么解决各种问题

(不要回答BFC是什么 , 举例子说明什么是bfc)

解: BFC 中文全称:块级格式上下文 ,它是一种规则

创建、触发BFC的方法:

  • position:absolute 或 fixed
  • float 不是none
  • overflow 不是 visible
  • display: inline-block 或者 flex

BFC的作用:

  • 可以阻止元素被浮动的元素覆盖 (可以做俩栏布局)

  • 可以包裹住浮动的元素--即清除浮动

  • 解决同一个区域垂直margin(外边距)塌陷(合并)的问题

外边距塌陷(合并)问题

什么是外边距塌陷

外边距塌陷也成为外边距合并,是指两个相邻的块级元素的外边距,组合在一起变成了单个外边距,不过只有上下外边距才会有塌陷。

解决外边距塌陷

  • 1.使用绝对定位方式, 使用相对定位,注意 只能用top 不能用margin-top
  • 2.设定为行内块元素,(前提元素必须要有宽高)
  • 3.触发BFC
  • 4.添加内边距padding
  • 5.添加边框

CSS选择器优先级

  1. 写得越具体优先级越高
  2. 写在后面,覆盖写在前面的(就近原则)
  3. !import 最高, 但少用

清除浮动

方法一: 添加伪元素

.clearfix{
  content:'';
  display:block / table;
  clear:both;
}

// 把 .clearfix 加到容器上,里面的子元素就会清除浮动

方法二:创建、触发 BFC

px、em、rem、vw、百分比区别

px

是固定单位,其他几种都是相对单位

当我们把电脑屏幕的分辨率调为1440*900时,css里设置的1px实际的物理尺寸就是屏幕宽度的1/1440 -

em

默认字体大小的倍数。 继承于父亲的大小。

如别给该元素设置 2em , 那么是根据父亲的字体大小来计算的,相当于父亲字体大小的2倍。

rem

根元素 HTML 字体大小的倍数。

比如:一个元素设置 width:2rem 表示该元素宽度为 html 节点的font-size 大小的2倍。如果html未设置font-size的大小,默认是16px。 需要注意的是chrome浏览器下文字最小是12px,设置低于12px的值最终也会展示12px。

1vw

代表浏览器视口宽度的1%

1%

对不同属性有不同的含义。

font-size:200% 和 font-size:2em 一样,表示字体大小是默认(继承父亲)字体大小的2倍。

line-height:200%表示行高是自己字体大小的2倍 (注意这是一个关于行高继承的坑)

width:100% 根据盒子模型来判断。 -