首页 > 其他分享 >flex布局

flex布局

时间:2023-12-26 17:23:37浏览次数:20  
标签:容器 元素 flex 布局 弹性 主轴 对齐

目录

简介

弹性盒子是 CSS3 的一种新的布局模式。CSS3 弹性盒( Flexible Box 或 flexbox),是一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式。引入弹性盒布局模型的目的是提供一种更加有效的方式来对一个容器中的子元素进行排列、对齐和分配空白空间。

弹性盒子由弹性容器(Flex container)和弹性子元素(Flex item)组成。弹性容器通过设置 display 属性的值为 flex 或 inline-flex将其定义为弹性容器。弹性容器内包含了一个或多个弹性子元素。

flex容器

将任何一个容器设置为flex容器,这样容器内的元素都可以使用flex布局。

.container{
    display:flex | inline-flex;
}

基本概念

在flex容器中默认存在两条轴--------主轴和交叉轴,默认为水平主轴,垂直交叉轴,可以通过flex-direction修改。

flex-direction:决定主轴的方向(即元素的排列方向)

.container{
    flex-direction: row | row-reverse | column | column-reverse;
}
  • 默认值:row,主轴为水平方向,起点在左端。

  • row-reverse,主轴为水平方向,起点在右端

  • column,主轴为垂直方向,起点在上面

  • column-reverse:主轴为垂直方向,起点在下面

flex-wrap: 指定弹性盒子的子元素换行方式

.container{
    flex-wrap: nowrap|wrap|wrap-reverse;
}
  • nowrap - 默认, 弹性容器为单行。该情况下弹性子项可能会溢出容器。

  • wrap - 弹性容器为多行。该情况下弹性子项溢出的部分会被放置到新行,子项内部会发生断行

  • wrap-reverse -反转 wrap 排列。

justify-content:定义了元素在主轴的对齐方式

.container {
    justify-content: flex-start | flex-end | center | space-between | space-around;
}
  • flex-start:子元素向主轴start边界紧挨着填充。这个是默认值。

  • flex-end:子元素向主轴end边界紧挨着填充。

  • center:子元素居中紧挨着填充。(如果剩余的自由空间是负的,则弹性项目将在两个方向上同时溢出)。

  • space-between:子元素平均分布在该行上(第一个子元素与主轴start边界对齐,最后一个元素与主轴end边界对齐,剩余的弹性项分布在该行上,相邻项目的间隔相等。)。如果剩余空间为负或者只有一个弹性项,则该值等同于flex-start。

  • space-around:子元素平均分布在该行上,两边留有一半的间隔空间。如果剩余空间为负或者只有一个弹性项,则该值等同于center。否则,弹性项目沿该行分布,且彼此间隔相等(比如是20px),同时首尾两边和弹性容器之间留有一半的间隔(1/2*20px=10px)。

  • space-evenly:子元素平均分布在该行上,但与space-around不同的是子元素之间的间隔是相同的,包括与容器的间隔

align-items:设置弹性盒子元素在交叉轴(与主轴垂直)方向上的对齐方式

.container {
    align-items:stretch | flex-start | flex-end | center | baseline;
}
  • flex-start:子元素与向交叉轴的start边界对齐。默认值

  • flex-end:子元素与向交叉轴的end边界对齐。

  • center:子元素与交叉轴的中点对齐。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。

  • baseline:与第一个元素内文字的基线对齐。

  • stretch:如果子元素未指定交叉轴方向的大小属性值,则子元素交叉轴方向的大小会跟容器大小一致,但同时会遵照'min/max-width/height'属性的限制。如下,没有给子元素设置高度。

align-content:用于修改 flex-wrap 属性的行为

类似于 align-items, 但它不是设置弹性子元素的对齐,而是设置各个行的对齐。

.container{
    align-content: flex-start | flex-end | center | space-between | space-around | stretch
}
  • stretch - 默认。各行将会伸展以占用剩余的空间。

  • flex-start - 各行向弹性盒容器的起始位置堆叠。

  • flex-end - 各行向弹性盒容器的结束位置堆叠。

  • center -各行向弹性盒容器的中间位置堆叠。

  • space-between -各行在弹性盒容器中平均分布。

  • space-around - 各行在弹性盒容器中平均分布,两端保留子元素与子元素之间间距大小的一半。

