前端设计中的flex

news/2025/2/27 8:48:08/文章来源:https://www.cnblogs.com/Rong-/p/18740165

在 UI(用户界面)设计和前端开发领域,flex 通常指的是 Flexbox(弹性盒子布局模型),它是一种用于为盒状模型提供最大灵活性的布局模式。以下为你详细介绍:

基本概念

Flexbox 旨在提供一种更高效的方式来布局、对齐和分配容器内项目之间的空间,即使它们的大小是未知的或动态的。使用 Flexbox 布局的主要思想是让容器有能力改变其项目的宽度、高度和顺序,以最佳方式填充可用空间。

相关术语

  • Flex 容器(Flex Container):应用 display: flexdisplay: inline-flex 属性的父元素,它定义了一个 Flex 布局的上下文。
  • Flex 项目(Flex Item):Flex 容器的直接子元素,它们会根据 Flexbox 的规则进行布局。
  • 主轴(Main Axis):Flex 项目排列的主要方向,可以是水平(默认)或垂直。
  • 交叉轴(Cross Axis):与主轴垂直的轴。

关键属性

容器属性

  • display:定义一个元素为 Flex 容器。
.container {display: flex; /* 块级 Flex 容器 *//* 或者使用 display: inline-flex; 行内级 Flex 容器 */
}
  • flex-direction:指定主轴的方向,决定 Flex 项目的排列方向。
.container {flex-direction: row; /* 默认值,水平从左到右排列 *//* 还可以使用 row-reverse、column、column-reverse */
}
  • flex-wrap:控制 Flex 项目是否换行。
.container {flex-wrap: nowrap; /* 默认值,不换行 *//* 还可以使用 wrap、wrap-reverse */
}
  • justify-content:定义 Flex 项目在主轴上的对齐方式。
.container {justify-content: flex-start; /* 默认值,项目从主轴起点开始排列 *//* 还可以使用 flex-end、center、space-between、space-around、space-evenly */
}
  • align-items:定义 Flex 项目在交叉轴上的对齐方式。
.container {align-items: stretch; /* 默认值,项目拉伸以填充交叉轴 *//* 还可以使用 flex-start、flex-end、center、baseline */
}
  • align-content:定义多行 Flex 项目在交叉轴上的对齐方式,当 flex-wrapwrapwrap-reverse 时生效。
.container {align-content: stretch; /* 默认值,多行项目拉伸以填充交叉轴 *//* 还可以使用 flex-start、flex-end、center、space-between、space-around */
}

项目属性

  • flex-grow:定义项目的放大比例,默认为 0,表示不放大。
.item {flex-grow: 1; /* 项目将按比例放大以填充剩余空间 */
}
  • flex-shrink:定义项目的缩小比例,默认为 1,表示当空间不足时项目会缩小。
.item {flex-shrink: 0; /* 项目不会缩小 */
}
  • flex-basis:定义项目在分配多余空间之前的初始大小,默认为 auto
.item {flex-basis: 200px; /* 项目初始宽度为 200px */
}
  • flex:是 flex-growflex-shrinkflex-basis 的简写属性。
.item {flex: 1 1 auto; /* 等价于 flex-grow: 1; flex-shrink: 1; flex-basis: auto; */
}
  • align-self:允许单个项目覆盖 align-items 属性,定义该项目在交叉轴上的对齐方式。
.item {align-self: center; /* 该项目在交叉轴上居中对齐 */
}

应用场景

  • 导航栏布局:可以轻松实现导航项的水平或垂直排列,并且能够自适应不同屏幕尺寸。
  • 卡片布局:方便地控制卡片的排列和间距,使页面布局更加美观。
  • 表单布局:快速实现表单元素的对齐和分布。

案例

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"/><title>Title</title><style>.box {width:400px;height:400px;border:1px solid black;margin:auto;display:flex;/*flex-direction:row;flex-wrap:wrap-reverse;*/ /* nowrap,wrap, wrap-reverse */flex-flow: row wrap-reverse;justify-content:space-evenly;align-items:baseline;align-content:space-evenly;}.box>div{width:100px;height:100px;background:pink;border:1px solid red;}.box div:nth-child(1) {padding-top:10px;order:3;flex-grow:1;}.box div:nth-child(2) {padding-top:15px;order:5;flex-grow:2;}.box div:nth-child(3) {flex-shrink:0;}.box div:nth-child(4) {padding-top:20px;order:0;}.box div:nth-child(5) {flex-shrink:2;}</style></head><body><!--容器container:水平轴和垂直轴main axiis, cross axis起始位置:main start, cross start结束位置:main end, cross end默认按主轴排序main sizecross size可以设置主轴为上下flex-direction:决定主轴的方向row:水平方向,左端起点row-reverse:水平方向,右端起点column:垂直方向,由上到下column-reverse:垂直方向,由下到上flex-wrap:nowrapwrap: 换行,第一行在上方wrap-reverse: 换行,第一行在下方flex-flow;flix-direction属性和flex-wrap属性的简写justify-content:主轴上的对齐方式		flex-start:起点对齐flex-end:终点对齐center:居中space-between:两端对齐,间隔相等space-around:每个项目间隔相等,间隔比变宽那个距离大一倍space-evenly:项目与项目之间,项目与边框之间间隔相等align-items:交叉轴上对齐方式flex-start:起点对齐flex-end:终点对齐center: 居中baseline:项目的第一行文字的基线对齐strech(默认值):如果项目未设置高度或设置为auto,将占满整个容器的高度align-content:定义多跟轴线的对齐方式,如果只有一根轴线,该属性不起作用flex-start:flex-endspace-aroundspace-evenlyItem:order:项目的排列顺序,值越小,越靠前flex-grow: 项目的放大比例flex-shrink: 项目的缩小比例flex-basis:在分配多余空间之前,项目占据主轴空间flex: flex-grow flex-shrink flex-basis,后两个可选align-self: 单个项目与其他项目有不同的对齐方式,可覆盖align-items--><div class="box"><div>1</div><div>2</div><div>3</div><div>4</div><div>5</div><div>6</div></div></body>
</html>

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PageOffice与云文档的在线编辑和打印效果的对比

