【前端】CSS浮动(学习笔记)

一、浮动

1、传统网页布局

网页布局的本质:用 CSS 来摆放盒子,把盒子摆放到相应位置。

CSS 提供了三种传统布局方式(盒子如何进行排列顺序)

  1. 普通流(标准流)
  2. 浮动
  3. 定位

实际开发中,一个页面基本都包含了这三种布局方式(后面移动端学习新的布局方式) 。

2、标准流

标准流:就是标签按照规定好默认方式排列,标准流是最基本的布局方式。

  1. 块级元素会独占一行,从上向下顺序排列
  2. 行内元素会按照顺序,从左到右顺序排列,碰到父元素边缘则自动换行

3、浮动的用途

有很多的布局效果,标准流没有办法完成,此时就可以利用浮动完成布局。 因为浮动可以改变元素标签默认的排列方式。

浮动最典型的应用:可以让多个块级元素一行内排列显示。

网页布局第一准则:多个块级元素纵向排列找标准流,多个块级元素横向排列找浮动。

4、浮动的概述

float 属性用于创建浮动框,将其移动到一边,直到左边缘或右边缘触及包含块或另一个浮动框的边缘

选择器 { float: 属性值; }
属性值描述
none元素不浮动(默认值)
left元素向左浮动
right元素向右浮动

5、浮动特性

1)浮动元素会脱离标准流(脱标):浮动的盒子不再保留原先的位置

2)浮动的元素会一行内显示并且元素顶部对齐

浮动的元素是互相贴靠在一起的(不会有缝隙),如果父级宽度装不下这些浮动的盒子,多出的盒子会另起一行对齐。

3)浮动的元素会具有行内块元素的特性

任何元素都可以浮动。不管原先是什么模式的元素,添加浮动之后具有行内块元素相似的特性。

  • 如果块级盒子没有设置宽度,默认宽度和父级一样宽,但是添加浮动后,它的大小根据内容来决定。
  • 浮动的盒子中间是没有缝隙的,是紧挨着一起的。

6、浮动元素经常和标准流父级搭配使用

先用标准流的父元素排列上下位置,之后内部子元素采取浮动排列左右位置。

先设置盒子的大小,之后设置盒子的位置。

7、浮动布局注意点

1)浮动和标准流的父盒子搭配。

先用标准流的父元素排列上下位置,之后内部子元素采取浮动排列左右位置。

2)一个元素浮动了,理论上其余的兄弟元素也要浮动。

一个盒子里面有多个子盒子,如果其中一个盒子浮动了,那么其他兄弟也应该浮动,以防止引起问题。

浮动的盒子只会影响浮动盒子后面的标准流,不会影响前面的标准流。

二、清除浮动

1、 为什么需要清除浮动?

由于父级盒子很多情况下,不方便给高度,但是子盒子浮动又不占有位置,最后父级盒子高度为 0 时,就会影响下面的标准流盒子。

  1. 父级没高度
  2. 子盒子浮动了。
  3. 影响下面布局了,我们就应该清除浮动了

由于浮动元素不再占用原文档流的位置,所以它会对后面的元素排版产生影响

2、清除浮动本质

清除浮动的本质是清除浮动元素造成的影响

如果父盒子本身有高度,则不需要清除浮动

清除浮动之后,父级就会根据浮动的子盒子自动检测高度。父级有了高度,就不会影响下面的标准流了。

3、清除浮动

清除浮动的策略是闭合浮动

选择器 {clear: both;
}
1)额外标签法

额外标签法也称为隔墙法,是 W3C 推荐的做法。

额外标签法会在浮动元素末尾添加一个空的标签。例如 <div style="clear:both"></div>,或者其他标签(如<br />等)。

  • 优点: 通俗易懂,书写方便
  • 缺点: 添加许多无意义的标签,结构化较差
  • 注意: 要求这个新的空标签必须是块级元素
2)父级添加 overflow

可以给父元素添加 overflow 属性,将其属性值设置为 hidden、 auto 或 scroll 。

  • 优点:代码简洁
  • 缺点:无法显示溢出的部分
3):after 伪元素法

:after 方式是额外标签法的升级版。也是给父元素添加

