CSS-float浮动布局、float清除浮动与flex布局

ops/2024/9/24 14:21:49/

CSS布局

  • 清除浮动
    • 额外标签法
    • 单伪元素法
    • 双伪元素法
    • overfow法
  • Flex布局
    • Flex组成
    • 主轴对齐方式(水平方向对齐)
    • 侧轴对齐方式(单行垂直方向对齐)
    • 弹性盒子换行
    • 行内对齐方式(多行垂直方向对齐)
    • 弹性盒子伸缩比
    • 修改主轴方向(基本不需要改变方向)

清除浮动

场景:浮动元素会脱标,如果父级没有高度,子级无法撑开父级高度(可能导致页面布局错乱)
解决方法:清除浮动(清除浮动带来的影响)

额外标签法

css">    在父元素内容的最后添加一个块级元素,设置 CSS 属性 clear: both.father {margin: 10px auto;width: 1200px;/* height: 300px; */background-color: pink;}.left {float: left;width: 200px;height: 300px;background-color: skyblue;}.right {float: right;width: 950px;height: 300px;background-color: orange;}.bottom {height: 100px;background-color: brown;}.clearfix {clear: both;}
  <div class="father"><div class="left"></div><div class="right"></div><!--  在父元素内容的最后添加一个块级元素,设置 CSS 属性 clear: both --><div class="clearfix"></div></div><div class="bottom"></div>

单伪元素法

css">    用伪元素::after在父级最后添加块级元素.father {margin: 10px auto;width: 1200px;/* height: 300px; */background-color: pink;}.left {float: left;width: 200px;height: 300px;background-color: skyblue;}.right {float: right;width: 950px;height: 300px;background-color: orange;}.bottom {height: 100px;background-color: brown;}/* 单伪元素法-相当于在父级最后额外添加一个块级元素 */.clearfix::after {content: "";display: block;clear: both;}
  <div class="father clearfix"><div class="left"></div><div class="right"></div></div><div class="bottom"></div>

双伪元素法

css">	同时解决外边距塌陷问题和浮动问题.father {margin: 10px auto;width: 1200px;/* height: 300px; */background-color: pink;}.left {float: left;width: 200px;height: 300px;background-color: skyblue;}.right {float: right;width: 950px;height: 300px;background-color: orange;}.bottom {height: 100px;background-color: brown;}/* before 解决外边距塌陷问题 *//* 双伪元素法 */.clearfix::before,.clearfix::after {content: "";display: table;}/* after 清除浮动 */.clearfix::after {clear: both;}
  <!-- 父级使用 clearfix 类 --><div class="father clearfix"><div class="left"></div><div class="right"></div></div><div class="bottom"></div>

overfow法

css">	在父级添加overflow:hidden.father {margin: 10px auto;width: 1200px;/* height: 300px; */background-color: pink;/* 在父级添加overflow:hidden */overflow: hidden;}.left {float: left;width: 200px;height: 300px;background-color: skyblue;}.right {float: right;width: 950px;height: 300px;background-color: orange;}.bottom {height: 100px;background-color: brown;}
  <div class="father"><div class="left"></div><div class="right"></div></div><div class="bottom"></div>

Flex布局

Flex 布局也叫弹性布局,是浏览器提倡的布局模型,非常适合结构化布局,提供了强大的空间分布和对齐能力

Flex 模型不会产生浮动布局中脱标现象,布局网页更简单、更灵活

Flex组成

css">    设置方式:给父元素设置 display: flex,子元素可以自动挤压或拉伸组成部分:弹性容器弹性盒子主轴:默认在水平方向侧轴 / 交叉轴:默认在垂直方向/* 弹性容器 */.box {display: flex;/*声明为弹性容器*/height: 300px;border: 1px solid #000;}/* 弹性盒子:沿着主轴方向排列,当子元素在一行容不下时会被默认压缩子元素宽度 */.box div {width: 200px;/* height: 100px; */background-color: pink;}
  <div class="box"><div>1</div><div>2</div><div>3</div><div>4</div><div>5</div><div>6</div><div>7</div><div>8</div><div>9</div></div>

主轴对齐方式(水平方向对齐)

属性名:justify-content

