flex布局进阶

推荐看一下阮一峰老师的flex布局博客【Flex 布局教程:语法篇】(https://www.ruanyifeng.com/blog/2015/07/flex-grammar.html#),讲的非常清晰。

一、多行布局大小相同的子盒子技巧

使用弹性布局实现多行均匀布局时,如若子盒子数量不能被每行规定的子盒子数量整除时,该如何实现最后一行的子盒子和其他行的子盒子垂直对齐呢?

如下代码:

<template>
    <div class="container">
        <div class="item" v-for="item, index in 5" :key="index"></div>
    </div>
</template>

<style lang="scss" scoped>
.container {
    width: 1000px;
    height: 400px;
    background-color: pink;
    margin: 100px;
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
    .item {
        width: 30%;
        height: 100px;
        background-color: gray;
    }
}
</style>

在这里插入图片描述

可以看到最后的一行只有两个子盒子,它们根据jusctify-content: space-between的规则贴在父盒子的两边,而业务需求是:最后一行的子元素必须按顺序和其他的子元素垂直对齐,那么如何在不影响其他行布局的前提下实现最后一行的子盒子按顺序和其他行的子盒子垂直对齐呢?我们可以使用伪元素+元素不可见来实现。

我们给父盒子增加一个宽度和子盒子一样宽的伪元素:

.container::after {
    content: '';
    width: 30%;
    visibility: hidden;
}

visibility:hidden实现了将元素隐藏,但是元素在网页中该占的位置还是占着的。

这样就成功完成了需求:
在这里插入图片描述

二、flex-flow

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

这里我们在上一小节的基础上,使用flex-flow代替flex-warp来测试一下flex-flow属性。

.container {
    width: 1000px;
    height: 400px;
    background-color: pink;
    margin: 100px;
    display: flex;
    justify-content: space-between;
    flex-flow: row wrap;  // 得到的效果是一样的
    .item {
        width: 30%;
        height: 100px;
        background-color: gray;
    }
}

得到了相同的结果。
在这里插入图片描述

三、flex-start | flex-end

center | space-between | space-around 

justify-content的这三个属性值的使用早已游刃有余了,这里我记录一下较为陌生的两个属性:

flex-start(默认值) | flex-end

flex-start是弹性布局的默认水平对齐方式,也就是左对齐,显然,flex-end就是右对齐了。

四、align-items属性进阶

和水平对齐方式一样的道理,垂直对齐方式align-item也有flex-startflex-end,不过它们分别代表上对齐和下对齐,下对齐常用于解决flex单行布局由于子盒子高度不同而导致子盒子下边界不在同一水平线的问题。如下

<template>
    <div class="container">
        <div class="item1"></div>
        <div class="item2"></div>
        <div class="item3"></div>
    </div>
</template>

<style lang="scss" scoped>
.container {
    width: 1000px;
    height: 400px;
    background-color: pink;
    margin: 100px;
    display: flex;
    justify-content: space-between;
    // align-items: flex-end;
    div {
        width: 30%;
        background-color: gray;
    }
    .item1 {
        height: 100px;
    }
    .item2 {
        height: 200px;
    }
    .item3 {
        height: 300px;
    }
}
</style>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bEQwf724-1690120788048)(C:\Users\22706\AppData\Roaming\Typora\typora-user-images\image-20230723212133179.png)]

给父盒子添加align-items: flex-end后,实现了子盒子下边界在同一水平线上。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iVHHIwS5-1690120788048)(C:\Users\22706\AppData\Roaming\Typora\typora-user-images\image-20230723212641092.png)]

align-items: flex-start | flex-end | center | baseline | stretch(默认);

值得注意的是弹性布局的垂直对齐方式默认并是上对齐,而是stretch,那么stretch是什么效果呢?stretch有延伸、张开、弹性的的意思,在弹性布局中就表示如果父盒子没有给高度并且使用了flex布局,那么父盒子的高度将由子盒子决定,根据子盒子的高度来自动撑开父盒子

这里再了解一下属性基线对齐:

baseline: 子盒子与第一行文字的基线对齐。

