【CSS】浮动笔记及案例

CSS浮动

1. 认识浮动

  • float属性可以指定一个元素沿着左侧或者是右侧放置,允许文本和内联元素环绕它
    • float属性最初只使用文字环绕图片
    • 但却是早起CSS最好用的左右布局方案
  • 绝对定位、浮动都会让元素脱标,以达到灵活布局的目的
  • 可以通过float属性让元素脱标,产生浮动
    • none:默认,不浮动
    • left:左浮动
    • right:右浮动

2. 浮动的规则

  • 元素一旦浮动后,脱离标准流
    • 朝着向左或者向右方向移动,直到自己的边界紧贴着包含块(一般是父元素)或者其他浮动元素的边界为止
    • 定位元素会层叠在浮动元素上面
    • 标准流元素 < 浮动元素 < 定位元素(z-index >= 0)
  • 浮动元素的边界不能超过包含快的左右边界(包含块包含其中的margin、padding)

在这里插入图片描述

  • 浮动元素互相不能层叠
    • 如果一个元素浮动,会紧贴另外一个方向相同的浮动元素
    • 如果水平方向的空间不够显示浮动元素,浮动元素向下移动,直到有足够的空间为止
  • 浮动元素不能与行内级元素内容层叠,行内级内容会被浮动元素推出
    • 文字环绕图片的效果
  • 行内级元素、inline-block元素浮动后,其顶部将与所在行的顶部对齐

浮动练习:京东浮动布局,利用宽度的auto来解决兼容性问题

京东浮动布局,利用宽度的auto来解决兼容性问题

在这里插入图片描述

浮动练习2:京东多列布局

京东多列布局

在这里插入图片描述

浮动练习3:加边框的布局:

考拉布局

在这里插入图片描述

3. 浮动的问题

当一个元素中的某个子元素为浮动元素时,会脱标,不再给父元素汇报宽高,从而导致父元素的高度塌陷,为了解决这种问题,CSS推出了清除浮动,也就是clear属性

  • 父元素在计算总高度时,就不会计算浮动子元素的高度,导致了高度塌陷问题

  • 清除浮动的目的是

    • 让父元素计算总高度的时候,把浮动元素的高度算进去

3.1 清除浮动 clear

  • clear属性的意义
    • clear属性可以指定一个元素是否必须移动到在它之前浮动元素的下面(形成标准流,占用空间)
  • clear的常用取值
    • left: 要求元素的顶部低于之前生成的所有左浮动元素的底部
    • right:要求元素的顶部低于之前生成的所有右浮动元素的底部
    • both:要求元素的顶部低于之前生成所有浮动元素的底部
    • none:默认值,无特殊要求

3.2 清除浮动的方法

  • 方法一:给父元素设置固定的高度
    • 这样父元素就会有高度,不会因为子元素没有高度而撑不起盒子
  • 方法二:在父元素最后增加一个空的块级子元素,并且让它设置clear:both
    • 这样是利用clear属性将增加的子元素移动到所有浮动元素的后面,占据标准流,从而撑大父元素,给父元素宽高
  • 方法三:给父元素添加伪元素
    • 方法二的升级版,不再添加很多空白的标签,符合样式分离的原则

举例:

.box {
  width: 500px;
  background-color: pink;
  margin: 0 auto;
}
.box .left {
  float: left;
  width: 200px;
  height: 200px;
  background-color: aqua;
}
.box .right {
  float: right;
  width: 200px;
  height: 200px;
  background-color: red;
}
.box2 {
  width: 800px;
  height: 100px;
  background-color: pink;
  margin: 0 auto;
}
<div class="box">
  <div class="left">我是左浮动</div>

  <div class="right">我是右浮动</div>
</div>
<div class="box2"></div>

效果

在这里插入图片描述

很明显,在上面的效果图中,box2子元素直接布局到了浮动元素的下面,占据了本该属于box的位置,这就是高度塌陷问题

解决:

.clear_fix::after {
  content: '';
  /* block才能独占一行,伪元素创建时为行内元素 */
  display: block;
  clear: both;

  /* 浏览器版本兼容性 */
  visibility: hidden;
  height: 0;
}

