【HTML】弹性盒子 (display: flex) 布局

news2024/11/30 10:34:02

Flex弹性布局

  • 容器属性
      • flex-direction(主轴的方向)
      • flex-wrap(主轴的项目换行)
      • justify-content(项目在主轴上的对齐方式)
      • align-items(项目在交叉轴上的对齐方式)
      • align-content(项目在交叉轴上的多轴线对齐方式)
  • 项目属性
      • order(排列顺序)
      • flex-grow(放大比例)
      • flex-shrink(缩小比例)
      • flex-basis(项目占据的主轴空间)
      • align-self(自己单个项目的交叉轴对齐方式)

弹性布局(Flex布局)是一种现代的CSS布局方式,通过使用display: flex属性来创建一个弹性容器,并在其中使用灵活的盒子模型来进行元素的排列和定位

.box{
  dispaly: flex; /*任何一个容器都可以指定为Flex布局*/
}
.box{
  display: inline-flex; /*行内元素也可以使用flex布局*/
}
.box{
  display: -webkit-flex; /* Safari */ /*Webkit内核的浏览器,需要加上-webkit前缀*/
  display: flex;
}

在这里插入图片描述

容器属性

flex-direction(主轴的方向)

.box{
	flex-direction: row;
}

row:横向(默认,主轴为水平方向,起点在左端)
row-reverse:横向反向(主轴为水平方向,起点在右端)
column:纵向(主轴为垂直方向,起点在上沿)
column-reverse:纵向反向(主轴为垂直方向,起点在下沿)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

flex-wrap(主轴的项目换行)

.box{
	flex-wrap: wrap;
}

nowrap:不换行(默认,压缩宽度)
wrap:换行
wrap-reverse:换行反序

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

justify-content(项目在主轴上的对齐方式)

.box{
	justify-content: space-between;
}

flex-start:默认靠(主轴的)开始对齐,
flex-end:靠(主轴的)结束对齐
center:(主轴)居中对齐
space-between:两端分散对齐(靠着容器内壁,剩余空间平分)
space-around:分散对齐(不靠容器内壁,剩余空间在每个项目两侧平均分配)
space-evenly:平均对齐(不靠容器内壁,剩余空间平分)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

align-items(项目在交叉轴上的对齐方式)

/*交叉轴(与主轴垂直的轴,针对的是每个item,当每个item高度不一致时才可看出效果) */
.box{
	align-items: stretch;
}

flex-start:交叉轴的开始对齐(默认)
flex-end:交叉轴的结束对齐
center:交叉轴的居中对齐
baseline:项目的第一行文字的基线对齐
stretch:拉伸(默认,如果项目未设置高度或设为auto,它将自动拉伸占满。为了拉伸效果只为父元素设置高度)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

align-content(项目在交叉轴上的多轴线对齐方式)

/*交叉轴(针对容器list的内容整体,多根轴线(多行或多列)的对齐方式,如果项目只有一根轴线,该属性不起作用)*/
.box{
	align-content: center;
}

flex-start:交叉轴的开始对齐
flex-end:交叉轴的结束对齐
center:交叉轴的居中对齐
space-between:与交叉轴两端对齐,轴线之间的间隔平均分布
space-around:每根轴线两侧的间隔都相等
stretch:轴线占满整个交叉轴(默认值)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

项目属性

order(排列顺序)

.item {
  order: 1; 
}
/*order默认值是0,值越小排序越靠前*/

在这里插入图片描述

flex-grow(放大比例)

.item{
	flex-grow: 1; 
}
/*
对容器中没有占满的剩余空间进行分配
默认0(原大小);1(剩余的空间分为一份),设置该属性的item放大占据这一整份
也可以每个item均分、不均分(如果其它item也写了该属性那么它也要分一份或多份来占)
*/

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

flex-shrink(缩小比例)

.item{
	flex-shrink: 3;
}
 /*
 当容器主轴 "空间不足" 且 "禁止换行" 时, flex-shrink才有意义
 0(当前item不进行缩放,保持原有尺寸);1(默认,同其它一样缩放);n(需要计算);负值对该属性无效
 */

在这里插入图片描述

如何计算 ?

总权重TW = item1 * item1的shrink系数 + item2 * item2的shrink系数 + itemn * itemn的shrink系数

需要收缩的总宽度 = item1的宽度 + item2的宽度 + itemn的宽度 - box的宽度