css中的基线(baseline0)并不是汉字文字的下端沿,而是英文字母x的下端沿,如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CpuVoPeZ-1690120788048)(C:\Users\22706\AppData\Roaming\Typora\typora-user-images\image-20230723215602328.png)]

五、子盒子属性flex: none | [<‘flex-grow’> <‘flex-shrink’>? || <‘flex-basis’>]

阮一峰老师的博客讲解的非常详细:Flex 布局教程:语法篇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/48708.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

flutter开发实战-父子Widget组件调用方法

flutter开发实战-父子Widget组件调用方法 在最近开发中遇到了需要父组件调用子组件方法&#xff0c;子组件调用父组件的方法。这里记录一下方案。 一、使用GlobalKey 父组件使用globalKey.currentState调用子组件具体方法&#xff0c;子组件通过方法回调callback方法调用父组…

项目报错clone2.weekday is not a fuction

ant-design-vue中的dayjs版本和我项目中的dayjs版本不一样 项目中的dayjs版本号 ant-design-vue中的dayjs版本号"dayjs": “^1.11.9” 解决方法&#xff1a; 将项目中的版本号更新"dayjs": “^1.11.9” yarn add dayjs^1.11.9

嵌入式软件—RK3568开发环境搭建

一、RK3568 1.1 开发板特点 BSP比较大&#xff0c;对于电脑内存和存储空间要求高 1.2 BSP BSP&#xff08;Board Support Package&#xff0c;板级支持包&#xff09;&#xff0c;类似于PC系统中BIOS和驱动程序的集合&#xff0c;BSP包含的范围更广&#xff0c;除了外设驱动…

vue+ivew model框 select校验遇到的问题

iview model 点击关闭&#xff0c;校验没有通过也会关闭 解决办法&#xff1a; 第一步&#xff1a;自定义页脚内容 <div slot"footer"><Button type"primary" click"confirmCarryOver()">确认</Button><Button click&qu…

第五章 数组

定义 数组是一组相同类型元素的集合&#xff0c;但我们需要创建多个相同类型的变量时&#xff0c;只需要创建一个类型的数组&#xff0c;就相当于同时创建很多相同类型的变量。 一维数组 数组如何创建 从定义来入手看一下数组的创建&#xff1a; type_t arr_name[const_n];…

内置 NMOS 单路 PWM 控制的高调光比 LED 降压恒流控制器

概述 OC5401M 是一款内置调光 NMOS 的单路 PWM 控制的高调光比降压恒流驱动控制器&#xff0c;PWM 调光比最高可达 10000&#xff1a;1。 OC5401M 支持 16-60V 输入电压范围。 OC5401M 采用电流滞环控制方式&#xff0c;无需环路补偿。 OC5401M 可通过外接电阻设置 LED输出电流…

FFmpeg AVFilter的原理(三)- filter是如何被驱动的

首先上官方filter的链接&#xff1a;https://ffmpeg.org/ffmpeg-filters.html 关于filter命令行&#xff1a;FFmpeg-4.0 的filter机制的架构与实现.之一 Filter原理 1、下面是一个avfilter的graph 上图是ffmpeg中doc/examples中filtering_video.c案例的示意图。 特别注意上面蓝…

专题-【排序比较】

时间最好&#xff1a;直接和冒泡&#xff0c;n 堆排序和归并时间固定&#xff1a;nlog2n 空间&#xff1a;归并&#xff0c;n&#xff1b;快速&#xff0c;log2n 稳定&#xff1a;直冒归基

Mybatis-plus从入门到精通

1、什么是MyBatis-Plus MyBatis-Plus&#xff08;简称MP&#xff09;是一个基于MyBatis的增强工具&#xff0c;在MyBatis的基础上对其进行扩展&#xff0c;用于简化MyBatis操作&#xff0c;提高开发效率。它继承了MyBatis原生的所有特性&#xff0c;并且添加了一些额外的功能&…

AI语音合成 VITS Fast Fine-tuning,半小时合成专属模型,部署训练使用讲解

前言 项目名&#xff1a;VITS-fast-fine-tuning &#xff08;VITS 快速微调&#xff09; 项目地址&#xff1a;https://github.com/Plachtaa/VITS-fast-fine-tuning 支持语言&#xff1a;中、日、英 官方简介&#xff1a; 这个代码库会指导你如何将自定义角色&#xff08;甚至…

