【H2O2|全栈】关于CSS(11)flex——更加优雅的布局

news2025/1/18 10:55:19

目录

CSS3入门

前言

准备工作

布局优化

如何使用flex布局

容器与成员

概念

轴线

容器的属性

成员的属性

预告和回顾

后话


CSS3入门

前言

本系列博客主要介绍CSS有关知识点,当前章节讲述CSS3相关内容。

本章节讲述flex布局的相关知识。

部分内容仅代表个人观点,仅供参考,希望能帮助到您。 

准备工作

软件:【参考版本】Visual Studio Code

插件(扩展包):Open in browser, Live Preview, Live Server

浏览器版本:Chrome

系统版本: Win10/11/其他非Windows版本

*我的电脑是Win10的版本,仅供参考*

布局优化

在之前,我们想对一个元素的位置进行调整时,常常使用大量的内外边距、浮动、定位等操作来完成。特别是在使用浮动和定位时,还需要考虑脱离文档流带来的影响。

有时,我们设置好一些浮动的盒子,这些盒子的宽度刚刚好占满整个外层容器的宽,在缩放页面或者处于某些特殊比例的屏幕的时候,这些盒子由于不能自适应就可能被“挤下去”。

遇到上述这些情况的时候,我们在调整样式时可能会为了兼容性和美观花费大量时间。

好在CSS3的flex布局为我们的布局提供了一种全新的思路,让我们的布局操作变得更加简单快捷。

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

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

如何使用flex布局

对于html的任何标签来说,我们都可以使用以下两种常见的方式来指定其作为容器的flex布局方式:

  • display:flex
  • display:inline-flex

其中第二种方式是对行内元素进行使用的。

需要注意的是,如果设置了父元素的flex布局方式,那么子元素里的float,clear,vertical-align将失效。 

容器与成员

概念

采用Flex布局的元素,称为Flex容器(大盒子 flex container),简称“容器”。它的所有子元素自动成为容器的成员,称为Flex成员(小盒子 flex item),简称“成员”(或“项目”)。

轴线

容器默认有两条相互垂直的轴线——主轴(main axis)交叉轴(cross axis)

在不设置轴线方向时,主轴的方向为水平方向,成员默认沿主轴方向分布。

容器的属性

容器常见的属性有下面6种:

  • flex-direction
  • flex-wrap
  • flex-flow
  • justify-content
  • align-items
  • align-content

flex-direction

定义主轴的方向(成员排列的方向),包含以下四种常见属性:

  1. row:主轴为水平方向,起点在左侧  默认
  2. row-reverse:主轴为水平方向,起点在右侧
  3. column:主轴为垂直方向,起点在上侧  默认
  4. column-reverse:主轴为垂直方向,起点在下侧

flex-wrap

定义子元素超出容器时是否换行,包含以下三种常见属性:

  1. nowrap:不换行  默认情况下项目都排在轴线上
  2. wrap:换行  第一行在前面
  3. wrap-reverse:换行  第一行在后面

flex-flow

简写flex-directionflex-wrap属性。默认值为row nowrap。

justify-content

定义项目在主轴上的对齐方式,包含以下六中常见属性:

  1. flex-start:默认 向主轴开始的位置对齐
  2. flex-end:向主轴结束的位置对齐
  3. center:主轴方向居中对齐
  4. space-around:剩余空间主轴方向上以环绕的方式平均分配给项目
  5. space-between:剩余空间主轴方向上项目之间平均分配
  6. space-evenly:剩余空间主轴方向上平均分配

后三种方式看着有一些抽象,我们先按照顺序放出三种的效果:

 

aroud实质上等于是在元素沿主轴方向的两侧加上了相同的margin,比如1、2之间的距离就是1到容器左侧的距离的两倍。 

between实质上就是两侧的元素紧靠容器边界,中间的成员等间隔。

evenly实质上就是所有的主轴上的剩余空间间距都相同,包括成员与成员之间的以及成员与边界之间的。

align-items

定义项目在交叉轴上的对齐方式,包含以下五种常见属性:

  1. stretch:默认值 如果项目未设置高度或设为auto,将沾满容器的高度
  2. flex-start:向交叉轴轴开始的位置对齐
  3. flex-end:向交叉轴结束的位置对齐
  4. center:交叉轴方向居中对齐
  5. baseline:项目的第一行文字的基线对齐

这个文字基线对齐和vertical-align是一致的。

align-content

定义多根轴线的对齐方式,这个属性只有在换行之后才会生效,即主轴数量超出一根时生效。常见的属性值有以下七种;

  1. flex-start:向交叉轴轴开始的位置对齐
  2. flex-end:向交叉轴结束的位置对齐
  3. center:交叉轴方向居中对齐
  4. space-around:剩余空间交叉轴方向上以环绕的方式平均分配给项目
  5. space-between:剩余空间交叉轴方向上项目之间平均分配
  6. space-evenly:剩余空间交叉轴方向上平均分配
  7. stretch:默认值  轴线占满整个交叉轴 

