弹性盒子布局(Flexbox)详细介绍

CSS3 的弹性盒子布局(Flexbox)是一个强大的布局模型,旨在帮助开发者更容易地创建复杂的布局。Flexbox 提供了一种有效的方法来排列、对齐和分配空间,即使在不同的屏幕尺寸和设备下。以下是对 Flexbox 的详细介绍,以及所有相关的样式示例。

目录

基本概念

创建弹性容器

主要属性

1. 弹性容器的属性

2. 弹性项目的属性

示例代码

关键点总结


基本概念

  1. 弹性容器(Flex Container):通过将 display 属性设置为 flex 或 inline-flex 创建的元素,成为弹性容器。这个容器的直接子元素称为弹性项目(Flex Items)。

  2. 弹性项目(Flex Item):弹性容器里的直接子元素。它们会以弹性的方式排列、对齐和调整大小。

创建弹性容器

要创建弹性布局,首先需要将一个元素设为弹性容器:

.container {display: flex; /* 创建弹性容器 */
}

主要属性

1. 弹性容器的属性
  • flex-direction:定义主轴方向,影响弹性项目的排列方式。

    • row(默认):项目从左到右排列。
    • row-reverse:项目从右到左排列。
    • column:项目从上到下排列。
    • column-reverse:项目从下到上排列。
    .container {flex-direction: row; /* 或 column, row-reverse, column-reverse */
    }
    
  • flex-wrap:控制弹性项目是否换行行。可能的值:

    • nowrap(默认):所有项目都在一行。
    • wrap:必要时项目换行。
    • wrap-reverse:项目从下向上换行。
    .container {flex-wrap: wrap; /* 或 nowrap, wrap-reverse */
    }
    
  • flex-flow:是 flex-direction 和 flex-wrap 的简写。

    .container {flex-flow: row wrap; /* 设置方向和换行 */
    }
    
  • justify-content:沿主轴对齐项目。可能的值:

    • flex-start(默认):项目从左侧开始对齐。
    • flex-end:项目从右侧对齐。
    • center:项目居中对齐。
    • space-between:项目之间的空间相等,首尾项目贴边。
    • space-around:项目之间的空间相等,但首尾项目留有一半的空间。
    .container {justify-content: space-between; /* 或 flex-start, flex-end, center, space-around */
    }
    
  • align-items:沿交叉轴对齐项目。可能的值:

    • stretch(默认):项目拉伸以填满容器。
    • flex-start:项目顶部对齐。
    • flex-end:项目底部对齐。
    • center:项目居中对齐。
    • baseline:项目基线对齐。
    .container {align-items: center; /* 或 flex-start, flex-end, baseline */
    }
    
  • align-content:当有多行时,定义行之间的空间。与 align-items 类似,但适用于多行。

    .container {align-content: space-between; /* 或 flex-start, flex-end, center, space-around */
    }
    
2. 弹性项目的属性
  • flex-grow:定义项目的放大比例,默认值为 0。

    .item {flex-grow: 1; /* 项目会占据剩余空间 */
    }
    
  • flex-shrink:定义项目的缩小比例,默认值为 1。

    .item {flex-shrink: 1; /* 项目可以收缩 */
    }
    
  • flex-basis:定义项目在分配空间前占据的主轴空间,可以设为固定值或 auto

    .item {flex-basis: 100px; /* 项目基础宽度 */
    }
    
  • flex:是 flex-growflex-shrink 和 flex-basis 的简写,可以方便地统一设置。

    .item {flex: 1; /* 等同于 flex: 1 1 0%; */
    }
    
  • align-self:允许单个弹性项目的对齐方式覆盖align-items属性。

    .item {align-self: flex-end; /* 覆盖行的对齐行为 */
    }
    

示例代码