R语言无法调用stats.dll的问题解决方案[补充]

写在前面 在去年10月份&#xff0c;出过一起关于R语言无法调用stats.dll的问题解决方案,今天&#xff08;你看到后是昨天&#xff09;不知道为什么&#xff0c;安装包&#xff0c;一直安装不了&#xff0c;真的是炸裂了。后面再次把R与Rstuido升级。说实话&#xff0c;我是真不…

文件上传--题目

之前有在技能树中学过文件上传&#xff0c;正好借这次进行一个整合&#xff1a; 技能树中所包含的题目类型有 无限制绕过 1.上传一句话木马 2.链接中国蚁剑 前端验证 1.会发现这个网站不让提交php&#xff0c;改后缀为jpg格式&#xff0c;再用burp抓包 2.在用中国蚁剑连接 .…

day44-Spring_AOP

0目录 1.2.3 1.Spring_AOP 实体类&#xff1a; Mapper接口&#xff1a; Service和实现类&#xff1a; 测试1&#xff1a; 运行后&#xff1a; 测试2&#xff1a;无此型号时 测试3&#xff1a;库存不足时 解决方案1&#xff1a;事务声明管理器 测试&#xff1a…

行列转换.

表abc&#xff1a; &#xff08;建表语句在文章末尾&#xff09; 想要得到&#xff1a; 方法一 with a as(select 年,产 from abc where 季1), b as(select 年,产 from abc where 季2), c as(select 年,产 from abc where 季3), d as(select 年,产 from abc where 季4) selec…

【设计模式】详解单例设计模式(包含并发、JVM)

文章目录 1、背景2、单例模式3、代码实现1、第一种实现&#xff08;饿汉式&#xff09;为什么属性都是static的&#xff1f;2、第二种实现&#xff08;懒汉式&#xff0c;线程不安全&#xff09;3、第三种实现&#xff08;懒汉式&#xff0c;线程安全&#xff09;4、第四种实现…

12页线性代数图解教程,github星标9.1k,适合小白

线性代数“困难户”注意&#xff0c;今天我给大家分享一个超适合小白的线性代数学习笔记&#xff0c;只有12页纸&#xff0c;一半都是图解&#xff0c;不用担心看不懂。 这份笔记名为《线性代数的艺术》&#xff0c;是日本学者Kenji Hiranabe基于Gilbert Strang教授的《每个人…

Install Ansible on CentOS 8

环境准备&#xff1a; 1.至少俩台linux主机&#xff0c;一台是控制节点&#xff0c;一台是受控节点 2.控制节点和受控节点都需要安装Python36 3.控制节点需要安装ansible 4.控制节点需要获得受控节点的普通用户或root用户的权限&#xff0c;控制节点需要ssh客户端&#xff0c;…

叶工好容5-日志与监控

目录 前言 平台维度 docker运行状态 cAdvisor-日志采集者 Heapster-日志收集 metrics-server-出生决定成败 kube-state-metrics-不完美中的完美 应用维度 日志 部署方式 输出方式 工具选择 日志接入 监控 serviceMonitor Annotation Prometheus扩展性 Thanos …

【Redis深度专题】「核心技术提升」探究Redis服务启动的过程机制的技术原理和流程分析的指南(基础功能分析)

探究Redis服务启动的过程机制的技术原理和流程分析的指南 Redis基本概念Redis特点说明 Redis源码结构Redis功能架构Redis启动流程初始化全局服务器配置源码分析分析说明initServerConfig方法初始化的内容保存机制的初始化策略优化的初始化策略 指定配置文件加载配置文件默认的数…

2023年自然语言处理与信息检索国际会议(ECNLPIR 2023) | EI Compendex, Scopus双检索

会议简介 Brief Introduction 2023年自然语言处理与信息检索国际会议(ECNLPIR 2023) 会议时间&#xff1a;2023年9月22日-24日 召开地点&#xff1a;中国杭州 大会官网&#xff1a;ECNLPIR 2023-2023 Eurasian Conference on Natural Language Processing and Information Retr…