成员的属性

成员常见的属性有以下6种:

  • order 
  • flex-grow
  • flex-shrink 
  • flex-basis
  • flex
  • align-self

order

排序, 定义成员的排列顺序,数值越小,成员越靠前排列。

默认值为0,可以是负值 。

flex-grow

扩大,定义项目的放大比例。

默认为0,即如果有剩余空间也不放大。

在不为0时,设置了该属性的成员在主轴方向上将会扩大指定倍数。

flex-shrink

缩小,定义成员的缩小比例。

默认为1,即如果空间不足,该成员不缩小。

不可为负值,设置大于1的值为缩小的倍数。

flex-basis

定义了在分配多余空间之前,成员占据的主轴空间。

浏览器根据这个属性,己算主轴是否有空间。

默认值为auto,即成员的本来大小。

flex

简写flex-grow,flex-shrink,flex-basis属性。

默认值为 0 1 auto。

align-self

允许单个项目有与其他项目不一样的对齐方式,可以覆盖align-items属性。

默认值为auto,继承容器的对齐方式。

  1. stretch:默认值 如果项目未设置高度或设为auto,将沾满容器的高度
  2. flex-start:向交叉轴轴开始的位置对齐
  3. flex-end:向交叉轴结束的位置对齐
  4. center:交叉轴方向居中对齐
  5. baseline:项目的第一行文字的基线对齐

预告和回顾

对网页布局和制作感兴趣的朋友,可以看下面的CSS专栏,里面有很多讲解详尽的案例,当前为第九期:

专栏 | CSS入门icon-default.png?t=O83Ahttp://t.csdnimg.cn/4bvCJ当然,也欢迎对全栈项目感兴趣的朋友查看我的其他专栏。

后话

在全栈领域,博主也只不过是一个普通的萌新而已。本系列的博客主要是记录一下自己学习的一些经历,然后把自己领悟到的一些东西总结一下,分享给大家。

文章全篇的操作过程都是笔者亲自操作完成的,一些定义性的文字加入了笔者自己的很多理解在里面,所以仅供参考。如果有说的不对的地方,还请谅解。

==期待与你在下一期博客中再次相遇==

——浓度骤降的【H2O2】

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构 ——— 单链表oj题:环形链表

目录 题目要求 手搓简易环状单链表 代码实现 问题1:slow 指针和 fast 指针一定会相遇吗 问题2:slow 每次走一步,fast 每次走 n 步是否还能判断链表带环?(n > 2) 题目要求 有一个单链表的头节点 …

【翻译】在 Python 应用程序中使用Qt Designer的UI文件

原文地址:Using a Designer UI File in Your Qt for Python Application 直接上图,上代码 将UI文件转为Python To demonstrate, we use the Qt Widgets animation easing example. 为了演示,我们使用 Qt Widgets 动画简化示例。 这个应用程…

快递查询软件:实现单号识别与批量物流查询的高效工具

随着网络购物的普及,快递物流行业迎来了前所未有的发展机遇,同时也面临着巨大的挑战。跟踪物流信息成为一个难题,因此,快递查询软件的核心功能之一便是单号识别。传统的快递单号输入方式繁琐且易出错在此背景下,快递查…

游戏盒子推广全攻略:从用户洞察到策略实施

在移动互联网时代,游戏盒子的推广已经成为众多游戏代理商和开发者的重要课题。面对激烈的市场竞争,如何高效吸引并留住玩家,成为游戏盒子推广的关键。本文将结合Xinstall这一专业App推广工具,探讨游戏盒子推广的有效策略。 一、市…

详细分析Java8中的StringJoiner | 对比StringBuilder(附Demo)

目录 前言1. 差异对比2. 基本知识3. 源码分析4. Demo 前言 对于Java的基本知识推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)【Java项目】实战CRUD的功能整理(持续更新) 1. 差异对比 展…

多种方式确定Linux是CentOS还是Ubuntu

目录 前言正文 前言 对应的基本知识比较少,以下只是记录总结 由于目前使用的是centos,后续找到linux会对应补充 正文 要确定Linux系统是CentOS还是Ubuntu,可以通过以下几种方式进行分析 一、查看发行版信息文件: CentOS&…

UE5运行时动态加载场景角色动画任意搭配-角色及动画(一)

通过《MMD模型及动作一键完美导入UE5》系列文章,我们可以把外部场景、角色、动画资产导入UE5,接下来我们将实现运行时动态加载这些资产,并任意组合搭配。 1、骨骼动画复用 1、大部分模型骨骼是不通用的,比如这些裙子也是有骨骼的,属于模型特有的,但是对于动画来说,很多…

