前端样式 Flex布局(Flexible Box Layout)用法详解

        Flex布局(Flexible Box Layout)是一种用于在容器内分配和对齐子元素的高效方式。通过Flex布局,可以轻松实现各种复杂的布局结构,同时保持良好的响应性和可维护性。本文将详细介绍Flex布局的用法,包括容器属性和子元素属性,并通过实例展示其应用。
        1. 容器属性
        容器是指包含子元素的父元素,通过设置容器的Flex布局属性,可以控制子元素的排列方式和对齐方式。容器属性包括以下六个:
(1)display
display属性用于定义容器为Flex布局,取值为flex或inline-flex。其中,flex表示容器为块级元素,inline-flex表示容器为行内元素。
.container {
  display: flex; /* 或者 inline-flex */
}
(2)flex-direction
flex-direction属性用于设置主轴的方向,即子元素的排列方向。可选值有row(默认值,水平方向,从左到右)、row-reverse(水平方向,从右到左)、column(垂直方向,从上到下)和column-reverse(垂直方向,从下到上)。
.container {
  flex-direction: row; /* 或者 row-reverse、column、column-reverse */
}
(3)flex-wrap
flex-wrap属性用于设置子元素是否换行。可选值有nowrap(默认值,不换行)、wrap(换行)和wrap-reverse(换行,但方向相反)。
.container {
  flex-wrap: nowrap; /* 或者 wrap、wrap-reverse */
}
(4)justify-content
justify-content属性用于设置子元素在主轴上的对齐方式。可选值有flex-start(默认值,起点对齐)、flex-end(终点对齐)、center(居中对齐)、space-between(两端对齐,子元素之间的间隔相等)和space-around(子元素之间的间隔相等,且与容器边缘的距离也相等)。
.container {
  justify-content: flex-start; /* 或者 flex-end、center、space-between、space-around */
}
(5)align-items
align-items属性用于设置子元素在交叉轴上的对齐方式。可选值有stretch(默认值,拉伸至与容器高度相同)、flex-start(起点对齐)、flex-end(终点对齐)、center(居中对齐)和baseline(基线对齐)。
.container {
  align-items: stretch; /* 或者 flex-start、flex-end、center、baseline */
}
(6)align-content
align-content属性用于设置多行子元素在交叉轴上的对齐方式。当子元素只有一行时,该属性无效。可选值有stretch(默认值,拉伸至与容器高度相同)、flex-start(起点对齐)、flex-end(终点对齐)、center(居中对齐)、space-between(两端对齐,行之间的间隔相等)和space-around(行之间的间隔相等,且与容器边缘的距离也相等)。
.container {
  align-content: stretch; /* 或者 flex-start、flex-end、center、space-between、space-around */
}
        2. 子元素属性
        子元素是指容器内的直接子元素,通过设置子元素的Flex布局属性,可以控制其在容器内的排列和对齐方式。子元素属性包括以下六个:
(1)order
order属性用于设置子元素的排列顺序。数值越小,排列越靠前。默认值为0。
.item {
  order: <integer>;
}
(2)flex-grow
flex-grow属性用于设置子元素的放大比例。默认值为0,即不放大。当容器有剩余空间时,子元素会按照flex-grow的值进行放大。
.item {
  flex-grow: <number>;
}
(3)flex-shrink
flex-shrink属性用于设置子元素的缩小比例。默认值为1,即等比例缩小。当容器空间不足时,子元素会按照flex-shrink的值进行缩小。
.item {
  flex-shrink: <number>;
}
(4)flex-basis
flex-basis属性用于设置子元素的初始大小。默认值为auto,即子元素的宽度或高度。当子元素的宽度和高度为auto时,flex-basis的值将作为子元素的宽度和高度。
.item {
  flex-basis: <length> | auto;
}
(5)flex
flex属性是flex-grow、flex-shrink和flex-basis的简写形式,用于设置子元素的放大、缩小和初始大小。默认值为0 1 auto。
.item {
  flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ];
}
(6)align-self
align-self属性用于设置单个子元素在交叉轴上的对齐方式。可选值有auto(默认值,继承父元素的align-items属性)、stretch(拉伸至与容器高度相同)、flex-start(起点对齐)、flex-end(终点对齐)、center(居中对齐)和baseline(基线对齐)。
.item {
  align-self: auto; /* 或者 stretch、flex-start、flex-end、center、baseline */
}
        3. 实例
        以下是一个简单的Flex布局实例,用于展示容器属性和子元素属性的应用。