以下是一个完整的 Flexbox 布局示例,演示如何使用 Flexbox 进行布局:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><style>body {font-family: Arial, sans-serif;background-color: #f4f4f4;margin: 0;padding: 20px;}.container {display: flex;flex-direction: row;        /* 主轴方向为水平 */flex-wrap: wrap;           /* 允许换行 */justify-content: space-around; /* 项目间隔相等 */align-items: center;       /* 交叉轴居中 */height: 300px;             /* 容器高度 */background-color: #eaeaea;}.item {flex: 1 1 150px;           /* 主轴扩展,基础宽度 150px,允许缩小 */margin: 10px;              /* 项目间距 */padding: 20px;             /* 项目内边距 */background-color: #007bff;color: white;text-align: center;border-radius: 5px;        /* 圆角 */}</style><title>Flexbox 示例</title>
</head>
<body><h2>弹性盒子布局示例</h2><div class="container"><div class="item">项目 1</div><div class="item">项目 2</div><div class="item">项目 3</div><div class="item">项目 4</div><div class="item">项目 5</div></div>
</body>
</html>

关键点总结

  • Flexbox 提供了一种更加灵活和强大的布局方式,尤其适合建立复杂的响应式布局。
  • 通过设置弹性容器和弹性项目的属性,可以轻松调整项目的对齐、分布和尺寸。
  • 使用弹性布局可以减少使用浮动、绝对定位的需要,从而使结构更清晰、维护更容易。

Flexbox 是现代前端开发中的一种重要布局方案,熟练掌握它可以在创建用户友好的界面和提高网页的可用性方面发挥重要作用。

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

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

相关文章

CLion配置QT开发环境

一、将qmake工程转为cmake工程&#xff08;方法一&#xff1a;用工具转换并做适当修改&#xff09; 1、工具链接&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1grW2QY3sW8X2JaHWM_ePPw 提取码&#xff1a;7at4 工具源码:https://github.com/milahu/qmake2cmake 2、执行…

《AI 使生活更美好》

《AI 使生活更美好》 当我们步入科技腾飞的时代&#xff0c;人工智能&#xff08;AI&#xff09;如同一颗璀璨的新星&#xff0c;照亮了我们生活的每一个角落。它以惊人的速度改变着我们的世界&#xff0c;从医疗到教育&#xff0c;从交通到娱乐&#xff0c;AI 正以前所未有的力…

项目模块十七:HttpServer模块

一、项目模块设计思路 目的&#xff1a;实现HTTP服务器搭建 思想&#xff1a;设计请求路由表&#xff0c;记录请求方法与对应业务的处理函数映射关系。用户实现请求方法和处理函数添加到路由表&#xff0c;服务器只接受请求并调用用户的处理函数即可。 处理流程&#xff1a; …

ODOO学习笔记(1):ODOO的SWOT分析和技术优势是什么?

ODOO是一款开源的企业管理软件套件&#xff0c;广泛应用于企业管理中。它由比利时的Odoo S.A.公司开发&#xff0c;最初名为OpenERP&#xff0c;现在已经成为全球流行的ERP解决方案之一。ODOO集成了ERP、CRM、电子商务和CMS等多种功能模块&#xff0c;适用于各种规模的企业应用…

出海攻略,如何一键保存Facebook视频素材

提词宝&#xff1a;快速保存Facebook视频教程 目标人群与痛点 目标人群&#xff1a;经常在Facebook上浏览视频但不知道如何保存的用户&#xff0c;包括学生、内容创作者、营销从业者&#xff0c;以及需要保存重要视频素材的人。 痛点与场景&#xff1a; 看到喜欢的视频&…

【Playwright + Python】系列(十)利用 Playwright 完美处理 Dialogs 对话框

哈喽&#xff0c;大家好&#xff0c;我是六哥&#xff01;今天我来给大家分享一下如何使用playwight处理Dialogs对话框&#xff0c;面向对象为功能测试及零基础小白&#xff0c;这里我尽量用大白话的方式举例讲解&#xff0c;力求所有人都能看懂&#xff0c;建议大家先收藏&…

LLM - 使用 LLaMA-Factory 微调大模型 Qwen2-VL SFT(LoRA) 图像数据集 教程 (2)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/143725947 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 LLaMA-…

自动驾驶3D目标检测综述(一)

文章地址&#xff1a;[2206.09474] 3D Object Detection for Autonomous Driving: A Comprehensive Survey (arxiv.org) 这篇综述简单易懂&#xff0c;非常合适对自动驾驶和3D目标检测感兴趣的小白阅读&#xff0c;对相关算法进行初步理解。 目录 一、摘要 &#xff08;一&a…

回归分析学习

学习视频链接&#xff1a; 【回归分析,一套搞定】&#xff01;全网最通俗易懂的回归分析教程&#xff0c;我终于学明白了&#xff01;_哔哩哔哩_bilibili 相关分析&#xff1a;2个或两个以上的变量之间的相关程度及大小的统计方法&#xff1b; 回归分析&#xff1a;存在相关关…

LabVIEW 实现 find_nearest_neighbors 功能(二维平面上的最近邻查找)

1. 背景介绍 在数据分析和图像处理领域&#xff0c;经常需要查找给定点的最近邻居点。在LabVIEW中&#xff0c;计算二维平面上多个点之间的欧氏距离&#xff0c;并返回距离最近的几个点是一种常见操作。find_nearest_neighbors 函数用于实现这个功能。 2. 欧氏距离计算 在二维…

后端:Aop 面向切面编程

文章目录 1. Aop 初步学习面向切面编程&#xff0c;EnableAspectJAutoProxy2. AOP的核心概念3. 前置通知&#xff08;Before&#xff09;4. 后置通知&#xff08;After&#xff09;5. 返回通知&#xff08;AfterReturning&#xff09;6. 异常通知&#xff08;AfterThrowing&…

无插件H5播放器EasyPlayer.js网页web无插件播放器vue和react详细介绍

EasyPlayer.js H5播放器&#xff0c;是一款能够同时支持HTTP、HTTP-FLV、HLS&#xff08;m3u8&#xff09;、WS、WEBRTC、FMP4视频直播与视频点播等多种协议&#xff0c;支持H.264、H.265、AAC、G711A、Mp3等多种音视频编码格式&#xff0c;支持MSE、WASM、WebCodec等多种解码方…

管家婆财贸ERP BB045.销售批量收款

最低适用版本: 财贸系列 22.8 插件简要功能说明: 销售类单据支持批量收款,简化收款做单流程更多细节描述见下方详细文档插件操作视频: 进销存类定制插件--销售批量收款 插件详细功能文档: 1. 应用中心增加菜单【销售批量收款】 a. 参考23.0应用中心-移动管理-物联宝-【…

基于MATLAB+opencv人脸疲劳检测

我们可以通过多种方式从现实世界中获取数字图像&#xff0c;比如&#xff1a;数码相机、扫描仪、计算机扫描和磁共振成像等等。在这些情况中&#xff0c;虽然我们肉眼看到的是图像&#xff0c;但是当需要将图像在数字设备中变换传输时&#xff0c;图像的每个像素则对应一个数值…

Prompt 工程

Prompt 工程 1. Prompt 工程简介 “预训练-提示预测”范式是近年来自然语言处理&#xff08;NLP&#xff09;领域的一个重要趋势&#xff0c;它与传统的“预训练-微调-预测”范式相比&#xff0c;提供了一种更为灵活和高效的模型应用方式。 Prompt工程是指在预训练的大型语言…

【Python TensorFlow】进阶指南(续篇一)

在前两篇文章中&#xff0c;我们介绍了TensorFlow的基础知识及其在实际应用中的初步使用&#xff0c;并探讨了更高级的功能和技术细节。本篇将继续深入探讨TensorFlow的高级应用&#xff0c;包括但不限于模型压缩、模型融合、迁移学习、强化学习等领域&#xff0c;帮助读者进一…

yolov7论文翻译

YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors 论文&#xff1a;https://arxiv.org/abs/2207.02696 代码&#xff1a;https://github.com/WongKinYiu/yolov7 摘要 YOLOv7 在速度和准确性方面均超越了所有已知的目标检测器&a…

Java基于SpringBoot+Vue的宠物共享平台的设计与实现(附源码,文档)

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

对称加密与非对称加密:密码学的基石及 RSA 算法详解

对称加密与非对称加密&#xff1a;密码学的基石及 RSA 算法详解 在当今数字化的时代&#xff0c;信息安全至关重要。对称加密和非对称加密作为密码学中的两种基本加密技术&#xff0c;为我们的数据安全提供了强大的保障。本文将深入探讨对称加密和非对称加密的特点、应用场景&…