html+css 浮动、清除浮动、什么是BFC?、如何开启BFC

浮动

介绍:

  • 其实早期的浮动是用来文字环绕图片效果,但是后来发现浮动还可以设置页面布局问题

  • 块元素在文档流中默认垂直排列,如果希望块元素在页面中水平排列,可以使块元素脱离文档流

特点:

  • 哪个元素设置浮动,哪个元素就会脱离文档流

  • 如果给上边的元素设置浮动时,下边的元素就会跑到上边元素的位置上,上边元素会覆盖住下边的元素(原因是上面的元素已经脱离了文档流,不占据位置)

  • 脱离文档流的元素,默认在父元素的顶部,不会超出父元素的内容

  • 脱离文档流的元素不再区分块和行内,统一会变成行内块

  • 无论浮动的元素是右还是左浮动,下面的元素都会默认朝左上角

  • 如果父元素设置了padding,那么浮动的子元素不会超出padding以外

  • 元素浮动主要就是为了元素之间在一行排列(页面布局问题)

  • 浮动的元素并不是根据上下排列的顺序来设置左右浮动,每个元素可以任意设置浮动位置

  • 如果上下元素都浮动了,他们就会按照顺序进行排列

  • 如果上边有元素未设置浮动,下边设置浮动的元素会被挡住

清除浮动

clear属性

清除浮动,指定段落的左侧或右侧不允许浮动的元素

属性描述
right清除向右浮动的元素
left清除向左浮动的元素
both清除左右浮动的元素

方法一:额外标签法(w3c提出,不推荐)

是给最后一个浮动的元素后面添加一个空标签,给空标签设置clear属性清除浮动

原理:

额外标签法主要就是调整额外标签的自身,通过调整自身来使自己不要和浮动元素排列在一起。

缺点:

如果页面中出现很多的浮动,就需要添加很多空标签清除浮动,就会导致很繁琐,所以不推荐

方法二:给父元素添加overflow属性(不推荐)

给父元素添加overflow属性非visible属性值(auto、scroll、hidden)

缺点:

如果子元素内容过多会出现隐藏问题,或者页面布局发生改变,不常用此属性

方法三:给父元素设置after伪元素

伪元素创建的元素是行内元素

其实原理和额外标签法类似

        /*只写一个冒号是为了兼容其他浏览器不支持::*/     .clearfix:after {/*伪元素创建的元素是行内元素*//*content值要加一个小点,为了防止低版本浏览器解析时出现空隙问题*/content: ".";/* 转化为块元素*/display: block;height: 0;/*隐藏content里面的小点*/visibility: hidden;/*清除浮动*/clear: both;}/*以下是为低版本浏览器做的适配*/.clearfix {*zoom: 1;/*  星号代表了只有ie6和ie7才会解析这段代码,zoom是ie6和ie7的清除浮动方法  */}

方法四:给父元素添加双伪元素after before (推荐)

 .clearfix:before,.clearfix:after {content: "";display: table;/*触发BFC*/clear: both;}

BFC

页面元素中的隐含属性:Block Formatting Context 即块格式化上下文,简称BFC

当开启元素的BFC以后,元素会变成一个独立的布局区域,不会在布局上影响到外面的元素

BFC 理解为一个封闭的大箱子,箱子内部的元素不会影响到外部。

开启BFC后,元素将会具有如下的特性:
  1. 父元素的垂直外边距不会和子元素重叠

  2. 开启BFC的元素不会被浮动元素所覆盖

  3. 开启BFC的元素可以包含浮动的子元素(可解决高度塌陷)

如何开启元素的BFC
  1. 设置元素浮动(不推荐)

    • 使用这种方式开启,虽然可以撑开父元素,但是会导致父元素的宽度丢失

    • 而且使用这种方式也会导致下边的元素上移,不能解决问题

  2. 设置元素为inline-block(不推荐)

    • 可以解决问题,但是会导致宽度丢失,不推荐使用这种方式

  3. 将元素的overflow设置为一个非visible的值 (推荐)

    • scrollautohidden

  4. 设置元素绝对定位

    • 元素也会脱离文档流,虽然可以撑开父元素,但是会导致父元素的宽度丢失

    • 而且使用这种方式也会导致下边的元素上移,不能解决问题

推荐方式:将overflow设置为hidden是副作用最小的开启BFC的方式

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

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

相关文章

VUE3,自定义控制keep-alive缓存

安装插件 npm install vite-plugin-vue-setup-extend --save 在vite.config.ts中 import VueSetupExtend from vite-plugin-vue-setup-extend ..... plugins:[ vue(), VueSetupExtend(), ..... ] useKeepalive.ts import { ref } from "vue" export const…

win10系统postgresql重装软件后原数据如何迁移

1、备份postgresql安装目录下的data文件夹 2、重新安装postgresql同一版本的软件 3、停止postgresql-x64-12服务 4、替换data文件夹 删除postgresql安装后新的的data文件夹 删除后将第一步备份的data文件夹粘贴过来,还是同一位置 5、启动postgresql-x64-12服务 …

树莓派调用usb摄像头(三)

查看是否检索到摄像头 因为我的摄像头是usb 的所以使用一下命令查看摄像头 安装fswebcam sudo apt-get install fswebcam输入以下命令,开启摄像头 fswebcam --no-banner -r 640x480 image3.jpg sudo apt-get install cmake libjpeg8-dev 提示:Packag…

配置dns主从服务器,能够实现正常的正反向解析