【实时计算 Flink】SQL作业大状态导致反压的调优原理与方法

状态管理不仅影响应用的性能,还关系到系统的稳定性和资源的有效利用。如果状态管理不当,可能会导致性能下降、资源耗尽,甚至系统崩溃。本文为您介绍SQL作业大状态导致反压的调优原理与方法。 运行原理:状态算子的产生 作为一种特…

面试题:Redis(二)

1. 面试题 2. MoreKey案列 事故案例 2.1 生成上如何限制key*/flushdb/flushall等危险命令的使用? 通过redis.conf配置文件中在SECURITY选项中禁用这些命令 2.2 不用key*避免卡顿那用什么? 用scan命令,类似mysql中的limit命令 语法&…

数学建模算法与应用 第2章 整数规划及其求解方法

目录 2.1 概述 2.2 0-1整数规划模型 2.3 分枝定界法(Branch and Bound) 2.4 蒙特卡洛法(随机取样法) Matlab代码示例:蒙特卡洛法求解简单整数规划 2.5 整数规划的计算机求解工具 习题 2 总结 整数规划是线性规…

Window11 安装Java21教程

随着Java版本的迭代,最新的长期支持版本已经更新到Java21了,虽然笔者许多代码还是当年用Java8写的,但抱残守缺从来不适合IT人员,该来的我们始终要欣然面对。 其实随着各项技术的发展,Java许多组件现在其实都不需要或者…

Authentication Lab | Client Side Auth

关注这个靶场的其它相关笔记:Authentication Lab —— 靶场笔记合集-CSDN博客 0x01:Client Side Auth 前情提要 有些时候,开发人员会将身份验证的逻辑写于前端,这样写是十分不安全的,因为前端的代码几乎全部都是可见的…

借助微软 Teams 中的 Tableau,加速数据驱动型决策与协作流程

Tableau 应用已正式上线 Teams 商店!如此,企业就能以一种更可靠和安全的方式在 Teams 中共享数据见解。 让团队能快速协作做出数据驱动型决策不再是可选项,而是业务成功的必备条件。 在几个月前的TC24 大会上,Tableau 再次表明了…

关于Amazon Linux 2023的版本及包管理器

在亚马逊上创建EC2实例时,会看到有一个Amazon Linux镜像。 那这个镜像与其他Linux有什么关系和区别呢? 网站是介绍:Amazon Linux 2023 是基于 Linux 的现代化通用操作系统,提供 5 年的长期支持。它针对 AWS 进行了优化&#xff0…

Stable Diffusion最新版nowebui的api使用详解

最近在使用stable diffusion最新版的Stable Diffusion WebUI Forge进行api调用,下面来一步一步的进行展开吧!!! 1、下载lllyasviel/stable-diffusion-webui-forge GitHub - lllyasviel/stable-diffusion-webui-forgeContribute to lllyasviel/stable-diffusion-webui-for…

gaussdb hccdp认证思考题01 GaussDB数据库介绍

01_GaussDB数据库介绍 1. (判断题)gsql是一款运行在Windows操作系统上的图形界面SQL客户端工具,用于连接GaussDB集群中的数据库以及管理数据库对象。 --错。

120页满分PPT | 企业级业务架构和IT架构规划方案

方案内容综述 方案涵盖了从战略分析到具体实施路径的内容。提出了IT架构规划的工作思路,包括项目启动、部门访谈、资料收集、内部数据库搜索与先进实践研究等步骤,旨在通过这些步骤完成现状及差距分析,并基于此设计未来的应用架构、数据架构…

应用UX体验标准

1、应用导航 标准编号 2.1.1.1 系统返回 标准描述 所有界面都可以执行系统返回操作。 除一级界面外,所有全屏界面均需要提供返回/关闭/取消按钮。(全屏沉浸式场景除外) 测试方法 使用侧边返回手势,验证当前应用界面是否可以执行系统返回操作。检查…

ML 系列:机器学习和深度学习的深层次总结(14) — 逻辑回归(第 3 部分 — 实施)

目录 一、说明 二、数据集说明 三、探索性数据分析 3.1. 查找 null 值 3.2. 数据预处理 3.3. 独特价值 3.4. 两种类型(恶性、良性)之间的数据传播 3.5. 特征选择和降维 3.5.1.特征选择 3.5.2 降维 (PCA) 3.6. 选择数据的两个重要特…

【测试】——Loadrunner 介绍与使用

📖 前言:LoadRunner是一款开源桌面应用软件,可用来模拟用户负载完成性能测试工作,LoadRunner的功能在版本不断升级的过程中已经十分强大,现在很多互联网公司都在使用LoadRunner来完成产品或者Loadrunner是业界公认的权…