详解CSS3实现弹性布局的方式

详解CSS3实现弹性布局的方式

一、CSS3弹性盒子

弹性盒子是CSS3的一种新布局模式。

CSS3 弹性盒( Flexible Box 或 flexbox),是一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式。

引入弹性盒布局模型的目的是提供一种更加有效的方式来对一个容器中的子元素进行排列、对齐和分配空白空间。

立即学习“前端免费学习笔记(深入)”;

二、浏览器支持

表格中的数字表示支持该属性的第一个浏览器的版本号。

紧跟在数字后面的 -webkit- 或 -moz- 为指定浏览器的前缀。

属性@@##@@@@##@@@@##@@@@##@@@@##@@Basic support (single-line flexbox)29.0 21.0 -webkit-11.022.0 18.0 -moz-6.1 -webkit-12.1 -webkit-Multi-line flexbox29.0 21.0 -webkit-11.028.06.1 -webkit-17.0 15.0 -webkit- 12.1

三、CSS3 弹性盒子内容

弹性盒子由弹性容器(Flex container)和弹性子元素(Flex item)组成。

弹性容器通过设置 display 属性的值为 flex 或 inline-flex将其定义为弹性容器。

弹性容器内包含了一个或多个弹性子元素。

注意: 弹性容器外及弹性子元素内是正常渲染的。弹性盒子只定义了弹性子元素如何在弹性容器内布局。

弹性子元素通常在弹性盒子内一行显示。默认情况每个容器只有一行。

以下元素展示了弹性子元素在一行内显示,从左到右:

                FLEX            .flex-container {            display: flex;            flex-direction: row;            flex-wrap: wrap;            width: 1200px;            height: 640px;            background-color: lightsteelblue;        }        .flex-container .flex-item {            width: 320px;            height: 240px;            margin: 10px;            background-color:lightsalmon;        }        

1.png

四、CSS3 弹性盒子常用属性

属性 描述

flex-direction指定弹性容器中子元素排列方式flex-wrap设置弹性盒子的子元素超出父容器时是否换行flex-flowflex-direction 和 flex-wrap 的简写align-items设置弹性盒子元素在侧轴(纵轴)方向上的对齐方式align-content修改 flex-wrap 属性的行为,类似 align-items, 但不是设置子元素对齐,而是设置行对齐justify-content设置弹性盒子元素在主轴(横轴)方向上的对齐方式

1. flex-direction 属性

决定项目的方向。

注意:如果元素不是弹性盒对象的元素,则 flex-direction 属性不起作用。

.flex-container { flex-direction: row | row-reverse | column | column-reverse; }

2.png

属性值

值 描述

row默认值。元素将水平显示,正如一个行一样。row-reverse与 row 相同,但是以相反的顺序。column元素将垂直显示,正如一个列一样。column-reverse与 column 相同,但是以相反的顺序。

2. flex-wrap 属性

flex-wrap 属性规定flex容器是单行或者多行,同时横轴的方向决定了新行堆叠的方向。

值 描述

nowrap默认值。规定元素不拆行或不拆列。wrap规定元素在必要的时候拆行或拆列。wrap-reverse规定元素在必要的时候拆行或拆列,但是以相反的顺序。

.flex-container { flex-wrap: nowrap | wrap | wrap-reverse; }

可以取三个值:

(1) nowrap (默认):不换行。

3.png

(2)wrap:换行,第一行在上方。

4.png

(3)wrap-reverse:换行,第一行在下方。

5.png

3. flex-flow 属性

flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。

.flex-container { flex-flow:   }

4. align-items属性

align-items 属性定义flex子项在flex容器的当前行的侧轴(纵轴)方向上的对齐方式。

值 描述

stretch默认值。项目被拉伸以适应容器。center项目位于容器的中心。flex-start项目位于容器的开头。flex-end项目位于容器的结尾。baseline项目位于容器的基线上。

6.png

5. justify-content属性

justify-content 用于设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式。

值 描述

flex-start默认值。项目位于容器的开头。flex-end项目位于容器的结尾。center项目位于容器的中心。space-between项目位于各行之间留有空白的容器内。space-around项目位于各行之前、之间、之后都留有空白的容器内。