此itemn收缩的宽度 = itemn的宽度 * itemn的shrink系数 / 总权重TW * 需要收缩的总宽度

最后itemn渲染的宽度 = itemn的宽度 - 此itemn收缩的宽度

(图中:box总宽度为600px,每个item的宽度为150px;从左往右的第1个item、第4个item分别设置flex-shrink: 6和flex-shrink: 3)

总权重TW = 150 * 6 + 150 * 1 + 150 * 1 + 150 * 3 + 150 * 1 = 1800

需要收缩的总宽度 = 750 - 600 = 150 px

此itemn收缩的宽度 = 150 * 6 / 1800 * 150 = 75
此itemn收缩的宽度 = 150 * 3 / 1800 * 150 = 37.5

最后渲染的宽度(第1个item) = 150 - 75 = 75px
最后渲染的宽度(第4个item) = 150 - 37.5 = 112.5px

在这里插入图片描述

flex-basis(项目占据的主轴空间)

.item{
	flex-basis:40%;  /*设置项目占据的主轴空间*/
}
/*
属性定义了在分配多余空间之前,项目占据的主轴空间(main size)
浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小
当设置了flex-basis的值并且flex-shrink: 0; width的设置就不起作用了
它可以设为跟width或height属性一样的值(比如350px),则项目将占据固定空间
*/

align-self(自己单个项目的交叉轴对齐方式)

.item{
	align-self: center;  /*只管自己单个项目的对齐方式(交叉轴)*/
}

auto:继承align-items属性值
flex-start:与交叉轴的开始对齐
flex-end:与交叉轴的结束对齐
center:与交叉轴的居中对齐
baseline:与交叉轴基线对齐(行内轴与侧轴为同一条,则该值与flex-start等效。其它情况下,该值将参与基线对齐)
stretch:在交叉轴方向上的拉伸
/*
属性允许单个项目有与其它项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素
的align-items属性,如果没有父元素,则等同于stretch。除了auto,其它都与align-items属性完全一致
*/

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

开学季必备神器!南卡Pro5骨传导耳机,运动学习两不误!

随着科技的不断进步,耳机已经从单纯的听觉工具,演变成了我们日常生活中不可或缺的伴侣。特别是在充满活力的开学季,一款好的耳机不仅能提升学习效率,还能在运动时提供额外的动力。而骨传导技术的出现,更是为耳机领域带…

Flutter入门——从简单的计数器demo入手

Flutter入门——从简单的计数器demo入手 前言 flutter是现如今很热门的跨平台开发框架,只需要一套代码就能在六个平台上运行,现在在移动端的应用比较成熟,本片文章会是Flutter的简单入门,从一个简单的demo入手分析 笔者是Android…

OpenCvSharp.Internal.NativeMethods“的类型初始值设定项引发异常

错误截图: WPF项目 A界面按钮方法调用成员实例B里面这个初始化Mat对象方法 后台ViewModel代码类似: AViewModel{ B b; public void BtnClick(){ b.test(); } } 报错: 看一眼根据经验确认是DLL的问题,于是乎把nuget包配置和…

毛中特25版肖1000题选择题知识点(乱序)

