首页 > 其他分享 >flex布局学习笔记

flex布局学习笔记

时间:2024-07-06 12:01:11浏览次数:11  
标签:flex 元素 container 布局 笔记 item 宽度 display

教学视频来自25分钟彻底弄懂CSS Flex基础布局 / CSS Flex 入门教程_哔哩哔哩_bilibili

目录

一、前置代码

二、flex元素的自动宽度

​编辑

三、flex元素的增大逻辑

四、flex元素的缩小逻辑

五、flex容器的交叉轴对齐

六、flex元素的换行

七、flex元素直接的多轴换行

八、补充内容


一、前置代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="index.css">
</head>
<body>
    <div class="container">
        <div class="item">item 1111111</div>
        <div class="item">item 2</div>
        <div class="item">item 3</div>
        <div class="item">
            item 4<br />
            item 4<br />
            item 4<br />
        </div>
        <div class="item">item 5</div>
    </div>
</body>
</html>
.container {
    border: 1px dashed black;
    width: 500px;
}
.item{
    background-color: cornflowerblue;
    border: 1px dashed black;
    border-radius: 10%;
}

二、flex元素的自动宽度

(1)将container设置为flex布局

.container{
    display: flex;
}

(2)取消flex布局,并将item设置为最大宽度(显示宽度元素的最大宽度为限)

.container{
    /* display: flex; */
}
.item{
    width: max-content;
}

(3)增加代码。当元素宽度超过父元素的宽度时,子元素的宽度默认为min-content(以元素中最长的单词为限)

<div class="item">
        Wife: You see. According to the statistics on the paper, 80% of those
        who have died of liver cancer have drunk alcohol. Husband: It's okay. To
        my investigation, all these people eat meals.
</div>
<div class="item">
        Wife: You see. According to the statistics on the paper, 80% of those
        who have died of liver cancer have drunk alcohol. Husband: It's okay. To
        my investigation, all these people eat meals.
</div>
<div class="item">
        Wife: You see. According to the statistics on the paper, 80% of those
        who have died of liver cancer have drunk alcohol. Husband: It's okay. To
        my investigation, all these people eat meals.
</div>
<div class="item">
        Wife: You see. According to the statistics on the paper, 80% of those
        who have died of liver cancer have drunk alcohol. Husband: It's okay. To
        my investigation, all these people eat meals.
</div>
.container{
    display: flex;
}

三、flex元素的增大逻辑

(1)flex-basis属性:设置元素的宽度为50px。
 

.container{
    display: flex;
}
.item{
    flex-basis: 50px;
}

(2)flex-grow属性:每个元素都占了50px,剩余250px的空间,将这些空间平分为5份,每个元素再多占一份。

.container{
    display: flex;
}
.item{
    flex-basis: 50px;
    flex-grow: 1;
}

(3)使用nth-child()设置某个元素的宽度:这里将第一个元素的宽度设置为50px+6/10*剩余空间的大小,剩余空间元素1分到6份,其他元素各分到1份。

.container{
    display: flex;
}
.item{
    flex-basis: 50px;
    flex-grow: 1;
}
.item:nth-child(1){
    flex-grow: 6;
}

(4)使用nth-child()设置元素宽度:理论上将元素一设置为其他元素宽度的100倍,但是这里没有实现,因为要保证容器内元素可读,所以其他元素至少为最小宽度。

.container{
    display: flex;
}
.item{
    flex-basis: 0px;
    flex-grow: 1;
}
.item:nth-child(1){
    flex-grow: 100;
}

可通过手动设置将元素宽度设置为0px,从而达到目的。

.container{
    display: flex;
}
.item{
    flex-basis: 0px;
    width: 0px;
    flex-grow: 1;
}
.item:nth-child(1){
    flex-grow: 100;
}

四、flex元素的缩小逻辑

(1)flex-shrink属性:flex-shrink属性默认值为1,当子元素宽度超过父元素时,会自动缩小子元素,否则不会自动缩小子元素,导致子元素超过父元素宽度。

.container{
    display: flex;
}
.item{
    flex-shrink: 0;
    flex-basis: 200px;
}

(2)flex属性:flex中包含的值分别是grow shrink basis。默认值分别是0,1,auto。
          简写:flex: 1=flex: 1 1 auto

                     flex: 1 100px=flex: 1 1 100px

                     flex: 1 1=flex: 1 1 auto

                     flex: initial=flex: 0 1 auto

                     flex: auto=flex: 0 1 auto

                     flex: none=flex: 0 0 auto

            等分: flex: 1 0px=flex: 1 1 0px。0px是因为flex要保证元素可读性,每个元素的最小宽度为该元素中最大不可拆分的单词的宽度,为了保证等分,需要先将元素的宽度设置为0.

五、flex容器的交叉轴对齐

(1)align-items为行高属性,当值为stretch时,将元素设置为与最高的元素同高.

.container{
    display: flex;
    width: 500px;
    align-items: stretch;
}

(2)align-items:flex-start:将元素设置在起点对齐,flex-end设置为在终点对齐.flex-center在中间对齐.

.container{
    display: flex;
    width: 500px;
    align-items: flex-start;
}

align-items: baselin设置将元素在文字基线处对齐

.container{
    display: flex;
    width: 500px;
    align-items: baseline;
}
.item:nth-child(1){
    font-size: 36px;
}

(3)justify-content属性:flex-start在主轴起点对齐.

flex-end在主轴终点对齐

center在主轴中间对齐

