6_CSS布局之浮动的应用

day06_CSS布局之浮动的应用

本课目标(Objective)

  • 理解什么是浮动
  • 掌握浮动的三种机制
  • 掌握浮动的案例应用

1 CSS 布局的三种机制

  • CSS 提供了 3 种机制来设置盒子的摆放位置,分别是普通流(标准流)、浮动定位

    • 普通流(标准流)

      • 块级元素会独占一行,从上向下顺序排列;

        • 常用元素:div、hr、p、h1~h6、ul、ol、dl、form、table

      • 行内元素会按照顺序,从左到右顺序排列,碰到父元素边缘则自动换行;

        • 常用元素:span、a、i、em等

    • 浮动

      • 让盒子从普通流中起来,主要作用让多个块级盒子一行显示。

    • 定位

      • 将盒子固定在浏览器的某一个位置

  • 案例:01.普通标准流.html

2 为什么需要浮动?

  • 如何让多个盒子(div)水平排列成一行?

  • 如何实现盒子的左右对齐?

  • 虽然我们前面学过行内块(inline-block) 但是它有弊端:

    • 它可以实现多个元素一行显示,但是中间会有空白缝隙,不能满足以上第一个问题。

    • 它不能实现以上第二个问题,盒子左右对齐

  • 案例:02.为什么要浮动.html

3 什么是浮动-float

  • 概念:元素的浮动是指设置了浮动属性的元素,会脱离标准普通流的控制,移动到指定位置。

    • 让多个盒子(div)水平排列成一行,使得浮动成为布局的重要手段。

    • 可以实现盒子的左右对齐等等。

  • 通过 float属性定义浮动,语法如下

选择器 { 
    float: 属性值; 
}
属性值描述
none元素不浮动(默认值)
left元素向左浮动
right元素向右浮动
3.1 浮动例子演示
  • 设置了浮动就会漂浮在普通流的上面。

    • float 属性会让盒子漂浮在标准流的上面,所以第二个标准流的盒子跑到浮动盒子的底下了。

    • 把自己原来的位置漏给下面标准流的盒子,就不占有原来的位置,是脱离标准流的。

  • 案例:03.浮动例子演示.html

    • 浮动的元素互相贴靠一起的,但是如果父级宽度装不下这些浮动的盒子, 多出的盒子会另起一行对齐

    • float属性会改变元素display属性,任何元素都可以浮动。浮动元素会生成一个块级框,而无论它本身是何种元素。生成的块级框和我们前面的行内块极其相似。

    • 加了浮动的盒子是不占位置的,它原来的位置给了标准流的盒子。

4 基于Float的应用案例

  • 布局的时候需要给浮动的元素添加一个标准流,以最大化的减小对其他标准流的影响。

4.1 浮动应用案例1
  • 案例:04.浮动应用案例1.html

4.2 浮动应用案例2
  • 案例:05.浮动应用案例2.html

  • 在制作导航栏过程中,一般不会直接用链接(a)标签而是用li标签包含链接的做法,li+a 语义更清晰。

5 浮动与盒子的关系设置

5.1 浮动元素与父盒子的关系
  • 子盒子的浮动参照父盒子对齐

  • 不会与父盒子的边框重叠,也不会超过父盒子的内边距

  • 案例:06.浮动元素与父盒子的关系.html

5.2 浮动元素与兄弟盒子的关系
  • 在一个父级盒子中,如果前一个兄弟盒子是:

    • 浮动的,那么当前盒子会与前一个盒子的顶部对齐;

    • 普通流的,那么当前盒子会显示在前一个兄弟盒子的下方。

  • 案例:07.浮动元素与兄弟盒子的关系.html

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

6. 浮动清除

6.1 为什么要清除浮动
  • 父级盒子在多数情况下不方便给高度,如果子盒子浮动就不占有位置,父级盒子的高度为0,就影响了下面的标准流盒子。

  • 案例:08.标准流的盒子布局.html

  • 案例:09.浮动如何影响盒子布局.html

  • 由于浮动元素不再占用原标准流的位置,所以它会对后面的元素排版产生影响就需要清除浮动后造成的影响。

  • 清除浮动主要为了解决父级元素高度为0时,子级浮动引发的遮盖问题。清除浮动之后, 父级就会根据浮动的子盒子自动检测高度。父级有了高度,就不会影响下面的标准流了。

6.2 清除浮动的方法
选择器{clear:属性值;}
属性值描述
left不允许左侧有浮动元素(清除左侧浮动的影响)
right不允许右侧有浮动元素(清除右侧浮动的影响)
both同时清除左右两侧浮动的影响(几乎只用clear: both;)
1. 额外标签法(隔墙法)
  • 10.清除浮动之额外标签法.html

    • 优点: 通俗易懂,书写方便

    • 缺点: 添加许多无意义的标签,结构化较差。