HTML代码:
        
 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Flex布局实例</title><link rel="stylesheet" href="styles.css">
</head>
<body><div class="container"><div class="item item1">1</div><div class="item item2">2</div><div class="item item3">3</div></div>
</body>
</html>

CSS代码(styles.css):

.container {display: flex;flex-direction: row;flex-wrap: wrap;justify-content: space-between;align-items: center;align-content: center;width: 300px;height: 300px;border: 1px solid black;
}
.item {width: 100px;height: 100px;border: 1px solid red;text-align: center;line-height: 100px;
}
.item1 {order: 2;flex-grow: 1;flex-shrink: 2;flex-basis: auto;align-self: flex-start;
}
.item2 {order: 1;flex-grow: 2;flex-shrink: 1;flex-basis: 50px;align-self: flex-end;
}
.item3 {order: 3;flex-grow: 3;flex-shrink: 3;flex-basis: 100px;align-self: center;
}



        在这个实例中,我们创建了一个Flex容器(.container),其中包含三个子元素(.item1、.item2和.item3)。容器属性包括display: flex(设置为Flex布局)、flex-direction: row(子元素水平排列)、flex-wrap: wrap(子元素换行)、justify-content: space-between(子元素在主轴上两端对齐)、align-items: center(子元素在交叉轴上居中对齐)和align-content: center(多行子元素在交叉轴上居中对齐)。
        子元素属性包括order(设置子元素的排列顺序)、flex-grow(设置子元素的放大比例)、flex-shrink(设置子元素的缩小比例)、flex-basis(设置子元素的初始大小)和align-self(设置单个子元素在交叉轴上的对齐方式)。
        通过这个实例,我们可以看到Flex布局的强大之处,它可以轻松实现各种复杂的布局结构,同时保持良好的响应性和可维护性。掌握Flex布局对于前端开发者来说是非常重要的,它可以帮助我们更高效地完成各种布局任务。

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

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

相关文章

有事休假店铺无人看守怎么办?智能远程视频监控系统保卫店铺安全

在春节期间&#xff0c;很多自营店主也得到了久违的假期&#xff0c;虽然很多店主都是长期在店铺中看守&#xff0c;但遇到春节这样的日子&#xff0c;多数人还是选择回乡休假。面对店主休假或有事不能管理店铺时&#xff0c;传统的监控虽然可以做到单一的监控&#xff0c;却仍…

J-Flash J-Link解锁GD32单片机

目录 前言一、使用J-Flash工具解锁单片机1.打开J-Flash软件2.创建工程3.连接 J-Link4.解锁Flash 二、使用J-Link STM32 Unlock解锁GD321.打开J-Link STM32 Unlock工具2.命令行输入3.解锁成功4.验证 三、附录总结&#x1f600;*授人鱼,更要授人以渔&#xff0c;希望猿一的本篇博…

Jakarta Bean Validation

Validation 官网 https://beanvalidation.org/ 常见注解 Bean Validation中定义的注解&#xff1a; 注解详细信息Null被注释的元素必须为 nullNotNull被注释的元素必须不为 nullAssertTrue被注释的元素必须为 trueAssertFalse被注释的元素必须为 falseMin(value)被注释的元素…

不买服务器也可以将本地服务放到互联网(ngrok内网穿透)

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 不买服务器也可以将本地服务放到互联网 前言ngrok基础&#xff1a;穿越网络边界的魔法使用场景&#xff1a;突破网络限制的利器实战 前言 在网络的世界里&#xff0c;有时候你的服务像是困在一座数字…

IO进程线程作业day2

使用fread和fwrite完成两个图片文件的拷贝 #include <myhead.h> #define high 541 #define wide 541 int main(int argc, const char *argv[]) {//以只读的方式打开图片文件1.bmpFILE *fp NULL;if((fp fopen("./1.bmp", "r")) NULL){perror(&qu…

计算机荧幕之旅:编码光影里的科技探索与创新启示

对于计算机专业的学生与科技爱好者而言&#xff0c;影视作品不仅是休闲娱乐的渠道&#xff0c;更是启发思考、洞悉行业动态及人文哲理的独特载体。有不少与计算机紧密相关的电影&#xff0c;它们精彩纷呈&#xff0c;引领观众步入更为宽广的科技疆域&#xff0c;共同挖掘计算机…

【RPG Maker MV 仿新仙剑 战斗场景UI (二)】

