css中的浮动和BFC

CSS中的浮动和BFC

CSS是构建网页布局的基础。其中,浮动和BFC两个概念都可以用来控制元素的位置和布局。在本文中,我们将详细介绍这两个概念的含义、作用和使用方法,并提供示例代码。

浮动

浮动是一种让元素脱离文档流并向左或右移动的布局方式。浮动的主要作用是实现文字环绕图片或其他元素的效果。但是,如果使用不当,浮动也可能会导致页面布局混乱或出现意外问题。

使用方法

使用浮动需要设置元素的float属性为leftright。例如,以下代码会将图片向左浮动:

--- -
  ------ -----
-

注意事项

  1. 浮动元素脱离了文档流,可能导致父元素高度塌陷。为了避免这种情况,可以给父元素添加overflow:autoclear:both属性。
  2. 浮动元素默认是块级元素,但可以通过设置display属性改为行内块级元素。
  3. 浮动元素会影响后面元素的布局,需要小心使用。

BFC

BFC全称为Block Formatting Context(块级格式化上下文),它是一个独立的渲染区域,可以用来解决浮动元素带来的布局问题。BFC具有以下特性:

  1. BFC中的元素垂直方向上会形成一个封闭的空间,并且不会影响到外部元素。
  2. BFC中的元素会按照规定的方式排列,不会受到浮动元素的影响。
  3. BFC中的两个相邻元素之间的垂直边距会发生重叠。

使用方法

创建BFC有多种方式,常见的有以下几种:

  1. 给元素设置floatposition: absolutedisplay: inline-block属性;
  2. 给元素设置overflow为非visible值,如autohidden

例如,以下代码会创建一个包含两个浮动元素的BFC:

---- ------------------
  ---- -----------------------
  ---- ------------------------
  ---- --------------------
------
---------- -
  --------- ------- -- ----- --
-

----- -
  ------ -----
  ------ ----
-

------ -
  ------ ------
  ------ ----
-

------ -
  ------ -----
-

注意事项

  1. 如果一个元素创建了BFC,则其所有子元素都在同一个BFC中,因此也无法影响到外部元素。
  2. 使用BFC可以避免一些常见的布局问题,如浮动元素引起的高度塌陷和边距重叠等。

示例代码

为了更好地理解浮动和BFC的使用方法,以下是一个简单的示例代码。该代码实现了左侧固定宽度、右侧自适应宽度的两栏布局,并避免了浮动元素带来的高度塌陷问题。

---- ------------------
  ---- -----------------------
  ---- ------------------------
  ---- --------------------
------
---------- -
  --------- ------- -- ----- --
-

----- -
  ------ -----
  ------ ------
  ----------------- -----
-

------ -
  ------------ ------ -- ---

---------------------------------------------------------- ----------
-------------------------------------------------------------------------------------
  