.clear_fix {
  /* 兼容版本IE6/7 */
  *zoom: 1;
}
<div class="box clear_fix">
  <div class="left">我是左浮动</div>

  <div class="right">我是右浮动</div>
</div>

<div class="box2"></div>

在这里插入图片描述

将box添加浮动清除类,则可以将块级伪元素添加到所有子元素的底部,从而占据位置,解决box高度塌陷问题,本例中将清除浮动写成一个单独的class,可以在需要清除浮动的元素上引用它,方便开发

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

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

相关文章

SSM实战项目——哈哈音乐(二)后台模块开发

1、项目准备 ① 引入后台模块&#xff08;hami-console&#xff09;需要的依赖 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0…

【Qt】:常用控件(五:显示类控件)

常用控件 一.ProgressBar二. Calendar Widget 一.ProgressBar 使⽤ QProgressBar 表⽰⼀个进度条 代码⽰例:设置进度条按时间增⻓ 设置定时器&#xff0c;每个0.1秒&#xff0c;让进度条1 在实际开发中&#xff0c;进度条的取值&#xff0c;往往是根据当前任务的实际进度来进行…

创意绘图画画小程序:融合白板黑板功能,开启绘画新纪元

创意绘图画画小程序&#xff1a;融合白板黑板功能&#xff0c;开启绘画新纪元 在数字化时代的浪潮下&#xff0c;艺术创作正逐渐摆脱传统形式的束缚&#xff0c;以更加多元、便捷的方式走进人们的生活。其中&#xff0c;创意绘图画画小程序以其独特的白板画、黑板画功能&#…

蓝桥杯真题:k倍区间

import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();int k sc.nextInt();int[] a new int[n];long[] v new long[200000];long…

【注册中心】ZooKeeper

文章目录 概述Zookeeper的应用场景Zookeeper的角色Zookeeper 的数据模型zookeeper客户端常用命令Zookeeper的核心功能Zookeeper的架构与集群规则Zookeeper的工作模式Zookeeper如何实现分布式锁Zookeeper JavaAPI&#xff08;Curator&#xff09;来源 概述 Zookeeper 是一个开源…

手写防抖节流、手写深拷贝、事件总线

一、防抖 手写防抖--基本实现&#xff08;面试&#xff09; 手写防抖并且绑定this和event 添加取消功能 添加立即执行状态&#xff0c;默认不立即执行 underscore库介绍&#xff0c;lodash更轻量级 二、节流 用underscore库&#xff0c;调用throttle函数 手写基础版节流-&#…

Spring重点知识(个人整理笔记)

目录 1. 为什么要使用 spring&#xff1f; 2. 解释一下什么是 Aop&#xff1f; 3. AOP有哪些实现方式&#xff1f; 4. Spring AOP的实现原理 5. JDK动态代理和CGLIB动态代理的区别&#xff1f; 6. 解释一下什么是 ioc&#xff1f; 7. spring 有哪些主要模块&#xff1f;…

数据结构系列-队列的结构和队列的实现

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 队列 队列的概念及结构 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除删除数据操作的特殊线性表&#xff0c;队列具有先进先出FIFO&#xff0c;…

Python | Leetcode Python题解之第10题正则表达式匹配

题目&#xff1a; 题解&#xff1a; class Solution:def isMatch(self, s: str, p: str) -> bool:m, n len(s), len(p)dp [False] * (n1)# 初始化dp[0] Truefor j in range(1, n1):if p[j-1] *:dp[j] dp[j-2]# 状态更新for i in range(1, m1):dp2 [False] * (n1) …

【C++】排序算法 --快速排序与归并排序

目录 颜色分类&#xff08;数组分三块思想&#xff09;快速排序归并排序 颜色分类&#xff08;数组分三块思想&#xff09; 给定⼀个包含红⾊、⽩⾊和蓝⾊、共 n 个元素的数组 nums &#xff0c;原地对它们进⾏排序&#xff0c;使得相同颜⾊ 的元素相邻&#xff0c;并按照红⾊、…

【面试八股总结】传输控制协议TCP(一)

参考资料 &#xff1a;小林Coding、阿秀、代码随想录 一、什么是TCP协议 TCP是传输控制协议Transmission Control Protocol TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。 面向连接的&#xff1a;每条TCP连接杜只能有两个端点&#xff0c;每一条TCP连接只能是点对…

