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

devtools/2024/9/18 12:33:45/ 标签: css, 前端

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/devtools/28956.html

相关文章

Linux下安装snaphu

1、官网下载安装包 2、解压&#xff0c;移动文件夹到/usr/local/下 3、在/usr/local/下创建man&#xff0c;在man下创建man1文件夹 4、进入到snaphu的src文件夹里&#xff0c;执行sudo make&#xff0c;如果报错 在这个 Makefile 中&#xff0c;-arch x86_64 是 macOS 特定的…

mybatis工程需要的pom.xml,以及@Data 、@BeforeEach、@AfterEach 的使用,简化mybatis

对 “mybatis - XxxMapper.java接口中方法的参数 和 返回值类型&#xff0c;怎样在 XxxMapper.xml 中配置的问题” 这篇文章做一下优化 这个pom.xml文件&#xff0c;就是上面说的这篇文章的父工程的pom.xml&#xff0c;即&#xff1a;下面这个pom.xml 是可以拿来就用的 <?…

宠物饮水机缺液提醒报警功能如何实现

宠物饮水机是一种专门为宠物设计的设备&#xff0c;用于提供新鲜的水源。这些饮水机通常具有自动供水功能&#xff0c;能够保持水的清洁和新鲜度。宠物饮水机通常包括一个水箱和一个水泵&#xff0c;通过水泵将水从水箱中抽取出来&#xff0c;然后流入一个小水槽或喷水口&#…

(39)4.29数据结构(栈,队列和数组)栈

#include<stdlib.h> #include<stdio.h> #define MaxSize 10 #define Elemtype int 1.栈的基本概念 2.栈的基本操作 typedef struct { Elemtype data[MaxSize]; int top; }Sqstack;//初始化栈 void InitStack(Sqstack& S) { S.top -1; //初始化…

洛谷 P1377 [TJOI2011]:树的序 ← 笛卡尔树

【题目来源】https://www.luogu.com.cn/problem/P1377【题目描述】 众所周知&#xff0c;二叉查找树的形态和键值的插入顺序密切相关。准确的讲&#xff1a; 1.空树中加入一个键值 k&#xff0c;则变为只有一个结点的二叉查找树&#xff0c;此结点的键值即为 k。 2.在非空树中插…

云原生Kubernetes: K8S 1.29版本 部署Nexus

目录 一、实验 1.环境 2.搭建NFS 3. K8S 1.29版本 部署Nexus 二、问题 1.volumeMode有哪几种模式 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 主机架构版本IP备注masterK8S master节点1.29.0192.168.204.8 node1K8S node节点1.29.0192.168.204.9node2K…

解锁生成式AI的秘密:神经网络与深度学习原理

生成式 AI 加速发展&#xff0c;GPT-5 等模型变革行业&#xff0c;赋能 AI 软件工程师。AI 技术的进步对国家竞争和个人职业道路至关重要。把握机遇&#xff0c;迎接 AI 时代。 最近有两则新闻&#xff1a; GPT-5重大升级&#xff0c;不容小觑&#xff01;OpenAI CEO萨姆阿尔…

数组的拷贝

数组的拷贝 文章目录 数组的拷贝浅拷贝内存分析 深拷贝内存分析 浅拷贝 概念&#xff1a;数组的浅拷贝是指新数组保存的是原数组的内存地址&#xff0c;并没有拷贝真正的值&#xff0c;如果原数组的内容发生改变那么新数组的内容也会发生相应改变。 代码实现&#xff1a; pu…

【LeetCode刷题记录】110. 平衡二叉树

110 平衡二叉树 给定一个二叉树&#xff0c;判断它是否是平衡二叉树 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;true 示例 2&#xff1a; 输入&#xff1a;root [1,2,2,3,3,null,null,4,4] 输出&#xff1a;false 示例 3&…

Axios的使用教程

AXIOS Axios 是一个基于 promise 网络请求库&#xff0c;作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequests。 使用npm等包管理工具下载axios np…

一文理解前端如何调用后端(java)方法

阅读完文章大约需要3~5分钟 文章目录 一、什么是后端方法路径&#xff1f;二、ajax、axios调用后端方法总结 一、什么是后端方法路径&#xff1f; 这里针对的是 java 后端项目中在 controller 文件夹中的类文件&#xff0c;这类文件的后缀一般都会带有 controller&#xff0c…

K8S执行完毕kubectl init xxx 执行 kubectl get ns 报错才connect: connection refused

问题场景&#xff1a; 在安装完毕K8S之后&#xff0c;执行 kubectl get ns 报错&#xff1a; [rootmaster ~]# kubectl get pods E0501 08:34:55.770030 11268 memcache.go:265] couldnt get current server API group list: Get "https://192.168.1.100:6443/api?ti…

爬虫学习--2.urllib 库

urllib了解 urllib 库 是 Python 内置的 HTTP 请求库。urllib 模块提供的上层接口,使访问 www 和 ftp 上的数据就像访问本地文件一样。 有以下几种模块: urllib.request 请求模块 urllib.error 异常处理模块 urllib.parse url解析模块 urllib.robotparser robots.txt 解析模…

ax200/ax201/ax210/ax211/ax411等intel网卡无法开启5G热点问题解决方案汇总

目录 故障原因解决方案windowslinuxkernel < 5.5kernel > 5.5方案1 修改linux内核模块代码&#xff08;iwlwifi内核模块&#xff09;&#xff0c;重新编译内核模块并重新导入方案2 修改hostapd代码 最后更新于2024.04.28 故障原因 根本原因是因为英特尔在内核中开启了LA…

Oracle 19c OCM考试难度如何?

许多人对 Oracle 19c OCM 的考试规则并不熟悉&#xff0c;本文将详细介绍考证所需条件以及具体要求&#xff0c;以帮助大家更顺利地完成考试流程。 首先&#xff0c;考生需具备相匹配的同级别 OCP 证书&#xff0c;如已获得 10g/11g/12c 证书者&#xff0c;则须先完成 083 升级…

【Leetcode】二叉树基础题思路

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;Leetcode刷题 目录 1.单值二叉树2.相同的树3.对称二叉树4.另一棵树的子树 1.单值二叉树 题目链接&#xff1a;965.单值二叉树 题目描述&#xff1a; 单值二叉树是所有节点的值都相同的二叉树。实现…

文件上传结合springboot

目录 前台页面 后台接口 文件上传总结 前端页面三要素 服务端接收文件 前台页面 <form action"/upload" method"post" enctype"mutipart/form-data"> 姓名<imput type"text" name"username"><br> 年…

【C语言】atoi和atof函数的使用

人生应该树立目标&#xff0c;否则你的精力会白白浪费。&#x1f493;&#x1f493;&#x1f493; 目录 •&#x1f319;知识回顾 &#x1f34b;知识点一&#xff1a;atoi函数的使用和实现 • &#x1f330;1.函数介绍 • &#x1f330;2.代码演示 • &#x1f330;3.atoi函数的…

第一章 线性表

第一章 线性表 一、判断题 1.算法分析的两个主要方面是时间复杂度和空间复杂度的分析。 True 2.对于某些算法&#xff0c;随着问题规模的扩大&#xff0c;所花的时间不一定单调增加。 True 3.抽象数据类型中基本操作的定义与具体实现有关。 False 4.算法可以没有输入&…

XML从入门到精通

XML配置文件 目录&#xff08;单击跳转对应目录&#xff09; 1.XML总介................................................................. 1 1.1发展历史........................................................................... 1 1.2为什么要使用XML...............…