.clearfix:after { content: ""; display: block; height: 0; clear: both; visibility: hidden; 
} 
.clearfix { /* IE6、7 专有 */ *zoom: 1;
}
  • 优点:没有增加标签,结构更简单
  • 缺点:照顾低版本浏览器
4)双伪元素清除浮动

给父元素添加

.clearfix:before,.clearfix:after {content:"";display:table; 
}
.clearfix:after {clear:both; 
}
.clearfix {*zoom:1;
}
  • 优点:代码更简洁
  • 缺点:照顾低版本浏览器

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

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

相关文章

Go 反射技术判断结构体字段数据为空

Api介绍 在Go语言中&#xff0c;反射API用于在运行时检查类型信息、获取和修改变量的值以及调用对象的方法。反射API包含了一组函数和类型&#xff0c;可以在程序运行时动态地操作对象。 以下是一些常用的反射API&#xff1a; reflect.TypeOf&#xff1a;返回一个值的类型信息。…

并查集基础模板

题目我上面有人儿 代码 #include <bits/stdtr1c.h> using namespace std; const int N 1005; int f[N]; int n; int siz[N]; // 初始化并查集 // void init() // { // for (int i 1; i < n; i) // { // f[i] i; // 初始化所有的节点都是自己的父节点 //…

Tomcat头上有个叉叉

问题原因&#xff1a; 这是因为它就是个空的tomcat,并没有导入项目运行 解决方案&#xff1a; war模式&#xff1a;发布模式&#xff0c;正式发布时用&#xff0c;将WEB工程以war包的形式上传到服务器 war exploded模式&#xff1a;开发时用&#xff0c;将WEB工程的文件夹直接…

【网络协议】LACP(Link Aggregation Control Protocol,链路聚合控制协议)

文章目录 LACP名词解释LACP工作原理互发LACPDU报文确定主动端确定活动链路链路切换 LACP和PAgP有什么区别&#xff1f;LACP与LAG的关系LACP模式更优于手动模式LACP模式对数据传输更加稳定和可靠LACP模式对聚合链路组的故障检测更加准确和有效 推荐阅读 LACP名词解释 LACP&…

day11 前k个高频元素

// 小顶堆 class mycomparison { public: bool operator()(const pair<int, int>& lhs, const pair<int, int>& rhs) { return lhs.second > rhs.second; } }; vector<int> topKFrequent(vector<int>& nums, int k) { // 要统计元素出现…

智能外呼有什么好处?

智能外呼是一种自动化的电话营销方式&#xff0c;利用AI智能外呼技术和大量数据分析&#xff0c;帮助企业实现与客户之间的高效、精准、个性化的客户沟通&#xff0c;还可以在客户服务、市场营销和销售等方面带来助力。那么&#xff0c;智能外呼有什么好处呢&#xff1f; 1. 提…

spring IOC bean为什么默认是单例的

首先解释一下什么是单例 bean&#xff1f; 单例的意思就是说在 Spring IoC 容器中只会存在一个 bean 的实例&#xff0c;无论一次调用还是多次调用&#xff0c;始终指向的都是同一个 bean 对象 用代码来解释单例 bean public class UserService {public void sayHello() {Syst…

交叉编译工具链makefile

linux系统默认搜索头文件地址&#xff1a;/usr/include/文件夹&#xff1b; Windows系统默认搜索头文件地址&#xff1a;不同软件好像可以设置不同的地址&#xff1b;例如visual studio好像可以设置附加包含目录&#xff0c;包含目录等 Linux系统库文件路径&#xff1a;/lib文…

通过生成模拟释放无限数据以实现机器人自动化学习

该工作推出RoboGen&#xff0c;这是一种生成机器人代理&#xff0c;可以通过生成模拟自动大规模学习各种机器人技能。 RoboGen 利用基础模型和生成模型的最新进展。该工作不直接使用或调整这些模型来产生策略或低级动作&#xff0c;而是提倡一种生成方案&#xff0c;该方案使用…

命运天注定?

罗翔老师经常说&#xff1a;人这一生&#xff0c;能自己决定的也许只有5&#xff05;&#xff0c;有95%是你决定不了的。 不是说事在人为&#xff0c;人定胜天吗&#xff1f; 哪吒也在电影的高潮喊出了&#xff1a;我命由我不由天。 听上去很热血&#xff0c;但实际咱们每个…