属性值效果
flex-start默认值,弹性盒子从起点开始依次排列
flex-end弹性盒子从终点开始依次排列
center弹性盒子沿主轴剧中排列
space-between弹性盒子沿主轴均匀排列,空白间距均分在弹性盒子之间
space-around弹性盒子沿主轴均匀排列,空白间距均分在弹性盒子两侧
space-evenly弹性盒子沿主轴均匀排列,弹性盒子与容器之间间距相等
css">    .box {display: flex;/* justify-content: flex-start; *//* justify-content: flex-end; *//* 居中 *//* justify-content: center; *//* 父级剩余的尺寸分配成间距 *//* 弹性盒子之间的间距相等 *//* justify-content: space-between; *//* 间距出现在弹性盒子两侧 *//* 视觉效果:弹性盒子之间的间距是两端间距的2倍 *//* justify-content: space-around; *//* 各个间距都相等 */justify-content: space-evenly;height: 300px;border: 1px solid #000;}.box div {width: 200px;height: 100px;background-color: pink;}
  <div class="box"><div>1</div><div>2</div><div>3</div></div>

侧轴对齐方式(单行垂直方向对齐)

  • align-items:当前弹性容器内所有弹性盒子的侧轴对齐方式(给弹性容器设置)
  • align-self:单独控制某个弹性盒子的侧轴对齐方式(给弹性盒子设置)
属性值效果
stretch弹性盒子沿着侧轴线被拉拉伸至铺满容器(弹性盒子没有设置侧轴方向尺寸则默认拉伸)
center弹性盒子沿侧轴居中排列
flex-start弹性盒子从起点开始依次排列
flex-end弹性盒子从终点开始依次排列
css">    .box {display: flex;/* 弹性盒子在侧轴方向没有尺寸才能拉伸 *//* align-items: stretch; *//* align-items: center; *//* align-items: flex-start; */align-items: flex-end;height: 300px;border: 1px solid #000;}/* 第二个div,侧轴居中对齐 */.box div:nth-child(2) {align-self: center;}.box div {width: 200px;height: 100px;background-color: pink;}
  <div class="box"><div>1</div><div>2</div><div>3</div></div>

弹性盒子换行

css">	弹性盒子可以自动挤压或拉伸,默认情况下,所有弹性盒子都在一行显示。属性名:flex-wrap属性值wrap:换行nowrap:不换行(默认).box {display: flex;/* 当超出父级尺寸自动换行 *//* 换行后的元素上边距和下边距距离一样 */flex-wrap: wrap;/* 不换行 *//* flex-wrap: nowrap; */justify-content: space-between;height: 300px;border: 1px solid #000;}.box div {width: 200px;height: 100px;background-color: pink;}
  <div class="box"><div>1</div><div>2</div><div>3</div><div>4</div><div>5</div><div>6</div><div>7</div><div>8</div><div>9</div><div>10</div><div>11</div><div>12</div></div>

行内对齐方式(多行垂直方向对齐)

属性名:align-content
注意:该属性对单行弹性盒子模型无效

属性值效果
flex-start默认值,弹性盒子从起点开始依次排列
flex-end弹性盒子从终点开始一次排列
center弹性盒子沿主轴居中排列
space-between弹性盒子沿主轴均匀排列,空白间距均分在弹性盒子之间
space-around弹性盒子沿主轴均匀排列,空白间距均分在弹性盒子两侧
space-eenly弹性盒子沿主轴均匀排列,弹性盒子与容器之间间距相等
css">   	.box {display: flex;flex-wrap: wrap;justify-content: space-between;/* 调整 行对齐方式:对单行弹性盒子不生效 *//* align-content: flex-start; *//* align-content: flex-end; *//* align-content: center; */align-content: space-between;/* align-content: space-around; *//* align-content: space-evenly; */height: 400px;border: 1px solid #000;}.box div {width: 200px;height: 100px;background-color: pink;}
  <div class="box"><div>1</div><div>2</div><div>3</div><div>4</div><div>5</div><div>6</div><div>7</div><div>8</div></div>

弹性盒子伸缩比

