2020-12-19 JavaScript面试题2:BFC,定位,flex布局

5.说说BFC
BFC(Block Formatting Context)格式化上下文,是Web页面中盒模型布局的CSS渲染模式,指一个独立的渲染区域或者说是一个隔离的独立容器。 
BFC应用
防止margin重叠
清除内部浮动
自适应两(多)栏布局
防止字体环绕

触发BFC条件
根元素
float的值不为none
overflow的值不为visible
display的值为inline-block、table-cell、table-caption
position的值为absolute、fixed

BFC的特性
内部的Box会在垂直方向上一个接一个的放置。
垂直方向上的距离由margin决定
bfc的区域不会与float的元素区域重叠。
计算bfc的高度时,浮动元素也参与计算
bfc就是页面上的一个独立容器,容器里面的子元素不会影响外面元素。

6.说说定位相关的属性
position 属性的五个值:
| **值**   | **描述**                                                     |
| -------- | ------------------------------------------------------------ |
| static   | 默认。位置设置为 static 的元素,   它始终会处于页面流给予的位置(static 元素会忽略任何 top、bottom、left 或 right 声明)。HTML 元素的默认值,即没有定位,遵循正常的文档流对象。从上到下,从左到右   静态定位的元素不会受到 top, bottom, left, right影响。 |
| absolute | 位置设置为 absolute 的元素,可定位于相对于第一个已定位(非静态的)的包含它的元素的指定坐标。   绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于<html>   此元素的位置可通过 "left"、"top"、"right" 以及 "bottom" 属性来规定。   absolute 定位使元素的位置与文档流无关,因此不占据空间。   absolute 定位的元素和其他元素重叠。   会将原来的块元素变成行内块元素 |
| fixed    | 位置被设置为 fixed 的元素,可定位于相对于浏览器窗口的指定坐标。元素的位置相对于浏览器窗口是固定位置。即使窗口是滚动的它也不会移动   此元素的位置可通过 "left"、"top"、"right" 以及 "bottom" 属性来规定。   不论窗口滚动与否,元素都会留在那个位置。工作于 IE7(strict 模式)。   会将原来的块元素变成行内块元素 |
| relative | 位置被设置为 relative 的元素,可将其定位于相对于其正常位置的地方,   因此 "left:20" 会将元素移至元素正常位置左边 20 个像素的位置。   相对定位元素的定位是相对其自身正常位置。   移动相对定位元素,但它原本所占的空间不会改变。 |
| sticky   | sticky 英文字面意思是粘,粘贴,所以可以把它称之为粘性定位。   position:   sticky; 基于用户的滚动位置来定位。   粘性定位的元素是依赖于用户的滚动,在 position:relative 与 position:fixed 定位之间切换。   它的行为就像 position:relative; 而当页面滚动超出目标区域时,它的表现就像 position:fixed;,它会固定在目标位置。   元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位。   这个特定阈值指的是 top, right, bottom 或 left 之一,换言之,指定 top,   right, bottom 或 left 四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同。 |
| inherit  | position 属性的值从父元素继承。                              |
7.谈谈flex布局
采用 Flex 布局的元素,称为 Flex容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,称为 Flex项目(flex item),简称“项目”。
1.父元素属性
| **属性名**      | **属性值**      | **备注** 
| display        | flex          | 定义了一个flex容器,它的直接子元素会接受这个flex环境         |
| flex-direction | row,   row-reverse,   column,   column-reverse  | 决定主轴的方向         
| flex-wrap       | nowrap,   wrap,   wrap-reverse   | 如果一条轴线排不下,如何换行           
| flex-flow       | [flex-direction] , [flex-wrap] | 是 flex-direction属性和    flex-wrap属性的简写形式,   默认值为 row nowrap |
| justify-content | flex-start,   flex-end,   center,   space-between,   space-around | 设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式         |
| align-items     | flex-start,   flex-end,   center,   baseline,   stretch      | 设置或检索弹性盒子元素在侧轴(纵轴)方向上的对齐方式         |                                 |
2.子元素属性      |                                                              |         
| 属性名          | 属性值           | 备注     
| order           | [int]    | 默认情况下flex order会按照书写顺训呈现,   可以通过order属性改变,   数值小的在前面,还可以是负数。 |
| flex-grow       | [number]  | 设置或检索弹性盒的扩展比率,   根据弹性盒子元素所设置的扩展因子作为比率来分配剩余空间 |
| flex-shrink     | [number]  | 设置或检索弹性盒的收缩比率,   根据弹性盒子元素所设置的收缩因子作为比率来收缩空间 |
| flex-basis      | [length], auto  | 设置或检索弹性盒伸缩基准值                               
| align-self      | auto,flex-start,flex-end,center,baseline,stretch   | 设置或检索弹性盒子元素在侧轴(纵轴)方向上的对齐方式,   可以覆盖父容器align-items的设置 |
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值