弹性子元素

order

定义子元素在容器中的排列顺序,数值越小,排列越靠前,默认值为 0

.item {
    order: <integer>;
}
//可以为负值

flex-basis

指定子元素在分配flex容器剩余空间之前占据主轴空间的大小。默认值auto

.item{
    flex-basis: auto | <length>;
	//<length>可以为百分比
}

如果主轴为水平方向,那么子元素的宽度会失效
如果主轴为垂直方向,那么子元素的高度会失效

例如,给每个子元素设置flex-basis:60px

还有剩余空间没有分配完,可以使用flex-grow来分配,例如:flex-grow:1,每个子元素会平均分配剩余空间

标签:容器,元素,flex,布局,弹性,主轴,对齐
From: https://www.cnblogs.com/ewar-k/p/17928360.html

相关文章

  • [CSS]flex弹性盒
    先来一个常用的flex样例。水平从左往右主轴,自动换行,从主轴起始位置开始分布(侧轴不设置,使用margin进行间隔):.tags{display:flex;justify-content:flex-start;flex-wrap:wrap;}.tag_item{margin:10px12px;}  Flex(弹性盒、伸缩盒)是CSS中的又一种布......
  • 20、布局(QStackedWidget)
    QStackedWidget是Qt框架中的一个容器类,它可以用来管理多个窗口或页面,只显示其中一个窗口或页面。在QStackedWidget中,只有当前激活的窗口或页面可见,其他窗口或页面被隐藏。使用QStackedWidget可以方便地实现页面切换效果,比如制作一个具有多个页面的向导,或者实现一个选项卡......
  • grid网格布局
    grid-area:2/4/4/5;第几行开始/第几列开始/到第几行结束/到第几列结束 <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0&q......
  • 【UniApp】-uni-app-项目实战页面布局(苹果计算器)
    前言经过前面的文章介绍,基本上UniApp的内容就介绍完毕了那么从本文开始,我们就开始进行一个项目的实战这次做的项目是苹果计算器,这个项目的难度不是很大,但是也不是很简单,适合练手创建项目打开HBuilderX,点击左上角文件->新建->项目:搭建基本布局项目创建完毕之......
  • [Qt5&布局] 控件自动填满所在布局框架
    作者:丶布布如图,在界面布局时,将几个QT控件进行布局时,默认边缘时有一定间隙的(红框标注),有时为了美观,可以将布局边缘的间隙设置成我们想要的宽度具体设置方法:默认边缘间隙为11,设置为1,看一下效果: 戳戳小手帮忙点个免费的赞和关注吧,嘿嘿。......
  • react Hooks+Context 实现响应式布局
    1.创建文件 viewportContext.tsx importReactfrom"react";constdefaultValue={  width:window.innerWidth}constviewportContext=React.createContext(defaultValue);constViewportProvider=({children})=>{  const[width,setWidt......
  • QStackedLayout栈布局小案例
    一、概述使用QStackedLayout+QListWidget切换布局。如下: 二、示例#include"StackedLayoutExampleWindow.h"StackedLayoutExampleWindow::StackedLayoutExampleWindow(QWidget*parent):QWidget(parent){this->setWindowTitle("StackedLayout布局"......
  • QFormLayout表单布局
    一、概述新建一个简单的登录表单布局QFormLayout。如下: 二、代码示例#include"FormLayoutExampleWindow.h"FormLayoutExampleWindow::FormLayoutExampleWindow(QWidget*parent):QWidget(parent){this->setWindowTitle("Form表单");//表单布局......
  • 十八、组件-容器组件-column、row、flex
    @Entry@ComponentstructColumExample{build(){Column({space:10}){Column(){Column().width('50%').height(30).backgroundColor(Color.Blue)Column().width('60%').height(40).backgroundColor(Color.Brown)......
  • dispaly: flex—左右两栏式
    父级:display:flexleft:flex:00200px(固定200px,不放大也不缩小)right:flex:1(会随父级变化)(固定+自适应)<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><!--参考阮一峰里......