js中的事件循环

浏览器进程模型 在理解什么叫事件循环前&#xff0c;我们需要先知道浏览器的进程模型 现代浏览器的功能极度复杂&#xff0c;为了能确保各个部分独立运行互不影响&#xff0c;浏览器会在启动之时开启多个进程&#xff0c;具体而言可以分为以下三种 浏览器进程 负责浏览器的用…

Pulsar服务端处理消费者请求以及源码解析

引言 处理读写是Pulsar服务端最基本也是最重要的逻辑&#xff0c;今天就重点看看服务端是如何处理的读请求也就是消费者请求 正文 Pulsar服务端处理消费者请求的流程大致如下图所示 消费者通过TCP向服务端发起消息拉取请求Broker会根据请求中携带的ID来获取在服务端对应的…

Lua 和 Love 2d 教程 二十一点朴克牌 (上篇lua源码)

GitCode - 开发者的代码家园 Lua版完整原码 规则 庄家和玩家各发两张牌。庄家的第一张牌对玩家是隐藏的。 玩家可以拿牌&#xff08;即拿另一张牌&#xff09;或 停牌&#xff08;即停止拿牌&#xff09;。 如果玩家手牌的总价值超过 21&#xff0c;那么他们就爆掉了。 面牌…

WIFI|软体 茶凳浅谈 高通WIN QSDK - IPQ6000 与 88Q2112 的相遇

Qualcomm IPQ 系列的Ethernet IC 搭配的有 QCA8075, QCA8081 … 等等Qualcomm自家出产的芯片。QSDK中内建可以支持的3rd party芯片&#xff0c;却寥寥可数。日前&#xff0c;客户使用车载以太网 - 88Q2112 - Marvell与IPQ6000做搭配。将之记录下来&#xff0c;以供参考。 方…

传输层 --- TCP (下篇)

目录 1. 超时重传 1.1. 数据段丢包 1.2. 接收方发送的ACK丢包 1.3. 超时重传的超时时间如何设置 2. 流量控制 3. 滑动窗口 3.1. 初步理解滑动窗口 3.2. 滑动窗口的完善理解 3.3. 关于快重传的补充 3.4. 快重传和超时重传的区别 4. 拥塞控制 4.1. 拥塞控制的宏观认识…

2024年华为OD机试真题-推荐多样性-Java-OD统一考试(C卷)

题目描述&#xff1a; 推荐多样性需要从多个列表中选择元素&#xff0c;一次性要返回N屏数据&#xff08;窗口数量&#xff09;&#xff0c;每屏展示K个元素&#xff08;窗口大小&#xff09;&#xff0c;选择策略&#xff1a; 1. 各个列表元素需要做穿插处理&#xff0c;即先从…

新版HI3559AV100开发注意事项(三)

新版HI3559AV100开发注意事项&#xff08;三&#xff09; 十九、用的sdk是Hi3559V200_MobileCam_SDK_V1.0.1.5 播放AAC音频文件&#xff0c;adec->ao;adec的初始化里面包括了aaclc解码器的注册&#xff0c;可是在HI_MPI_ADEC_RegisterDecoder(&s32Handle, &stAac);…

一篇文章带你学会7大基本算法(2024最新保姆级教程)

&#x1f3e0;个人主页&#xff1a;尘觉主页 文章目录 算法 - 排序约定选择排序冒泡排序插入排序希尔排序归并排序1. 归并方法2. 自顶向下归并排序3. 自底向上归并排序 快速排序1. 基本算法2. 切分3. 性能分析4. 算法改进4.1 切换到插入排序4.2 三数取中4.3 三向切分 5. 基于切…

vue 打包 插槽 inject reactive draggable 动画 foreach pinia状态管理

在Vue项目中&#xff0c;当涉及到打包、插槽&#xff08;Slots&#xff09;、inject/reactive、draggable、transition、foreach以及pinia时&#xff0c;这些都是Vue框架的不同特性和库&#xff0c;它们各自在Vue应用中有不同的用途。下面我将逐一解释这些概念&#xff0c;并说…