在我们面试中如果被问道css方面的面试题 那么极有可能被问到的一道面试题就是弹性盒子,本篇文章通过一张图带你拿捏这道面试题。
1、首先需要说一说弹性盒子的基本概念:弹性盒子是一种用于网页布局中创建灵活和响应式设计的CSS布局模型。
2、其次需要说弹性盒子存在哪两个部分:弹性盒子模型包含两个部分容器和项目,容器是包含弹性项目的父元素,项目则是容器内的子元素。
3、然后需要说弹性盒子的两个轴:弹性盒子存在一个主轴和一个交叉轴。主轴是弹性盒子子元素在容器中排列的方向,交叉轴则是与主轴垂直的方向。
4、具体说一说弹性盒子的属性:这里建议说的越多越好,你是否理解弹性盒子不仅是知道它如何去使用,更重要的是你对它里边属性的使用方面的理解。(我们通过一张图来说明这些属性)
我们可以先说明想要实现一个弹性盒子,我们需要在它的父元素上定义一个display:flex;的css样式,这样我们的盒子现在就是一个弹性盒子。
当然我们的弹性盒子的属性分为父容器属性以及子元素属性(父容器属性定义在父元素中,子容器属性定义在子元素中)。
我们先来说父容器的属性:
flex-direction:控制子项目的排列方向,两个属性row和column。默认是row表示横向排列,如果我们想要逆序横向排列可以使用row-reverse column表示纵向排列,逆序纵向排列可以使用column-reverse
flex-wrap:我们可以说,如果我们在子元素定宽定高的情况下,如果弹性盒子的子元素有很多,那么它们会在一行那样会挤在一起十分难看,我们可以通过flex-wrap:wrap;来实现换行处理,默认为nowrap表示不换行,wrap表示换行处理,wrap-reverse表示逆序换行(正常情况是向下换行,逆序换行表示向上换行)
flex-flow:这个属性我们就可以简单说一说,它是flex-direction以及flex-wrap的一个结合属性,我们可以定义flex-flow来代替flex-direction以及flex-wrap,它的属性也是与前两个的属性相同。默认属性为flex-flow:row nowrap;
justify-content:控制子元素对齐的方式。center表示居中,flex-start表示开始元素对齐,flex-end表示结尾元素对齐。这两个属性我们就可以简单理解为一个靠开头一个靠结尾
align-items:控制子元素垂直对齐方式。初始值为stretch表示填充子元素为整个高度。flex-start表示子元素垂直对齐是靠上对齐,flex-end表示子元素垂直对齐是靠下对齐。center表示居中对齐。
baseline:这个属性我们可以说如果我们设置子元素的某个元素的字体大小,我们在父容器中定义align-items:baseline表示我们按照字体的下边缘对齐。
align-content:表示多行对齐。如果元素只有一行我们设置align-content属性是不起作用的。
如果存在多行我们定义flex-start表示多行向上对齐,flex-end表示多行向下对齐。center表示多行居中,space-between表示多行之间行与行的两边纵向对齐 space-around表示行与行的纵向均匀对齐。
这里我们说完了我们的父容器的属性,下面可以给面试官说一说子元素的一些属性。
order:通常我们子元素的排列顺序是我们定义html元素的一个顺序,默认值每个子元素的order为0
元素排序方式为,order越小越靠前order越大排列顺序越靠后。我们可以结合实际情况说明我们自己定义元素时,如果想让某个元素顺序排列靠前或靠后就可以使用这个属性定义,属性值大元素排列靠后属性值小元素排列靠前。
flex-grow:我们通常定义宽高的子元素换行以后呢 如果它的元素数量不够整行的元素数量那么它的元素并不会铺满这个一行,flex-grow是用将子元素延伸的比率。未定义flex-grow属性的元素它的宽度是不变的,我们定义flex-grow属性的它的宽度会按照我们定义的比率进行延伸。给两个元素定义该属性,那么除了未定义该属性的宽度不变以外,其余的空间通过比率来进行分配定义该属性的空间。
flex-shrink:通常来说我们用不到,因为这时控制子元素的收缩比率,通常我们将浏览器缩小时,如果我们定义该属性,那么该元素会进行收缩。
flex-basis:定义子元素的基本宽度,flex-basis:元素宽度大小;
flex:它是将flex-grow、flex-shrink、flex-basis一起指定,它可以同时定义前三个属性,作用与之前三个属性作用相似。
align-self:单独控制族元素垂直对齐的方式,给某个子元素定义该属性控制某个元素的对齐方式
flex-start纵向头部对齐 center居中对齐 flex-end纵向尾部对齐
这里我们也是将弹性盒子的一些属性说完,当然一些不常用的属性我们也可以不进行过多的阐述。
5、说完属性以后呢我们可以说一说弹性盒子布局的优势:如简化复杂布局、自适应性、适应不同屏幕尺寸等。
6、说一说弹性盒子的兼容性:提到弹性盒子在现代浏览器中的广泛支持,但也指出在旧版浏览器中可能需要提供备用布局。
7、最后向面试官强调你的学习经验,说明你对这一布局的熟练程度以及你如何不断提高自己的技能。
这些要点可以帮助你清晰地回答关于弹性盒子的面试问题。确保根据具体问题和你的经验进行适当的调整。