猜你喜欢

  • Ajax:从回调地狱到async和await

    Ajax: From Callback Hell to Async/Await Ajax (Asynchronous JavaScript and XML) is a technique used i...

    7 年前
  • 从零开始写一个 Web 视频播放器

    Web 视频播放器是前端开发中非常常见的组件,下面将介绍如何从零开始编写一个基础的 Web 视频播放器,并实现以下功能: 加载视频 播放/暂停视频 调整音量 进度条控制视频播放位置 全屏模式 开始...

    7 年前
  • 深入CSS优先级

    在前端开发中,理解CSS优先级是非常重要的。它可以决定哪些样式将应用于元素,以及如何覆盖其他样式。本篇文章将深入探讨CSS优先级,并提供一些示例代码和指导意义。 什么是CSS优先级? 在CSS中,每个...

    7 年前
  • 一个 VUE 组件:实现子元素 scroll 父元素容器不跟随滚动(兼容PC、移动端)

    如何实现 Vue 组件:子元素滚动时父元素不跟随滚动 在 Vue 中,我们经常需要实现一个容器内部可以滚动的组件。但有时候,我们希望在这个组件中放置一些固定位置的元素,例如页眉、页脚或者一些悬浮的操作...

    7 年前
  • 深入理解React源代码 IV (文预览版)

    In-Depth Understanding of React Source Code IV This is the fourth part of our deep dive into the Rea...

    7 年前
  • 使用 Karma + Jasmine 构建 Web 测试环境

    在开发 Web 应用程序时,测试工具是不可缺少的。Karma 和 Jasmine 是两个最流行的前端测试工具之一,可以帮助您构建一个有效且可靠的测试环境。本文将介绍如何使用 Karma 和 Jasmi...

    7 年前
  • 常见 Web 安全攻防总结

    Web 应用程序的安全性一直是前端开发人员需要考虑的重要问题。在本文中,我们将讨论常见的 Web 安全攻防,并提供一些深入的解释和实用建议。 XSS 攻击 跨站脚本攻击(XSS)是一种常见的Web攻击...

    7 年前
  • 微信跳一跳最直观的辅助

    微信跳一跳是一款受欢迎的小游戏,玩家需要控制小人跳跃到下一个方块上,难度逐渐增加。在游戏过程中,有些玩家可能会使用外部工具来帮助完成游戏,这篇文章介绍的就是其中一种最直观的辅助方式。

    7 年前
  • 在网页上如何使用 Variable Fonts

    Variable Fonts 是一种新兴的字体技术,它可以通过控制一个字体文件中的属性来实现连续而平滑的字体变化,例如字符宽度、粗细度、倾斜度等。这种灵活性为前端开发者带来了更多的自由度和创意空间,因...

    7 年前
  • 自己参考两个仓库撸的通用的vue2.0+elementUI+多页面模板

    用 Vue2.0 和 ElementUI 搭建多页面模板 在前端开发中,我们常常需要使用多页面应用程序来满足不同的业务需求。本文将介绍如何使用 Vue2.0 和 ElementUI 搭建一个通用的多页...

    7 年前
  • 简单的 Vue SSR Demo

    前言 Vue.js 是一款流行的前端框架,它提供了强大的数据绑定、组件化和渲染功能。在 Web 应用程序中,服务器端渲染(Server-Side Rendering,SSR)是一项重要的技术,它可以提...

    7 年前
  • 利用Vue、Socket.io 实现在线五子棋对战

    在本文中,我们将介绍如何使用Vue和Socket.io创建一个实时在线五子棋游戏。此示例代码将包括前端和后端的代码。 前端准备 首先,我们需要使用Vue CLI生成一个新项目。

    7 年前
  • 冲顶大会有前端什么事吗?

    在冲顶大会这类答题直播节目中,前端技术扮演着非常重要的角色。本文将探讨冲顶大会中前端技术的应用和指导意义。 前端技术在冲顶大会中的应用 1. 页面渲染 冲顶大会等答题直播节目需要实时展示问题、答案等内...

    7 年前
  • webpack对于公共资源的提炼之webpack.optimize.CommonsChunkPlugin

    Webpack对于公共资源的提炼之webpack.optimize.CommonsChunkPlugin Webpack是一个强大的前端构建工具,它可以将多个模块打包成一个或多个bundle文件。

    7 年前
  • 更快地构建 DOM: 使用预解析, async, defer 以及 preload

    更快地构建 DOM: 使用预解析, async, defer 以及 preload 在现代 Web 应用程序中,DOM 构建速度变得越来越重要。当用户访问网站时,如果页面加载速度太慢,他们可能会感到不...

    7 年前
  • canvas开发手册

    Canvas 开发手册 Canvas 是一个 HTML5 标准中定义的用于绘制图形的 API,通过 JavaScript 可以控制画布上的每一个像素点,实现图形、动画等效果。

    7 年前
  • HTML 文档之 Head 最佳实践

    在编写 HTML 页面时,<head> 元素是一个重要的部分。它包含了许多与页面相关的信息,例如标题、关键字、样式表等等。本文将为您介绍一些关于<head>元素的最佳实践。

    7 年前
  • 聊聊 JavaScript 与浏览器的那些事 - 引擎与线程

    JavaScript 是一门广泛应用于网页交互和前端开发的语言。在浏览器中,它是由 JavaScript 引擎来解释和运行的。但是,JavaScript 的执行不仅仅涉及到引擎。

    7 年前
  • Bright UI v0.1.0:一套简约优雅的React组件库

    Bright UI v0.1.0: 一套简约优雅的React组件库 Bright UI v0.1.0是一套基于React框架构建的前端UI组件库,设计风格简约、优雅,并且易于使用。

    7 年前
  • React水印组件,支持图片水印,文字水印

    React水印组件:支持图片和文字水印 在网站和应用程序中使用水印可以增加版权保护和安全性,同时提高用户体验。在这篇文章中,我们将分享如何使用React来创建一个水印组件,该组件支持图片和文字水印,并...

    7 年前

相关推荐

    暂无文章