css">    默认情况下,主轴方向尺寸是靠内容撑开;侧轴默认拉伸 作用:控制弹性盒子的主轴方向的尺寸属性名:flex属性值:整数数字,表示占用父级剩余尺寸的份数.box {display: flex;/* 主轴为垂直 */flex-direction: column;height: 300px;border: 1px solid #000;}.box div {/* height: 100px; */background-color: pink;}.box div:nth-child(1) {/* 不设置宽度,侧轴默认拉伸,高度由内容撑开 */width: 200px;}.box div:nth-child(2) {/* 占剩余尺寸的1份(被分为3分) */flex: 1;}.box div:nth-child(3) {/* 占剩余尺寸的2份(被分为3分) */flex: 2;}
  <div class="box"><div>1</div><div>2</div><div>3</div></div>

修改主轴方向(基本不需要改变方向)

主轴默认在水平方向,侧轴默认在垂直方向
属性名:flex-direction

属性值效果
row水平方向,从左向右(默认)
column垂直方向,从上向下
row-reverse水平方向,从右向左
column-reverse垂直方向,从下向上

http://www.ppmy.cn/ops/23244.html

相关文章

Day20.一刷数据结构算法(C语言版) 669修剪二叉搜索树;108将有序数组转换为二叉搜索树;538把二叉搜索树转换为累加树

一、669修剪二叉搜索树 这道题目比较难&#xff0c;比添加增加和删除节点难的多&#xff0c;建议先看视频理解。 题目链接&#xff1a;修剪二叉搜索树 文章讲解&#xff1a; 代码随想录 视频讲解&#xff1a; 你修剪的方式不对&#xff0c;我来给你纠正一下&#xff01;| 修剪二…

Android 学习 鸿蒙HarmonyOS 4.0 第三章(TS的常用基本类型)

写之前先简单提一句。鸿蒙4.0之后呢&#xff0c;主推开发语言&#xff1a;ArkTs&#xff0c;如果你是零基础小白&#xff0c;不建议直接学习鸿蒙os开发&#xff0c;可以先从ts&#xff1a;TypeScript来开始学习。 编程语言介绍&#xff1a; ArkTs 是鸿蒙os 优选的主力应用开发…

pytest参数化数据驱动(数据库/execl/yaml)

常见的数据驱动 数据结构&#xff1a; 列表、字典、json串 文件&#xff1a; txt、csv、excel 数据库&#xff1a; 数据库链接 数据库提取 参数化&#xff1a; pytest.mark.parametrize() pytest.fixture()…

Linux-程序替换

&#x1f30e;进程控制【下】 文章目录&#xff1a; 进程控制 execl接口介绍 多进程版本程序替换 其他exec接口 接口介绍       替换本地程序 总结 前言&#xff1a; 在Linux系统中&#xff0c;进程程序替换是一种重要的操作&#xff0c;通过进程程序替换&#xff0c;程…

axios项目中使用如何进行封装,api相关请求封装,POST、GET、HEAD、PUT、DELETE、TRACE、OPTIONS 等封装

这些是HTTP协议中的请求方法&#xff1a; POST&#xff08;提交数据&#xff09;&#xff1a;用于向指定资源提交要被处理的数据&#xff0c;常用于提交表单数据或通过API传送数据。GET&#xff08;获取数据&#xff09;&#xff1a;用于请求指定资源的信息&#xff0c;常用于获…

鸿蒙应用开发-初见:入门知识、应用模型

基础知识 Stage模型应用程序包结构 开发并打包完成后的App的程序包结构如图 开发者通过DevEco Studio把应用程序编译为一个或者多个.hap后缀的文件&#xff0c;即HAP一个应用中的.hap文件合在一起称为一个Bundle&#xff0c;bundleName是应用的唯一标识 需要特别说明的是&…

【ARMv9 DSU-120 系列 9 -- DSU-120 Debug block】

请阅读【Arm DynamIQ™ Shared Unit-120 专栏 】 请阅读【ARM Coresight SoC-400/SoC-600 专栏导读】 文章目录 ARM DSU-120 Debug BlockCluster debug componentsCache DebugDSU-120 Cache Debug 特性应用场景Terminology处理元素(PE)

React受控绑定

受控绑定 概念&#xff1a;使用React组件的状态&#xff08;useState&#xff09;控制表单的状态 简单理解为双向绑定 function App(){const [value, setValue] useState()return (<input type"text" value{value} onChange{e > setValue(e.target.value)}/&…