7.png

五、弹性子元素属性

属性 描述

order设置弹性盒子的子元素排列顺序。flex-grow设置或检索弹性盒子元素的扩展比率。flex-shrink指定了 flex 元素的收缩规则。flex 元素仅在默认宽度之和大于容器的时候才会发生收缩,其收缩的大小是依据 flex-shrink 的值。flex-basis用于设置或检索弹性盒伸缩基准值。flex设置弹性盒子的子元素如何分配空间。align-self在弹性子元素上使用。覆盖容器的 align-items 属性。

1. order属性

.flex-container .flex-item { order: ; }

:用整数值来定义排列顺序,数值小的排在前面。可以为负值,默认为0。

8.png

2. flex-grow属性

.flex-container .flex-item { flex-grow: ; }

:一个数字,规定项目将相对于其他灵活的项目进行扩展的量。默认值是 0。

9.png

3. flex-shrink属性

.flex-container .flex-item { flex-shrink: ; }

:一个数字,规定项目将相对于其他灵活的项目进行收缩的量。默认值是 1。

10.png

4. flex-basis属性

.flex-container .flex-item { flex-basis:  | auto; }

:一个长度单位或者一个百分比,规定元素的初始长度。

auto:默认值。长度等于元素的长度。如果该项目未指定长度,则长度将根据内容决定。

5. flex属性

flex 属性用于设置或检索弹性盒模型对象的子元素如何分配空间。

flex 属性是 flex-grow、flex-shrink 和 flex-basis 属性的简写属性。

.flex-container .flex-item {flex:flex-grow flex-shrink flex-basis|auto|initial|inherit;}
值 描述

flex-grow一个数字,规定项目将相对于其他元素进行扩展的量。flex-shrink一个数字,规定项目将相对于其他元素进行收缩的量。flex-basis项目的长度。合法值:”auto”、”inherit” 或一个后跟 “%”、”px”、”em” 或任何其他长度单位的数字。auto与 1 1 auto 相同。none与 0 0 auto 相同。initial设置该属性为它的默认值,即为 0 1 auto。inherit从父元素继承该属性。

6. align-self属性

.flex-container .flex-item {align-self: auto|stretch|center|flex-start|flex-end|baseline|initial|inherit;}
值 描述

auto默认值。元素继承了它的父容器的 align-items 属性。如果没有父容器则为 “stretch”。stretch元素被拉伸以适应容器。center元素位于容器的中心。flex-start元素位于容器的开头。flex-end元素位于容器的结尾。baseline元素位于容器的基线上。initial设置该属性为它的默认值。inherit从父元素继承该属性。

11.png

取值同 align-items。

参考

阮一峰老师·Flex布局教程

runoob·Flex布局

本文转载自:https://www.jianshu.com/p/5856c4ae91f2

相关推荐:CSS视频教程

12.png13.png14.png15.png16.png

以上就是详解CSS3实现弹性布局的方式的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1615586.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 04:58:38
下一篇 2025年12月24日 04:58:48