/*清除浮动*/
.clear {
    clear: both;
}
2. 父级添加overflow属性方法
  • 11.清除浮动之父级添加overflow.html

    • 优点: 代码简洁

    • 缺点: 内容增多时候容易造成不会自动换行导致内容被隐藏掉,无法显示需要溢出的元素。

   
可以给父级添加: overflow属性为hidden|auto|scroll都可以实现。

overflow属性的作用如下:
https://developer.mozilla.org/zh-CN/docs/Web/CSS/overflow
3. 使用after伪元素清除浮动
  • :after 方式为空元素额外标签法的升级版,好处是不用单独加标签了

 .clearfix:after {  content: ""; display: block; height: 0; 
   clear: both; visibility: hidden;  }   
 .clearfix {*zoom: 1;}   /* IE6、7 专用 */
  • 优点: 结构语义化正确

  • 缺点: 由于IE6-7不支持:after,使用 zoom:1触发 hasLayout。

  • 代表网站: 百度、淘宝网、网易等

4. 使用双伪元素清除浮动

使用方法:

.clearfix:before,.clearfix:after { 
  content:"";
  display:table; 
}
.clearfix:after {
 clear:both;
}
.clearfix {
  *zoom:1;
}
  • 优点: 代码更简洁

  • 缺点: 由于IE6-7不支持:after,使用 zoom:1触发 hasLayout

  • 代表网站: 小米、腾讯等

6.3 清除浮动总结
清除浮动的方式优点缺点
额外标签法(隔墙法)通俗易懂,书写方便添加许多无意义的标签,结构化较差。
父级overflow:hidden;书写简单溢出隐藏
父级after伪元素结构语义化正确由于IE6-7不支持:after,兼容性问题
父级双伪元素结构语义化正确由于IE6-7不支持:after,兼容性问题

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 教程 2.1.1