RPG Maker MV 仿新仙剑 战斗场景UI 二 战斗指令菜单原仙剑战斗指令图RMMV战斗指令对应代码战斗指令菜单代码效果 战斗指令菜单 原仙剑战斗指令菜单是使用方向键控制&#xff0c;同时按照使用情况正好对应四个指令和四个方向&#xff0c;同时没有选中的菜单用黑色透明图片覆盖&…

左右联动布局效果

效果图&#xff1a; <template><el-dialog :modelValue"modelValue" :before-close"close" fullscreen :close-on-click-modal"false"><div class"farmer_detail"><div class"info_content"><di…

基于Springboot+Vue的超市管理系统源码

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着社会经济的发展和…

力扣OJ题——相交链表

题目&#xff1a;160. 相交链表 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 思路一&#xff08;暴力求解&#xff09;&#xff1a; A链表的每个节点依次跟B链表中节点进行…

stm32 DCMI的知识点

1.DCMI的简介 DCMI全称Digital camera interface&#xff08;数字摄像头接口&#xff09;&#xff0c;是一种可以采集摄像头数据的一种接口。此接口适用于黑白摄像头、X24 和 X5 摄像头&#xff0c;并可以假定所有预处理&#xff08;如调整大小&#xff09;都可以在该摄像头模…

【动态规划专栏】专题一:斐波那契数列模型--------1.第N个泰波那契数

本专栏内容为&#xff1a;算法学习专栏&#xff0c;分为优选算法专栏&#xff0c;贪心算法专栏&#xff0c;动态规划专栏以及递归&#xff0c;搜索与回溯算法专栏四部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握算法。 &#x1f493;博主csdn个人主页&#xff1a;小…

【Go语言】Go语言的数据类型

GO 语言的数据类型 Go 语言内置对以下这些基本数据类型的支持&#xff1a; 布尔类型&#xff1a;bool 整型&#xff1a;int8、byte、int16、int、uint、uintptr 等 浮点类型&#xff1a;float32、float64 复数类型&#xff1a;complex64、complex128 字符串&#xff1a;st…

层级关联,审批人功能

一个需求要求选择一级&#xff0c;下方展示一级的效果 后端给了审批人数据&#xff0c;但是数据需要单独处理 <template><div class"box"><el-form :model"ruleForm" :rules"rules" ref"ruleForm" label-width"…

MySQL多实例部署:从概念到实操的全面指南

目录 MySQL多实例管理 单实例 什么是多实例 多实例的好处 多实例的弊端 MySQL多实例用在哪些场景 资金紧张的公司 用户并发访问量不大的业务 大型网站也有用多实例 部署MySQL多实例 rpm和源码的优缺点 二进制方式安装mysql 准备二进制mysql运行所需的环境 准备多…

Android---Retrofit实现网络请求:Java 版

简介 在 Android 开发中&#xff0c;网络请求是一个极为关键的部分。Retrofit 作为一个强大的网络请求库&#xff0c;能够简化开发流程&#xff0c;提供高效的网络请求能力。 Retrofit 是一个建立在 OkHttp 基础之上的网络请求库&#xff0c;能够将我们定义的 Java 接口转化为…

IO线程进程

代码练习 使用fread和fwrite完成两个文件的拷贝 #include<myhead.h>int main(int argc, const char *argv[]) {FILE *fp NULL;//重新以只读的形式打开文件if((fp fopen("./OIP-C.bmp", "r")) NULL){perror("fopen error");return -1;…

SICTF round#3 web

1.100&#xff05;_upload url可以进行文件包含&#xff0c;但是flag被过滤 看一下源码 <?phpif(isset($_FILES[upfile])){$uploaddir uploads/;$uploadfile $uploaddir . basename($_FILES[upfile][name]);$ext pathinfo($_FILES[upfile][name],PATHINFO_EXTENSION);$t…

FL Studio21中文版本混音功能介绍

FL Studio 21的混音功能是其音乐制作能力中不可或缺的一部分&#xff0c;它为用户提供了强大的工具&#xff0c;以便他们可以对音轨进行细致的调整&#xff0c;确保音乐作品的最终呈现效果达到最佳。 FL Studio 21 Win-安装包下载如下: https://wm.makeding.com/iclk/?zonei…

基于Java的家政预约管理平台

功能介绍 平台采用B/S结构&#xff0c;后端采用主流的Springboot框架进行开发&#xff0c;前端采用主流的Vue.js进行开发。 整个平台包括前台和后台两个部分。 前台功能包括&#xff1a;首页、家政详情、家政入驻、用户中心模块。后台功能包括&#xff1a;家政管理、分类管理…