相关推荐

  • 弹性布局中子元素缩小为何失效?

    弹性布局中子元素收缩条件 弹性布局中,flex-shrink 属性决定了子元素在空间不足时的收缩程度。但是,当 flex-wrap 为 nowrap(不允许换行)时,子元素的实际收缩行为可能与直觉不同。 在题目的案例中,由于子元素的总宽度超过了容器宽度,并且 flex-shrink 为 1(允许收缩…

    2025年12月24日
    000
  • 弹性布局中,子元素设置 flex-shrink: 1 但仍溢出,是什么原因?

    弹性布局允许收缩但禁止换行时子元素为何溢出? 在弹性布局中,flex-shrink 属性表示收缩系数。数据中,弹性元素的 flex-shrink 值为 1,表示允许收缩。当内容宽度超过容器宽度,且 flex-wrap 为 nowrap 时,应收缩子元素以适应容器。然而,演示中出现了溢出的情况。 之所…

    2025年12月24日
    000
  • 弹性布局收缩但不换行时,图像溢出该如何解决?

    弹性布局允许收缩但不换行时溢出解析 在弹性布局中,flex-shrink属性控制元素的收缩系数。然而,理解flex-shrink=1的含义很重要。它表示收缩系数为1,而不是强制元素收缩。收缩程度取决于特定情况。 在示例中,子元素被设置为flex-shrink: 1,表示它们允许收缩。但是,子元素中图…

    2025年12月24日
    000
  • 弹性布局中,子元素允许收缩,但为何宽度仍超出容器?

    宽超出容器却溢出而不是收缩的弹性布局之谜 在弹性布局中,flex-shrink 属性允许子元素收缩以适应容器的可用空间。然而,在某些情况下,尽管允许收缩,子元素却可能溢出容器。本文将探讨其中的原因并提供解决方案。 问题现象 有一个容器,其宽度为 320px,内部包含四个子元素,每个子元素的宽度为 1…

    2025年12月24日
    000
  • 为什么给“a”标签设置宽度才能显示 SVG 图片?

    为什么 a 标签需要指定宽度才能显示图片 在提供的 HTML 代码中,“a”标签包裹着一个“img”标签,用于显示一张图片。但问题中提到,如果不给“a”标签设置宽度,则图片不会被展示。那么,为什么会出现这种情况呢? 答案与图片类型有关。在该示例中,所使用的图片是一张 SVG 文件。SVG(可缩放矢量…

    2025年12月24日
    000
  • 弹性布局:子元素允许收缩,禁止换行却溢出容器,原因何在?

    弹性布局:允许收缩,禁止换行下溢出的原因 在弹性布局中,如果子元素的累计宽度大于容器宽度,并且设置为允许收缩(flex-shrink)但禁止换行(flex-wrap: nowrap),则子元素可能不会按预期收缩,而是溢出容器。 原因在于你对 flex-shrink 的误解。flex-shrink: …

    2025年12月24日
    000
  • CSS 图片水平排列却显示为梯形,为什么?

    css让图片水平排列,却显示为梯形的原因 使用换行符会导致图片垂直排列,而不是水平排列。要实现水平排列,可以删除br标签。 此外,使用弹性布局可以更好地控制图片的排列方式。以下改进后的html代码使用了弹性布局: 优化后的html代码: 立即学习“前端免费学习笔记(深入)”; Image Galle…

    2025年12月24日
    100
  • 使用 “ 标签让图片水平排列为何会造成梯形效果?

    css 让图片水平排列,但呈现为梯形的原因 在布局图片时,使用标签换行可能会导致问题。当图片在标签后浮动时,它们会随着文本流动,而不是保持自己的一行。 弹性布局解决方案 为了解决这个问题,可以使用弹性布局。弹性布局允许元素根据可用空间动态调整大小和位置。 采用弹性布局后,图片将占据剩余空间,并水平排…

    2025年12月24日
    000
  • CSS 让图片水平排列,为什么图片变成了梯形?

    css 让图片水平排列,为什么变成梯形了? 在 html 中使用 标签来换行可能会导致图片变成梯形,因为 会在图片下方创建新的行。 如何解决: 为了让图片水平排列,可以使用 css 的弹性布局: 立即学习“前端免费学习笔记(深入)”; 将图片容器 设置为弹性布局:display: flex; fle…

    2025年12月24日
    200
  • 如何解决小程序中弹性布局的 Gap 失效问题?

    弹性布局中的 gap 兼容性问题 在弹性布局中,使用 gap 属性可以轻松设置元素之间的间距。然而,在不同的平台上,gap 的兼容性存在差异。 问题:小程序中 gap 失效 当在 uni-app 项目中将弹性布局编译为小程序时,gap 属性将失效。这是因为小程序不支持 gap。 解决办法: 对于小程…

    2025年12月24日
    000
  • 如何解决 uni-app 项目中弹性布局(flex 布局)使用 gap 出现的兼容性问题?

    如何解决弹性布局(flex 布局)中使用 gap 出现的兼容性问题? 问题描述: 在使用 display: flex 和 justify-content: space-between 实现元素间距时,当元素数量不固定时,最后一行的间距会出现问题。为了解决这个问题,引入了 gap in flex 解决…

    2025年12月24日
    000
  • 网页设计图还原后出现高度溢出怎么办?

    网页设计图还原中的高度适配问题 在进行网页设计时,按照设计图上的尺寸来制作可能会导致页面过高,原因是浏览器本身会占据一定高度的标题栏和工具栏。对于普通登录页,如何处理高度溢出问题呢? 根据具体需求调整 不同的设计需求对应不同的解决方案。对于普通展示型网站,出现高度溢出时无需特别处理。而对于数据大屏等…

    2025年12月24日
    000
  • css布局是什么

    CSS 布局是一种使用 CSS 控制网页元素布局的技术,提供了灵活性、可维护性、跨浏览器兼容性等优势。它基于盒子模型、浮动、定位、网格布局和弹性布局等核心概念。常见的 CSS 布局技术包括浮动布局、表格布局、绝对定位、相对定位和弹性布局。 CSS 布局 CSS(层叠样式表)布局是一种使用 CSS(层…

    2025年12月24日
    000
  • css样式表的功能有哪些

    CSS(层叠样式表)是一种用于样式化 HTML 文档的语言,提供广泛的功能,包括:样式化文本(字体、大小、对齐等)。布局元素(定位、尺寸、网格等)。样式化链接(颜色、悬停效果等)。应用背景(颜色、图像、渐变等)。添加动画效果(过渡、变形等)。控制可见性(隐藏、显示等)。用户界面元素(表单元素、选择菜…

    2025年12月24日
    000
  • 常用css布局有哪些

    常见 CSS 布局有浮动、定位、弹性布局和网格布局。CSS Grid 取代 Float 和 Flexbox 的原因:更精确的控制响应式布局简化的代码交叉兼容性 常见 CSS 布局 CSS 提供了多种布局技术,可用于在网页中排列元素。最常用的 CSS 布局包括: 浮动(Float) 使用 float …

    2025年12月24日
    000
  • css怎么设置自适应布局

    CSS 自适应布局是一种调整网站布局以适应不同设备的网站设计技术。主要方法包括:弹性布局:使用 flex 属性创建灵活的容器,控制子元素在容器内的位置和大小。网格布局:使用 grid 属性创建网格系统,将容器划分为行和列,并放置子元素在特定区域。媒体查询:针对特定屏幕尺寸或设备类型应用不同样式。 C…

    2025年12月24日
    000
  • display在css中是什么意思

    CSS中的display属性控制元素在网页中的布局。其含义:inline:元素内联排列,与文本流动。block:元素块级排列,独占一行,占据宽度。inline-block:结合inline和block特性,内联排列但可设置尺寸。none:隐藏元素。flex:使用弹性布局,自动调整元素大小和位置。gr…

    2025年12月24日
    000
  • css中的flex是什么意思

    Flexbox 是 CSS 中的一组属性,用于灵活布局元素,提供对布局的极大控制权。它具有以下主要特性:定义主轴和次轴的方向。指定项目在容器中的排列、空间分配和对齐方式。顺序确定项目在容器中的顺序。优点包括响应式、灵活、易用。使用时,需要将 display 属性设置为 flex 或 inline-f…

    2025年12月24日
    000
  • display在css中什么意思

    在 CSS 中,display 属性控制元素在页面中的显示方式,决定其页面流行为和与其他元素的交互方式。 display在CSS中表示什么? display属性在CSS中用于设置元素在页面中的显示方式。它决定了元素在页面流中的行为,并定义了它如何与其他元素交互。 display属性的取值 displ…

    2025年12月24日
    000
  • css样式种类有哪些

    CSS 样式种类包括:基本样式(字体、颜色、边框、内边距/外边距),布局样式(浮动、定位、显示、网格布局、弹性布局),特殊效果(过渡、动画、变形、过滤器、混合模式),表样式(表格显示、表格数据),以及其他样式(媒体查询、自定义属性、动画时间线)。 CSS 样式种类 层叠样式表(CSS)提供多种样式选…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信