一.DNS域名服务器原理及作用等介绍 1.DNS简介: DNS是互联网上的一项服务,担任域名和IP地址相互映射的一个分布式数据库,相较于IP,域名更便于记忆能够使人更方便的访问互联网。但是计算机只能基于IP来识别对方,而且要上…

vue3+ts+vite配置项目引入@surely-vue/table less报错

在项目当中报错Inline JavaScript is not enabled. Is it set in your options? 修改配置如下: return {css: {preprocessorOptions: {less: {javascriptEnabled: true //开启less编译,注意:这个很重要}}},}

怿星科技测试实验室获CNAS实验室认可,汽车以太网检测能力达国际标准

2023年12月27日,上海怿星电子科技有限公司测试实验室(下称:EPT LABS)通过CNAS实验室认可批准,并于2024年1月5日正式取得CNAS实验室认可证书(注册号CNAS L19826),标志着怿星科技的实验…

mysql group_concat函数使用

CREATE TABLE aa (id int(11) DEFAULT NULL,name varchar(50) DEFAULT NULL ) ENGINEInnoDB DEFAULT CHARSETutf8mb41、基本查询 SELECT * FROM aa;2、以id分组,把name字段的值打印在一行,逗号分隔(默认) select id,group_concat(name) from aa group …

mac pro “RESP.app”意外退出 redis desktop manager

文章目录 redis desktop manager下载地址提示程序含有恶意代码“RESP.app”意外退出解决办法:下载python3.10.并安装重新打开RESP如果还是不行,那么需要替换错误路径(我的没用)外传 最近在研究redis的消息,看到了strea…

iOS UI掉帧和卡顿优化解决方案记录

UI卡顿原理 在 VSync 信号到来后,系统图形服务会通过 CADisplayLink 等机制通知 App,App 主线程开始在 CPU 中计算显示内容,比如视图的创建、布局计算、图片解码、文本绘制等。随后 CPU 会将计算好的内容提交到 GPU 去,由 GPU 进行…

vba设置excel单元格背景色

vba设置excel单元格背景色位蓝色 Sheet1.Cells(hang, 2).Interior.Color RGB(0, 0, 255) 参考链接 【VBA】给单元格设置背景色_vba 将一行底色置绿色-CSDN博客https://blog.csdn.net/s_h_m114_2/article/details/105787093 参考2 知乎 VBA--单元格的背景色设置 特此…

一文读懂【北交所】开通条件及交易规则!

近期市场持续萎靡不振,北交所却在大涨调整后,还能继续拉升,前些天还打起了“麻将”,“东南西北中”花式齐飞。这带给投资者朋友们极大的信心!那么有些朋友还没有跟上吃肉,还不了解什么是北交所?…

GitLab Runner 实现项目 CI/CD 发布

Gitlab Runner简介 Gitlab实现CICD的方式有很多,比如通过Jenkins,通过Gitlab Runner等,今天主要介绍后者。Gitlab在安装的时候,就默认包含了Gitlab CI的能力,但是该能力只是用于协调作业,并不能真的去执行…

如何使用Docker一键部署WBO白板并实现固定公网地址远程访问

文章目录 前言1. 部署WBO白板2. 本地访问WBO白板3. Linux 安装cpolar4. 配置WBO公网访问地址5. 公网远程访问WBO白板6. 固定WBO白板公网地址 前言 WBO在线协作白板是一个自由和开源的在线协作白板,允许多个用户同时在一个虚拟的大型白板上画图。该白板对所有线上用…

在线项目实习|2024寒假项目实战火热报名中!

一、在线实习项目分类 二、在线实习项目流程 三、在线实习项目优惠及项目特色 1、师傅带练教学模式,手把手教你掌握 采用“师带徒”的教学模式,课程以“项目前置知识学习 师傅带练 项目实战”贯穿,强调动手实操,内容以代码落地为…

cellchat安装

官方安装文档: GitHub - jinworks/CellChat: R toolkit for inference, visualization and analysis of cell-cell communication from single-cell and spatially resolved transcriptomics 我安装过的命令: install.packages(NMF) devtools::instal…

python的random模块

random模块是Python中用于生成伪随机数的模块。它提供了一系列的函数和类,可以用于生成随机数、随机选择和随机排列等操作。以下是一些常用的random模块函数和类的示例用法: random.random():生成一个0到1之间的随机浮点数。 import random…

Linux中安装字体

问题说明 wps 安装后打开文件部分字体出现乱码,原因主要是linux中缺少windows中的相关字体,只要从windows电脑中的字体拷贝到linux系统中并安装就能解决问题 对ubuntu 和manjora有效。 安装字体 字体下载地址可参考附录 在 Linux 中,一次…

vue3 + tsrpc +mongodb 实现后台管理系统

前言 之前上线了一个vue后台管理系统,有小伙伴问我有没有后端代码,咱只是个小前端,这就有点为难我了。不过不能辜负小伙伴的信任,nodejs也可以啊,废话不多说,开搞!后端采用 TSRPC 框架实现 API…

【深度学习目标检测】十五、基于深度学习的口罩检测系统-含GUI和源码(python,yolov8)

YOLOv8是一种物体检测算法,是YOLO系列算法的最新版本。 YOLO(You Only Look Once)是一种实时物体检测算法,其优势在于快速且准确的检测结果。YOLOv8在之前的版本基础上进行了一系列改进和优化,提高了检测速度和准确性。…