.container{
    display: flex;
    width: 500px;
    justify-content: flex-start;
}
.item:nth-child(1){
    font-size: 36px;
}

    justify-content: space-between,收尾顶格,中间平分.

.container{
    display: flex;
    width: 500px;
    justify-content: space-between;
}
.item:nth-child(1){
    font-size: 36px;
}

    justify-content: space-around;中间空间是两边空间的2倍

.container{
    display: flex;
    width: 500px;
    justify-content: space-around;
}
.item:nth-child(1){
    font-size: 36px;
}

justify-content: space-evenly;两边和中间的一致

六、flex元素的换行

(1)使用flex-wrap属性进行设置.当属性值为nowrap时,不进行换行.

.container{
    display: flex;
    width: 500px;
    height: 300px;
    flex-wrap: nowrap;
}
.item{
    flex-basis: 200px;
}

当值为wrap时,自动换行

wrap-reverse,逆转排序并换行

七、flex元素直接的多轴换行

align-content属性进行控制.默认值normal.

.container{
    display: flex;
    width: 500px;
    height: 300px;
    flex-wrap: wrap;
    align-content: normal ;
}
.item{
    flex-basis: 200px;
}

值为flex-start,从交叉轴开始对齐

值为flex-end,从交叉轴结束对齐

值为space-around,顶部和底部的距离为中间距离的一半

值为space-between,首尾无空隙 中间平分

值为space-evenly,首尾,中间平分

八、补充内容

(1)设置元素在盒子中按水平和垂直方式居中对齐:

将item设置为flex布局方式 ,从而使用flex布局实现item中的内容在横轴和纵轴上居中的效果。

主要作用代码为

align-items: center;
justify-content: center;

.container {
  width: 500px;
  display: flex;
}
.item {
    /* 将item设置为flex布局方式 ,从而使用flex布局实现item中的内容在横轴和纵轴上居中的效果*/
  display: flex;
  flex-basis: 120px;
  align-items: center;
  justify-content: center;
}

标签:flex,元素,container,布局,笔记,item,宽度,display
From: https://blog.csdn.net/qq_54581101/article/details/140152243

相关文章

  • 7.6 做题笔记
    7.6做题笔记笔记、梳理、题解合三为一的产物。P2569[SCOI2010]股票交易考虑DP,数据允许开到平方级别。设\(f_{i,j}\)表示第\(i\)天持有\(j\)张股票的最大钱。四种转移:凭空买入,即本次买入与前面无关。\(f_{i,j}=-ap_i\cdotj\)。不买不卖,直接从前些天转移。$f_......
  • QT笔记:Process库
    QT笔记:Process库说明​ QT带有Process库用以在原有的进程中开一个新的线程或者其他进程来执行其他程序,这个库调用非常简单,这里给出一个创建一个分离进程来执行bat脚本的示例示例#include<QCoreApplication>#include<QProcess>#include<QThread>intmain(intargc,cha......
  • QT笔记:BLE库
    QT笔记:BLE库说明QT自带蓝牙库,但是QT的蓝牙库又有很多坑,这里记录下安装QT蓝牙库​ 和其他模组类似,可以通过QT的维护工具进行添加,跟之前添加串口库类似。不过要注意,蓝牙库并不是独立存在,而是和NFC等组件统一在Connectivity库中。添加时需要检查仔细安装MSVC​ 在添加蓝牙库时......
  • 【Python】原创·基础·学习笔记1
         一、字面量二、变量三、注释四、数据类型1.数据类型的分类2.数据类型的转换3.数据类型查询type()语句五、标识符六、运算符七、字符串的定义  1.字符串的三种定义方式  2.引号的嵌套使用  3.使用转义字符八、字符串拼接九、字符......
  • 树莓派学习笔记18:IIC驱动_PCA9685(16路舵机驱动模块)
    今日继续学习树莓派4B4G:(RaspberryPi,简称RPi或RasPi)本人所用树莓派4B装载的系统与版本如下: 版本可用命令(lsb_release-a)查询:​​ Python版本3.7.3:​​ IIC驱动_PCA9685(16路舵机驱动模块)文章提供测试代码讲解,整体代码贴出、测试效果图目录 开启树......
  • 小红书达人笔记广告投放全攻略
    ......
  • 工作助手VB开发笔记(2)
    今天继续讲功能2.功能2.9开机自启设置程序随windows系统启动,其实就是就是将程序加载到注册表PublicSubStartRunRegHKLM()REMHKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run'DimstrNameAsString=......
  • Arthas进阶-笔记
    《Arthas进阶》学习目标类和类加载器相关的命令monitor/watch/trace/stack等核心命令的使用火焰图的生成Arthas实战案例dump作用将已加载类的字节码文件保存到特定目录:logs/arthas/classdump/参数数名称参数说明class-pattern类名表达式匹配[c:]类所属......
  • 【网工】学习笔记1
    windows:ipconfigens40:和别人通信的网卡lo本地回环和自己通信的网卡ifconfigdown/up进程:运行起来的程序使用浏览器访问网站:http:电脑上的程序和网站上的程序之间的通信。主要用于服务器和客户端之间上传和下载文件一个很好用的写代码的软件......
  • 学习笔记——交通安全分析11
    目录前言当天学习笔记整理4信控交叉口交通安全分析结束语 前言#随着上一轮SPSS学习完成之后,本人又开始了新教材《交通安全分析》的学习#整理过程不易,喜欢UP就点个免费的关注趴#本期内容接上一期10笔记#最近确实太懒了,接受宝子们的批评,以后我会注意哒,虽然每天都有学......