目前市面上有各种各样的云文档系统,比如腾讯文档、金山文档等,包括支持私有化部署的云文档系统,比如石墨文档、OnlyOffice等,但是这些云文档系统所实现的文档在线编辑功能都不是真正的在线编辑Office文件,云文档在线打开文件时,需要在云文档服务器把Office文件转换为Html…

IDEA 2021.1.3 过期问题解决

1、下载 IDEA(以本人安装2021.1.3 为例)【浏览器输入】: 官网下载历史版本地址URL https://www.jetbrains.com/idea/download/other.html 选择 2021.1.3 版本下载【下载完安装】安装路径为: D:\install\JetBrains\IntelliJ IDEA 2021.1.3正常情况下【安装完】出现 【Untrus…

深度解析分布式事务的七大核心方案

2PC 2PC,两阶段提交,将事务的提交过程分为资源准备和资源提交两个阶段,并且由事务协调者来协调所有事务参与者,如果准备阶段所有事务参与者都预留资源成功,则进行第二阶段的资源提交,否则事务协调者回滚资源。 第一阶段:准备阶段 由事务协调者询问通知各个事务参与者,是…

Academic Prompts

本文全部内容均为转载且已标注来源,侵权必删!Prompts所有prompts均可以点击代码块右上角copy快速复制。也可以可以Ctrl+F快速查找需要的prompt。英文润色 作用:ChatGPT可以成为sci论文的润色工具,从语法、用词、结构、语气等各方面进行修改[1]DeepSeek英文润色**Academic P…

《张》字的由来和汉字书法的演变

本文转载自知乎“张” 姓的由来和汉字书法演变「书品百家姓」 - 知乎 (zhihu.com),侵权必删!早上在路上无意间想到了这个问题:“张”字是怎么来的?我自己脑海里越想越觉得这个张像是一个张开的弓和箭的结合,如下图所示。后来我上网查了下到底是怎么来,虽然跟我想象的演变…

echarts-js-一款超级强大的js开源可视化图表库

Apache ECharts是一个基于 JavaScript 的开源可视化图表库,由百度贡献给Apache,功能非常强大。支持的图标类型多到爆表,这里我录了个GIF快速展示一下。还有众多的社区扩展,包括不同语言不同框架,具体见ecomfe/awesome-echarts: Awesome list of Apache ECharts (github.co…

[Qwerty Learner]为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件

推荐一款很有意思的打字软件,适合开发者和初学者使用学习~项目地址 GitHub - RealKai42/qwerty-learner: 为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workers 在线访问 Vercel: …

读DAMA数据管理知识体系指南06数据治理(下)

数据治理需规划,含复杂性协调,需定义流程、术语表,协调架构师,分配数据财务价值。实施包括发起标准、规程,制定术语表,协调团队,估值数据资产。需嵌入流程,利用工具方法,实施指南,注重组织文化和变革管理,灵活调整沟通策略。度量指标关注价值、有效性、可持续性。1.…

hexo-butterfly搭建个人博客

博客搭建有关文章: hexo-plugins介绍 hexo自动deploy到github hexo-butterfly优化 butterfly语法前言本站基于Hexo搭建,用的 🦋 hexo-theme-butterfly 主题 v4.5.1,请注意最新的🦋 hexo-theme-butterfly 版本已经更新到 v4.6.1 。 如果你是 v4.5.1 之外的版本,可能有些…

python-spider-demo-for-changguang-satellite-videos

代码见lizilong1993/python_spider: learn python spider (github.com) APIsparameters 意义 example 备注url 爬取的视频目录地址 http://www.jl1.cn/EWeb/product2.aspx?id=21&tid=30pageNumClass 底部总页数的标签名的Class list_right3avideoClass 每个视频详情页的a标…

WebSSH2:通过浏览器实现SSH登录Linux主机

如果你的电脑不允许安装远程工具,那么本篇文章非常适合你,我们使用浏览器去登录Linux主机。 下面我演示一下如何安装WebSSH2,并通过浏览器登录到Linux主机。 一、安装环境 操作系统:CentOS7.6; 关闭防火墙和 SELinux; 二、安装 NVM 安装过程很简单,下载脚本运行即可: c…

Nativefier:将网页变为桌面应用的便捷工具

我们每天都会使用大量的网页应用,例如 Gmail、Trello、Notion 或 Spotify。然而,频繁在浏览器中切换标签页可能降低工作效率,也容易让人分心。有没有一种方法能将常用的网页变成独立的桌面应用,提供更专注的体验?Nativefier 应运而生,它是一款开源命令行工具,能够快速将…