简单来说,它就像一个显示文本、图像、视频等的框,通过使用宽度和高度等属性来调整大小。内容区包含元素的主要内容。内容包括文本、图像或视频。 2、填充: 填充在其边界内围绕元素创建空间。...除了单个网格容器外,它还显示页面上应用的所有网格布局的表格。要使用它,只需选择网格项目以检查网格线和名称。...此外,flex 容器的直接子项会自动成为 flex 项。 有 6 个 flex-item 属性。这些如下: 1) order 顾名思义,顺序是弹性项目在弹性容器中显示的顺序。它覆盖 HTML 顺序。...e) start 起始值对齐网格容器开始处的所有网格项。 f) end end值对齐网格容器末尾的所有网格项 7) align-content align-content 垂直对齐容器内的整个网格。...应用于网格项目的属性: a) grid-column 属性: grid-column 属性用于设置网格容器中元素的开始和结束列。
FFC -- Flex Formatting Contexts 触发条件 当 display 的值为 flex 或 inline-flex 时,将生成弹性容器(Flex Containers), 一个弹性容器为其内容建立了一个新的弹性格式化上下文环境...布局规则 设置为 flex 的容器被渲染为一个块级元素 设置为 inline-flex 的容器则渲染为一个行内元素 弹性容器中的每一个子元素都是一个弹性项目。弹性项目可以是任意数量的。...弹性容器外和弹性项目内的一切元素都不受影响。简单地说,Flexbox 定义了弹性容器内弹性项目该如何布局。...布局规则 通过在网格容器(grid container)上定义网格定义行(grid definition rows)和网格定义列(grid definition columns)属性各在网格项目(grid...item)上定义网格行(grid row)和网格列(grid columns)为每一个网格项目(grid item)定义位置和空间。
CSS 页面布局技术允许我们拾取网页中的元素,并且控制它们相对正常布局流、周边元素、父容器或者主视口/窗口的位置,本章将主要针对正常布局流, FlexBox(弹性盒子), Grid(网格), Column...# 多列布局 multicol column-count: 创建指定数量的列 column-width: 创建列具有弹性的宽度(尽可能按照宽度创建列,若容器与宽度成比例的数量) column-fill:...属性: 定义网格列的数量及宽度大小,建议使用 fr 单位来设置灵活网格,此单位代表网格容器中可用空间的一份(1fr 1fr 1fr = repeat(3, 1fr);=>表明了后续列宽的配置要重复多少次...*/ display: grid; /* 显示网格列宽度设置,让网格自动创建很多列来填满整个容器 */ grid-template-columns: repeat(auto-fill, minmax...(200px, 1fr)); /* 所有行都位于隐式网格内,如果内容尺寸大于 100 像素则会根据内容自动调整。
display: inline-block display: inline-block;是CSS2规范,无兼容性问题,该属性值表示此元素将显示为内联块元素,该元素生成一个块元素框,该框将随周围的内容一起流动...,就好像它是单个内联框一样,与被替换的元素非常相似,它等效于内联流根inline flow-root,可以指定宽度和高度,内外边距对于四个方向有效元素排在一行,但是在回车后会有空白缝隙。...display: flex display: flex;是CSS3规范,目前主流浏览器都已支持,是布局的首选方案,该属性值表示此元素会作为弹性盒子显示,在外部表现为block,内部作为弹性盒子使用,弹性布局可以为盒状模型提供最大的灵活性...display: grid display: grid;是CSS3规范,目前主流浏览器都已支持,该属性值表示将元素分为一个个网格,然后利用这些网格组合做出各种各样的布局。...Grid布局则是将容器划分成行和列,产生单元格,然后指定成员所在的单元格,可以看作是二维布局。
这块区域内只有Block-level box参与布局,因此会表现出一些特性。 触发BFC的常见条件 满足以下条件之一即可触发: HTML元素 浮动元素 float !...= visible 行内块元素 display = inline-block 绝对定位元素 position = absolute或fixed 弹性元素(flex)、网格元素(grid)的直接子元素 多列容器...= auto display = flow-root 该属性使用flow layout布局内容,也就会创建bfc contain =layout、content或 strict contain用于性能优化...,layout声明外部元素与内部元素互不影响,content在layout的基础上声明子元素也不会在content-box外(padding,border,margin)显示,并且counter等具有影响其他元素能力的属性也会被隔离...,strict在layout的基础上必须声明宽高,因为在此模式下子元素不能撑开父元素 与表格有关的一些属性 BFC布局特性 浮动定位与清除浮动都只会影响同一个BFC内的元素。
流动布局(Flow Layout) 默认情况下,CSS 使用所谓的流动布局算法(也称Normal flow)。流动将页面上的每个元素都视为属于文本文档。 块级元素以垂直方式在页面上重叠显示。...弹性盒布局 当 display 属性设置为 flex 时,元素将根据弹性盒布局算法布置其子元素。 而它就是我们今天要讲的重点,下文中有更多的介绍。...如果想了解更多的Flex的细节,可以参考w3c_flexbox[3]。 网格布局 网格与弹性盒类似,只要在元素上使用了 display: grid,就会开始使用网格布局算法。...此布局算法将根据网格布局算法显示所有子元素。 Grid 和 Flexbox 的区别在于,Grid 适用于布局具有列和行的二维内容,而 Flexbox 适用于布局具有「一维内容」,即单个列或行。...在每一行内,align-items允许我们将每个单独的子项上下滑动。 然而,在整体上,我们有两行在一个单一的 Flex 上下文内!现在,交叉轴将与两行相交,而不是一行。
justify-item 沿着内联(行)轴对齐网格项(而不是沿着块(列)轴对齐的对齐项)。此值适用于容器内的所有网格项。...align-items 沿着列网格线对齐网格项(而不是沿着行网格线对齐的对齐项)。此值适用于容器内的所有网格项。...在网格项用非弹性单位(例如 px)设置尺寸时会发生这种现象。这种情况下你能够设置网格的对准方式。这个属性是设置列轴的对齐方式,上面所讲的 justify-content 则是设置行轴方向的!...: .item-d { grid-area: 1 / col4-start / last-line / 6; } justify-self 沿着行轴对齐单元格内的网格项,此值适用于单个单元格内的网格项...align-self 沿着列轴对齐单元格内的网格项,此值适用于单个网格项内的内容。
容器上的属性 网格模板 创建了网格容器,我们就可以定义这个网格有多少行有多少列,并且每一行每一列的大小。...非负值的长度大小:如px, em, vw等 百分比:相对于网格容器的,如果是inline-grid,则百分比值将被视为auto flex:非负值,用单位fr来定义网格轨道大小的弹性系数。...它的第一个参数是重复的次数,而可以为auto-fill和auto-fit。 auto-fill 如果容器有明确的大小或最大大小,则重复次数是最大可能的正整数,不会导致网格溢出其网格容器。...grid-auto-rows 指定了隐式创建行的大小。它的值可以是: 长度值:px em vmax等 百分比:相对于网格容器 flex:非负值,用单位fr来定义网格轨道大小的弹性系数。...但是如果我们再将父级div加上一句grid-auto-flow: column;我们就发现现在子元素在一行显示,和弹性盒子效果差不多。
3 flex-flow 复合属性。设置或检索弹性盒模型对象的子元素排列方式。 3 flex-direction 该属性通过定义flex容器的主轴方向来决定felx子项在flex容器中的位置。...3 align-content 在弹性容器内的各项没有占用交叉轴上所有可用的空间时对齐容器内的各项(垂直)。...弹性盒子模型(Flexible Box) 属性(旧) 属性 描述 CSS box-align 指定如何对齐一个框的子元素 3 box-direction 指定在哪个方向,显示一个框的子元素...3 box-ordinal-group 指定一个框的子元素的显示顺序 3 box-orient 指定一个框的子元素是否在水平或垂直方向应铺设 3 box-pack 指定横向盒在垂直框的水平位置和垂直位置...网格(Grid) 属性 属性 描述 CSS grid-columns 指定在网格中每列的宽度 3 grid-rows 指定在网格中每列的高度 3 14.
float position 等属性等进行布局 3、flex弹性盒模型布局,革命性的突破,解决传统布局方案上的三大痛点 排列方向、对齐方式,自适应尺寸。...的值) :你选择的任意名称 subgrid:如果你的网格容器本身就是一个网格项(即嵌套网格),你可以使用此属性指定行和列的大小继承于父元素而不是自身指定(一般很少会用) .container...{ grid-template-columns: 20px [col-start] 20px [col-start] 20px [col-start] 5%; } fr 单位允许你将一个轨道大小设置为网格容器内自由空间的一小部分...当显示定位行与列(使用 grid-template-columns/grid-template-rows属性)时候,如果网格项目超出了网格的定义范围,那么就会创建隐式网格。...11. grid-auto-flow 当我们没有显示地在网格中放置网格项,这时候自动布局会自动帮助我们排列网格项,使用grid-auto-flow 可以更改自动排列的方式。
它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局。 Grid 布局则是将容器划分成 “行” 和 “列” 产生单元格,然后指定 “项目所在” 的单元格,可以看作是二维布局。...基本概念 容器和项目 采用网格布局的区域,称为 “容器”(container)。容器内部采用网格定位的子元素,称为 “项目”(item)。...单元格 每行每列都会分布单元格,在单元格内我们可以添加想要的内容。 网格线 格子的边框为网格线,分为上下网格线和左右网格线。...属性 grid-auto-flow修改排列方向 子元素默认会按顺序排列 从左向右 行排列 grid-auto-flow: column; 这样就变成了列排序 justify-items 属性,align-items...,在100px*100px内的方格内水平垂直居中,整个网格 也水平居中在了页面中,如果不设置红色方块大小的话 里面的文字将会水平垂直居中。
在定位布局中,可以设置它们的 z-index 属性来调整它们的覆盖关系,并且谁的值越大,显示优先级越高。...的元素 contain 值为 layout、content或 strict 的元素 弹性元素(display为 flex 或 inline-flex元素的直接子元素) 网格元素(display为 grid...或 inline-grid 元素的直接子元素) 多列容器(元素的 column-count 或 column-width 不为 auto,包括 column-count 为 1) column-span...为 all 的元素始终会创建一个新的BFC,即使该元素没有包裹在一个多列容器中 当一个元素设置了新的 BFC 后,就和这个元素外部的 BFC 没有关系了,这个元素只会去约束自己内部的子元素。...网格布局格式化上下文 GFC( GridLayout Formatting Contexts ),当一个元素设置为 display:grid 的时候,此元素将获得一个独立的渲染区域,可以在网格容器上定义网格行和列
# 多列布局 multicol column-count: 创建指定数量的列 column-width: 创建列具有弹性的宽度(尽可能按照宽度创建列,若容器与宽度成比例的数量) column-fill:...网格布局的相关属性 column-count: 创建指定数量的列 column-width: 创建列具有弹性的宽度(尽可能按照宽度创建列,若容器与宽度成比例的数量) column-fill:此属性控制在分解为列时如何平衡元素的内容...7.其他传统布局(Other traditions) 传统布局之固定宽度网格 描述: 让我们先来创建一个固定列宽度的网格系统吧,目标是把它变成一个有两行十二列的演示网格,第一行均匀分布12元素的大小,第二行显示网格上不同大小的区域...传统布局之弹性盒网格 描述: 实际上弹性布局是个写网格布局,弹性盒相比浮动能提供附加的对齐和空间分布能力,其可以极大的介绍上述所讲问题,但是,弹性布局不是为网格布局而设的,把它当网格布局来用也有新的挑战...温馨提示: 弹性盒设计上是一维, 它处理单个维度,行的或者列的; 我们不能创建一个对行列严格要求的网格,意即如果我们要在我们的网格上使用弹性盒的话,我们仍然需要计算浮动布局的百分比。
Flexbox专注于轴内的空间分布,使用更简单的自下而上的布局方法,可以使用基于内容大小的换行系统content-size–based line-wrapping system来控制其次轴,并依靠底层标记层次来构建更复杂的布局...网格是由水平和垂直网格比交织组成,他将网格容器的空间分为网格区域,网格项目将放置在这些网格区域中。在网格中有两套网格线:一套是沿着水平方向的轴定义列的网格张,另一套是沿着垂直方向的轴定义行。 ?...每个网格轨道可以设置一个大小,用来控制宽度或高度或者行可能会增长。 网格单元是网格行和网格列的交集。它是定位网格项时可以引用的网格的最小单元。 在接下来的例中定义了一个三行两列的网格。...第一列设置一个固定宽度“150px”,第二列设置是一个弹性尺寸,它是一个未赋值的网格空间,从而根据网格容器的变化而进行宽度的改变。如果网格容器的宽度是“200px”,那么第二列的宽度是“50px”。...基本示例 以下示例显示了一个三列轨道网格,其中创建的行最小为100像素,最大为自动。条目使用线性定位放置在网格上。
1. gap gap 属性是一种方便的方式,用于指定网格或弹性盒子项之间的间距,而无需额外的边距或填充属性。...它简化了基于网格或弹性盒子的布局的创建,通过提供一种设置网格或弹性盒子项在行和列中的间隙的简写方式。 要理解 gap 属性,让我们分别看一下它在网格和弹性盒子布局中的用法。...网格布局中的 gap 在网格布局中, gap 属性设置了网格项之间的水平和垂直间距。它允许我们通过一次声明来控制行和列之间的间隔。...这是一个示例,设置了一个网格容器,行之间有20像素的间隔,列之间有10像素的间隔 .container { display: grid; gap: 20px 10px; } 使用这个CSS,容器内的网格项之间将有指定的行和列之间的间隙...这是一个示例,设置了一个弹性容器,其中弹性项之间有10px的间隔: .container { display: flex; gap: 10px; } 使用这个CSS,容器内的flex项目之间将有一个
数据列表通常用于以下场景:展示一系列相关的数据,例如课程表、时间表、菜单、文章列表等 数据网格:以网格方式展示数据,每一个网格对应数据表中的一行数据。...自由布局组件是一种布局容器,它和平台现有的栅格布局、线性布局一样,可以用来进行页面布局。在自由布局组件内的组件会遵循自由布局提供的布局策略,例如拖拽调整宽高和位置,基于辅助线对齐等等。...我们将自由布局组件内的一级子组件称为自由布局内子组件,这些子组件会有一些特殊的属性,如距离和约束,用于确定其与父容器的位置关系。自由布局中的组件可以是任何类型的组件,包括自由布局组件本身。...注:只有自由布局组件内的一级子组件才具有自由布局的特性,子组件内的其他组件仍然遵循自身的布局规则。...由于它的上手门槛较低,它也适合对传统的布局方式了解不深的用户 4.5 弹性布局说明 弹性布局是一种可以自适应不同屏幕尺寸和设备方向的布局方式,它擅长解决内部组件宽度要跟随数量或者外部容器宽度变化而变化的场景
删除一些文本 这是因为当我们浮动一个元素时,文本所在的框的宽度保持不变,为给浮动元素腾出空间而缩短的是文本的行框。这就是为什么背景和边框会出现在浮动后面的原因。 我们通常有两种方法来解决这个布局问题。...BFC 是布局中的一个迷你布局 你可以将 BFC 看作是页面内的一个迷你布局。一旦一个元素创建了一个 BFC,它就包含了所有的内容。正如我们所看到的,这包括浮动的元素,它们不再从盒子底部伸出来。...在多列布局中使用 BFC 如果我们创建一个占满整个容器宽度的多列布局,在某些浏览器中最后一列有时候会掉到下一行。这可能是因为浏览器四舍五入了列宽从而所有列的总宽度会超出容器。...flow-root 浏览器支持情况 你可以使用 display:flow-root 安全的创建 BFC,来解决上文中提到的各种问题:包裹浮动元素、阻止外边距叠加和阻止围绕浮动元素。 ?...不过无论如何,你现在应该已经理解了什么是 BFC,以及如何使用 overflow 或其他方法来包裹浮动,以及知道了 BFC 可以阻止元素去环绕浮动元素,如果你想使用弹性或网格布局可以在一些不支持他们的浏览器中使用
本文,我们探讨 CSS 网格的弹性布局,它是如何帮助我们实现水平滚动的,同时处理它带来的缺陷。...滚动的部分内容,必须在容器边缘露出来。 滚动时,容器的内容必须从屏幕的边缘滑出来。 容器内两个内容之间的距离要小于边缘的距离,这样容器两端都会有更大的空间(这提示用户他们已经滑到最后)。...如下: 需要注意的是,容器两端的距离和周围内容的距离是匹配的(也就是整体布局要和谐)。 整体布局 现在,我们已经基本明白水平滚动容器的特性了。接下来,我们考虑使用 CSS Grid 网格布局来编码。...带 .full 类名的子元素,将会占据全部视窗的宽度且没有内边距。 滚动容器 我们使用六个卡片来创建水平滚动容器,一次显示两张。...我们在网格列两端添加了 2 x 10px 的空间。结合 10px 的网格距离,我们总共有 20px,所以满足我们整体布局的内边距要求。
flex弹性布局 Tips / 提示 在线版flex布局笔记 一张图片搞定Flex布局 flex 是 flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性,任何一个容器都可以指定为...利用网格,你可以把内容按照行与列的格式进行排版。另外,网格还能非常轻松地实现一些复杂的布局。...grid容器设置项 grid-template-row/columns——定义网格及fr单位 基于网格行和列的维度,去定义网格线的名称和网格轨道的尺寸大小。...grid-auto-flow/rows/columns——显式网格与隐式网格 指定在显示网格之外的隐式网格,如何排列及尺寸大小。...“作怪”,默认有个属性: grid-auto-flow: row 的意思就是出现没有进行高度设置的隐式网格的时候,隐式网格按照行进行排布。
一、定义一个网格 我们可以将 display 属性设为 grid 来定义一个网格。与弹性盒子一样,将父容器改为网格布局后,他的直接子项会变为网格项。...某些情况下,我们需要给网格创建很多列来填满整个容器,而容器的宽度是可变的,也就没办法确定 repeat 的次数了,这时可以使用 repeat 函数中的关键字auto-fill来实现这个效果。...假设现在我们定义一个 1 行x 2 列的宽高都为 100px 的网格容器,并在其中放置了 a 和 b 两个网格项: 如果我们把网格项 a 和 b 放置到已定义的网格之外的话: .a { grid-column...如果修改成grid-auto-flow: column,会逐列放置元素,此时 c 会被放在第三行: 如果修改成grid-auto-flow: dense,则会在 row 的基础上填充前面网格留下来的空白...: 还有column dense之类的值,具体可以去看 MDN: grid-auto-flow 四、调整对齐方式 下面的例子都基于这个网格容器: .container { display: grid
领取专属 10元无门槛券
手把手带您无忧上云