MySQL 插入数据 MySQL 表中使用 INSERT INTO 语句来插入数据。 你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据。 语法 以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法: INSERT INTO table_name (colu…

110. 平衡二叉树(Java)

给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:t…

基于conda环境使用mamba/conda安装配置QIIME 2 2023.9 Amplicon扩增子分析环境,q2cli主要功能模块介绍及使用

QIIME 2 2023.9 Amplicon Distribution介绍: 概述 qiime团队专门针对高通量扩增子序列分析退出的conda集成环境,包括了主要和常见的扩增子分析模块,用户可以单独使用各个模块,也可以使用各模块组成不同的分析流程。从2023.09版本…

Linux——Web网站服务(二)

一、httpd服务的访问控制 1、客户机地址限制 通过Require配置项&#xff0c;可以根据主机的主机名或P地址来决定是否允许客户端访问。在 httpd服务器的主配置文件的<Location>&#xff0c;<Directory>、<Files>、<Limit>配置段中均可以使用Require配置…

MQ-Det: Multi-modal Queried Object Detection in the Wild

首个支持视觉和文本查询的开放集目标检测方法 NeurIPS2023 文章&#xff1a;https://arxiv.org/abs/2305.18980 代码&#xff1a;https://github.com/YifanXu74/MQ-Det 主框图 摘要 这篇文章提出了MQ-Det&#xff0c;一种高效的架构和预训练策略&#xff0c;它利用文本描述的…

【LeetCode刷题-树】-- 103.二叉树的锯齿形层序遍历

103.二叉树的锯齿形层序遍历 方法&#xff1a;广度优先搜索 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int …

单片机(STM32,GD32,NXP等)中BootLoader的严谨实现详解

Bootloader(引导加载程序)的主要任务是引导加载并运行应用程序&#xff0c;我们的软件升级逻辑也一般在BootLoader中实现。本文将详细介绍BootLoader在单片机中的实现&#xff0c;包括STM32、GD32、NXP Kinetis等等的所有单片机&#xff0c;因为无论是什么样的芯片&#xff0c;…

​pathlib --- 面向对象的文件系统路径​

3.4 新版功能. 源代码 Lib/pathlib.py 该模块提供表示文件系统路径的类&#xff0c;其语义适用于不同的操作系统。路径类被分为提供纯计算操作而没有 I/O 的 纯路径&#xff0c;以及从纯路径继承而来但提供 I/O 操作的 具体路径。 如果以前从未用过此模块&#xff0c;或不确定…

07.仿简道云公式函数实战-逻辑函数-AND

1.AND函数 AND 函数可用于表示&#xff1a;当所有参数逻辑值为 true 时&#xff0c;返回 true&#xff1b;只要有任何一个参数逻辑值为 false&#xff0c;则返回false。 2. 函数用法 AND(语文成绩>90,数学成绩>90,英语成绩>90) 3.函数示例 1&#xff09;AND(A,B)&a…

Ruff智慧路灯方案让城市管理更智慧,物联网助力城市数智化运营

随着5G、物联网、人工智能等新一代信息技术的发展&#xff0c;路灯管理也被赋予了更多可能&#xff0c;路灯已经从简单的照明工具逐步成为智慧城市发展的新入口。 据了解&#xff0c;当前我国路灯照明耗电量约占总量的15%。传统路灯存在耗能大、设备故障无法定位、路灯状态难以…

安装LLaMA-Factory微调chatglm3,修改自我认知

安装git clone https://github.com/hiyouga/LLaMA-Factory.git conda create -n llama_factory python3.10 conda activate llama_factory cd LLaMA-Factory pip install -r requirements.txt 之后运行 CUDA_VISIBLE_DEVICES0 python src/train_web.py&#xff0c;按如下配置…

algorithm graphics

绘制地图坐标路线_哔哩哔哩_bilibili neo4j test-CSDN博客

如何使用Java在Excel中添加动态数组公式?

本文由葡萄城技术团队发布。转载请注明出处&#xff1a;葡萄城官网&#xff0c;葡萄城为开发者提供专业的开发工具、解决方案和服务&#xff0c;赋能开发者。 前言 动态数组公式是 Excel 引入的一项重要功能&#xff0c;它将 Excel 分为两种风格&#xff1a;Excel 365 和传统 …

Linux基础项目开发2:物联网监控——视频监控方案介绍(一)

前言&#xff1a; 这次我们来做一个关于视频监控的基础小项目&#xff0c;需要我们用到网络的相关知识&#xff0c;还会学到好多优秀的网络协议&#xff0c;下面让我们开始对物联网视频监控进行一个大体框架的介绍吧 目录 项目内容&#xff1a; 1.视频监控方案介绍 2.视频监控…

ROB的结构与作用

在流水线的提交&#xff08;Commit&#xff09;阶段&#xff0c;之所以能够将乱序执行的指令变回程序中指定的顺序状态,主要是通过重排序缓存(Reorder Buffer, ROB)来实现的 ROB本质上是一个FIFO在它当中存储了一条指令的相关信息,例如这条指令的类型、结果、目的寄存器和异常…

SpringCloud面试题——Sentinel

一&#xff1a;什么是Sentinel&#xff1f; Sentinel是一个面向分布式架构的轻量级服务保护框架&#xff0c;实现服务降级、服务熔断、服务限流等功能 二&#xff1a;什么是服务降级&#xff1f; 比如当某个服务繁忙,不能让客户端的请求一直等待,应该立刻返回给客户端一个备…

安装程序无法自动安装Virtual Machine Communication Interface Sockets(VSock)驱动程序

环境情况&#xff1a; 物理机win10系统 虚拟机windowserver08系统 vmware 16.0的版本 问题触发&#xff1a; 在虚拟机win7系统上安装vmware tools出现提示&#xff0c;报错信息“安装程序无法自动安装Virtual Machine Communication Interface Sockets&#xff08;VSock&a…

Android 11.0 systemui锁屏页面时钟显示样式的定制功能实现

1.前言 在11.0的系统ROM定制化开发中,在进行systemui的相关开发中,当开机完成后在锁屏页面就会显示时间日期的功能,由于 开发产品的需求要求时间显示周几上午下午接下来就需要对锁屏显示时间日期的相关布局进行分析,然后实现相关功能 效果图如图: 2.systemui锁屏页面时钟显…

Ubuntu Destktop 22.04 设置 ssh 超时时间

Ubuntu Destktop 22.04 使用 ssh 连接服务器时&#xff0c;发现一段时间不操作就会自动断开连接&#xff0c;解决方法如下&#xff1a; 打开 /etc/ssh/ssh_config 文件&#xff1a; sudo vim /etc/ssh/ssh_config在文件最后添加&#xff1a; # ssh 客户端会每隔 30 秒发送一…

4fiddler抓包工具的使用

一、定义 1.1 抓包的定义 说明&#xff1a;客户端向服务器发送请求以及服务器响应客户端的请求&#xff0c;都是以数据包来传递的。 抓包(packet capture)&#xff1a;通过工具拦截客户端与服务器交互的数据包 1.2 fiddler的介绍 Fiddler是一个http协议调试代理工具&#…