马原:马原25版肖1000题选择题知识点(乱序)-CSDN博客 毛泽东明确提出的,是把马克思列宁主义基本原理同中国具体实际进行“第二次结合,找出在中国怎样建设社会主义的道路”的任务,不是“第二个结合”(马克思…

USB3.2 摘录(五)

系列文章目录 USB3.2 摘录(一) USB3.2 摘录(二) USB3.2 摘录(三) USB3.2 摘录(四) USB3.2 摘录(五) 文章目录 系列文章目录8 协议层(Protocol Lay…

爽了!免费的SSL,还能自动续期,支持CDN/OSS!

作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获!😄 大家好,我是技术UP主小傅哥。 从今年开始,越来越多的云服务厂商开始限制了 ssl 1年期的申请&#xff0c…

Linux驱动学习之点灯(四,linux2.6)

上篇最后的第二种点灯方法年代比较久远,register_chrdev()这个函数一下申请了255个设备号,不建议使用 如下图 下图的函数在linux2.6里是上图函数的升级版,不过他是静态分配,后续还得添加到cdev里 从上图函…

计算机的演进之路:历史与组成结构全解析

一、计算机发展历史 (一)早期计算工具 在计算机诞生之前,人类为了进行计算发明了许多工具。例如,中国古代的算筹和算盘,它们在一定程度上满足了人们进行简单数学运算的需求。而在西方,古希腊的安提凯希拉…

收银系统源码-千呼新零售2.0【线下收银】

千呼新零售2.0系统由零售行业连锁店一体化收银系统和多商户入驻平台商城两个板块组成,打造门店平台的本地生活即时零售模式。 其中连锁店收银系统包括线下收银私域商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体,线上线下数据全部打通。…

相机模型与成像过程:深入解析相机内参、外参及标定方法

相机模型与成像过程:深入解析相机内参、外参及标定方法 引言 相机作为图像采集的重要设备,在图像处理、计算机视觉及机器视觉等领域扮演着核心角色。了解相机的成像原理、模型参数及标定方法,对于提升图像质量和后续处理效果至关重要。本文…

嵌入式学习Day36---Linux软件编程---网络编程

目录 一、TCP并发模型 1.1.阻塞IO 1.2.非阻塞IO 1.步骤 2.函数接口 3.实例 1.3.异步IO 1.步骤 2.函数接口 3.实例 1.4.多路复用IO 1.select 函数接口: 实例 2.poll 3.epoll 二、总结 一、TCP并发模型 1.1.阻塞IO CPU占用率低,等待资源时将任务挂…

初识指针5の学习笔记

目录 1>>前言 2>>qsort函数的实现 2.1>>什么时qsort函数? 2.2>>qsort函数的格式是什么? 2.3>>qsort函数的解析 2.4>>qsort函数的实现! 3>>结语 1>>前言 今天我会继续分享一些我做的笔…

大模型基础学习知识,看这一篇就够了

​ 学习路线:感性认识现象->理解本质和原理->将所学知识用于解释新现象并指导实践。 ​ LLM训练模型的的三个阶段: 1、Pre-train 2、Supervised Fine-Tuning:Instruction Fine-tuning 3、RLHF - > RLAIF:增强式学习…

Internet Download Manager(下载工具)中文授权版

IDM是一款windows平台下的下载工具。 软件截图: 使用说明: 解压后,双击start_IDM.bat来运行软件 下载地址: IDM-v6.42.20-Repack 解压密码:helloh 下载时可能会有广告,忽略,等下载结束即可…

IM 旗舰版、IM 尊享版计费说明(海外 - 北美数据中心)

本文档详细描述了适用于使用海外北美数据中心 App 的 IM 旗舰版、IM 尊享版计费套餐及相应增值服务项目的计费细则。 本文档中采用人民币定价,价格仅适用于以人民币结算的服务订单。如果您使用非人民币结算,请咨询相关商务人员。 The English version o…

React 使用ref属性调用子组件方法(也可以适用于父子传参)

注意:①需使用hooks函数组件 ②使用了antDesign组件库(可不用) 如何使用 父组件代码 import React, { useState, useRef, useEffect } from react; import { Button } from antd; import Child from ./components/child;export defau…

华为面试题就这?24岁的我直接拿下28K的offer...

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 先说一下我的情况,某普通本科计算机,之前在深圳那边做了大约半年多少儿编程老师,之后内部平调回长沙这边,回来之后发…

LLaVA 简介:一种多模式 AI 模型

LLaVA 是一个端到端训练的大型多模态模型,旨在根据视觉输入(图像)和文本指令理解和生成内容。它结合了视觉编码器和语言模型的功能来处理和响应多模态输入。 图 1:LLaVA 工作原理的示例。 LLaVA 的输入和输出:连接视觉…

大型语言模型(LLM)历史简介

在 DALL-E 2 中生成的图像。 介绍 当我们谈论大型语言模型 (LLM) 时,我们实际上指的是一种能够以类似人类的方式进行交流的高级软件。这些模型具有理解复杂上下文并生成连贯且具有人情味的内容的惊人能力。 如果您曾经与 AI 聊天机器人或虚拟助手聊天&#xff0c…

搜维尔科技:【研究】Haption Virtuose外科手术触觉视觉学习系统的开发和评估

Haption面临挑战 除此之外,外科医生有时会对骨组织进行非常复杂的手术,其中一个例子是人工耳蜗的手术植入。重要的是要避免神经或血管等危险结构受伤,并尽可能轻柔地进行手术。在外科医生能够安全、无差错地进行此类手术之前,需要…