Java泛型:详解使用技巧及举例说明

Java泛型&#xff1a;详解使用技巧及举例说明 1. 引言 Java泛型是一项强大的编程概念&#xff0c;它允许我们编写通用的代码&#xff0c;在编写代码时不需要预先指定具体的数据类型。泛型的引入解决了在传统的编程中需要频繁进行类型转换的问题&#xff0c;提高了代码的安全性…

simulink MATLABFunction模块中实时函数调用函数的使用

样例 function Predyy matlabceshi(input, Time_s) input1 input; Time_s1 Time_s; Predyy ee(input1) mm(Time_s1); end 上面是主要部分&#xff0c;下面是被调用部分 function A ee(input1) A input1 * 100; end function B mm(Time_s1) B Time_s1 * 100; end 模型…

算法竞赛---反悔贪心

反悔贪心 Work Scheduling G 什么是返回贪心呢&#xff0c;就是先选择&#xff0c;遇到更好的之后在反悔选择更好的&#xff0c;这是符合贪心的逻辑的。 #include <bits/stdc.h> // https://www.luogu.com.cn/problem/P2949 using namespace std; struct node {int d,…

Linux(ubuntu)利用ffmpeg+qt设计rtsp_rtmp流媒体播放器(完全从0开始搭建环境进行开发)

一、前言 从0开始搭建Linux下Qt、ffmpeg开发环境。 从安装虚拟机开始、安装Linux(Ubuntu)系统、安装Qt开发环境、编译ffmpeg源码、配置ffmpeg环境、编写ffmpeg项目代码、完成项目开发。 完全从0开始搭建环境进行开发 完全从0开始搭建环境进行开发 完全从0开始搭建环境进行开…

公务员国考省考小白需知

文章目录&#xff1a; 一&#xff1a;分类 1.国考 2.省考 二&#xff1a;必备途径 1.相关网站 1.1 官网 1.1.1 必须知道的 1.1.2 比较好用的 1.1.3 事业单位的 1.2 机构 ​​1.3 时事 ​​1.4 资源 1.5 题库 1.6 真题 ​2.相关公主号 3.应用 4.群聊如何找 三…

笙默考试管理系统-MyExamTest----codemirror(53)

笙默考试管理系统-MyExamTest----codemirror&#xff08;53&#xff09; 目录 笙默考试管理系统-MyExamTest----codemirror&#xff08;51&#xff09; 一、 笙默考试管理系统-MyExamTest----codemirror 二、 笙默考试管理系统-MyExamTest----codemirror 三、 笙默考试…

【TwinCAT学习笔记 1】TwinCAT开发环境搭建

写在前面 作为技术开发人员&#xff0c;开启任何一项开发工作之前&#xff0c;首先都要搭建好开发环境&#xff0c;所谓磨刀不误砍材工&#xff0c;一定要有耐心&#xff0c;一次不行卸载再装。我曾遇到过一个学生&#xff0c;仅搭建环境就用了两周&#xff0c;这个过程也是一…

ATM的转账

【 1 】明确我们要实现的功能 # 用户功能菜单 # 1.注册 # 2.登陆 # 3.取款 # 4.转账 # 5.充值余额 # 6.查看流水 # 7.查看银行信息(查看自己…

基于Redis在定时任务里判断其他定时任务是否已经正常执行完的方案

执行的定时任务是基于其他定时任务计算得到的结果基础上做操作的&#xff0c;那么如何来确定其他存在数据依赖的定时任务已经执行完成呢&#xff1f; 在分布式环境里&#xff0c;可通过集群的redis来解决这个问题&#xff1a; 即&#xff0c;在跑批任务开始时&#xff0c;将任…

SSD数据在写入NAND之前为何要随机化?-part2

接part1介绍&#xff1a; 如何达到这个目的&#xff1f;业内常用的是对写入数据的数据进行随机化处理&#xff0c;这部分主要在SSD控制器中通过硬件实现。 上图b/c&#xff1a;在控制器芯片通过硬件方式实现随机化的读写流程&#xff0c;这个也是业内通常做法。随机化处理是在写…