当前位置: 首页 > news >正文

深入解析浮动布局及其在现代Web开发中的应用与替代(浮动的概念及应用、如何清除浮动、使用Flex布局和Grid布局的区别、使用`float`布局的历史和现状)

文章目录

  • 1. 引言
  • 2. 浮动的概念及应用
  • 3. 如何清除浮动
  • 4. 使用Flex布局和Grid布局的区别
  • 5. 使用`float`布局的历史和现状
  • 6. 综合案例展示
  • 7. 结论
  • 8. 建议

1. 引言

在CSS布局的历史中,float属性曾是网页布局的主要工具之一。然而,随着现代布局技术(如FlexboxGrid)的兴起,float布局逐渐被替代。本博客将探讨float的概念、应用、清除浮动的方式,以及现代布局技术FlexGrid的区别,并讨论float布局的历史和现状。


2. 浮动的概念及应用

CSS中的float属性用于将元素从正常的文档流中取出,使其向左或向右浮动,同时文本和内联元素会环绕在浮动元素的旁边。

float作用
left将元素向左浮动,其他内容围绕在元素的右边。
right将元素向右浮动,其他内容围绕在元素的左边。
none默认值,元素不浮动。

示例:简单的float布局

<div class="box" style="float: left;">左浮动</div>
<p>其他内容将会环绕在浮动元素旁边。</p>

浮动曾用于实现两列或多列布局,以及图文混排的效果。通过浮动左侧或右侧的元素,可以让文本围绕图片或其他内容。


3. 如何清除浮动

在使用浮动布局时,父元素往往无法自动包裹浮动的子元素,导致布局错乱。为了解决这个问题,必须清除浮动,常见的方法有以下几种:

  1. 使用clear属性:直接在后续元素上应用clear,阻止浮动影响。

    <div class="clear" style="clear: both;"></div>
    
    • clear: both; 表示元素不允许位于任何浮动元素的左右。
    • clear: left; 表示不允许位于左浮动元素的左侧。
    • clear: right; 表示不允许位于右浮动元素的右侧。
  2. 父元素设置overflow: hidden;:强制父容器包裹浮动元素。

    <div class="container" style="overflow: hidden;"><div class="box" style="float: left;">左浮动</div>
    </div>
    
  3. 使用伪元素清除浮动:在父元素上使用::after伪元素,常见的“清除浮动”类如下:

    .clearfix::after {content: "";display: table;clear: both;
    }
    

4. 使用Flex布局和Grid布局的区别

随着FlexboxGrid布局的引入,开发者有了更加灵活和直观的布局工具。它们在许多情况下取代了float布局。

布局方式定义及应用场景布局特点
Flexbox一维布局系统,主要用于行或列中的元素排列。常用于创建水平或垂直居中的布局。适合处理单行或单列布局,灵活性强,支持弹性空间分配和对齐。
Grid布局二维布局系统,适合处理复杂的网格布局,可同时处理行和列。适合多维网格布局,允许元素跨行、跨列,布局能力更强大。

Flex布局示例

<div class="container"><div class="item">Item 1</div><div class="item">Item 2</div>
</div><style>.container {display: flex;justify-content: space-between;}.item {width: 45%;}
</style>

Grid布局示例

<div class="grid-container"><div class="item">Item 1</div><div class="item">Item 2</div>
</div><style>.grid-container {display: grid;grid-template-columns: repeat(2, 1fr);}
</style>
  • Flex适用于内容动态变化的场景,例如弹性盒子布局。
  • Grid适用于静态网格布局,布局更加明确且有控制力。

5. 使用float布局的历史和现状

  • 历史float属性最早用于实现文本环绕图片的效果。然而,随着网页设计需求的增加,开发者开始使用float实现多列布局,甚至整个页面的布局。尽管这不是float的设计初衷,但在没有更好的布局工具时,它成为了主流选择。

    • 早期网页布局常常用到float来创建复杂的两列或三列布局,并配合清除浮动的技巧来保持页面的整洁。
  • 现状:随着FlexboxGrid布局的出现,float逐渐退出了主要布局工具的舞台。现代网页设计倾向于使用更语义化和灵活的布局工具,如Flexbox来处理一维布局,Grid来处理复杂的二维布局。


6. 综合案例展示

下面是一个示例,通过float实现两列布局并清除浮动,同时展示如何使用Flexbox替代该布局:

浮动布局

<div class="container"><div class="left" style="float: left; width: 45%;">左侧内容</div><div class="right" style="float: right; width: 45%;">右侧内容</div><div class="clear" style="clear: both;"></div>
</div>

Flex布局

<div class="container" style="display: flex; justify-content: space-between;"><div class="left" style="width: 45%;">左侧内容</div><div class="right" style="width: 45%;">右侧内容</div>
</div>

在这个案例中,Flexbox更简单直接,并且不需要处理浮动和清除浮动的问题。


7. 结论

虽然float在CSS布局的早期占据了重要位置,但随着FlexboxGrid的出现,现代开发者已经有了更加适合和强大的工具来处理网页布局。尽管如此,理解float的原理及其应用仍然对前端开发者来说非常重要,尤其是在处理老旧代码或特殊布局需求时。


8. 建议

  • 使用float时要清楚它的局限性,尤其在现代布局中尽量避免。
  • 优先使用FlexboxGrid来处理复杂布局,以简化代码和提升布局灵活性。
  • 在处理旧项目或兼容性问题时,仍需掌握float的清除技巧。

相关文章:

深入解析浮动布局及其在现代Web开发中的应用与替代(浮动的概念及应用、如何清除浮动、使用Flex布局和Grid布局的区别、使用`float`布局的历史和现状)

文章目录 1. 引言2. 浮动的概念及应用3. 如何清除浮动4. 使用Flex布局和Grid布局的区别5. 使用float布局的历史和现状6. 综合案例展示7. 结论8. 建议 1. 引言 在CSS布局的历史中&#xff0c;float属性曾是网页布局的主要工具之一。然而&#xff0c;随着现代布局技术&#xff0…...

WPF基础权限系统

一.开发环境 VisualStudio 2022NET SDK 8.0Prism 版本 8.1.97Sqlite 二. 功能介绍 WPF 基础权限系统&#xff0c;是一个支持前后端分离设计的 客户端(C/S)项目&#xff0c;该示例项目前端xaml使用UI库 &#xff0c;Material Design Themes UI 来构建用户界面&#xff0c;确保…...

【Java函数篇】Java 8 Predicate函数接口的用法详解

为什么介绍Predicate 自从Java8发布以后&#xff0c;代码里面就多了很多函数式的接口和代码。在流式的编程中&#xff0c;我们经常会用到Predicate和其他函数&#xff0c;在一些开源的代码中也会看到别人定义的Predicate方法。但其实你有没有感觉在写代码的经历中&#xff0c;…...

C++ 一个反射的例子

在 C 中实现反射机制&#xff0c;虽然不像其他高级语言那样直接&#xff0c;但可以通过宏、模板和注册系统等技术来实现一个简易的反射系统。下面是一个完整的 C 反射机制示例&#xff0c;通过自定义类注册系统和宏定义&#xff0c;实现类的名称、属性、方法的反射 。 #includ…...

vue3 解决背景图与窗口留有间隙的问题

需要实现一个登录界面&#xff0c;login.vue的代码如下&#xff1a; <script> import { ref } from vue;export default {setup() {return {};}, }; </script><template><div id"login-container" class"login-container"><di…...

Cesium for UE-04-一些说明

目前主要做webgis的工作&#xff0c;UE官方对web的支持截止到了4.23版本&#xff0c;即使是4.23版本之后的4.xx版本也有办法支持&#xff0c;已经有大佬开源了一些方法和工具&#xff0c;不再介绍。即使是4.23想要输出为h5&#xff0c;也是有一定的折腾门槛的。最重要的是【Ces…...

AIGC:开启智能创造的璀璨新篇章

在当今科技迅猛发展的时代浪潮中&#xff0c;人工智能&#xff08; Artificial Intelligence , AI &#xff09;已然历经了从早期的计算智能、感知智能逐步迈向认知智能的辉煌历程。而在这一进程中&#xff0c; AI 生成内容&#xff08; Artificial Intelligence Generated Con…...

计算机组成原理与系统结构——外部存储器

笔记内容及图片整理自XJTUSE “计算机组成原理与系统结构” 课程ppt&#xff0c;仅供学习交流使用&#xff0c;谢谢。 磁盘 磁盘是一个由非磁性材料构成的圆形盘片&#xff08;称为基片&#xff09;&#xff0c;上面涂抹可磁化材料。传统的基片一直是铝制或铝合金的&#xff0…...

如何使用 Browserless 抓取动态网站?

什么是动态网页&#xff1f; 动态网页是指其内容并非完全直接嵌入在静态HTML中&#xff0c;而是通过服务器端或客户端渲染生成的网页。 它可以根据用户的操作实时显示数据&#xff0c;例如在用户点击按钮或向下滚动页面时加载更多内容&#xff08;如无限滚动&#xff09;。这…...

第21~22周Java主流框架入门-Spring 2.SpringAOP面向切面编程

1.Spring AOP (Aspect-Oriented Programming) 1. 1. 什么是 Spring AOP&#xff1f; AOP&#xff08;面向切面编程&#xff09; 是 Spring 提供的一种可插拔的组件技术&#xff0c;允许我们在软件运行过程中添加额外的功能。场景&#xff1a;假设有两个模块&#xff0c;用户管…...

Flutter不常用组件----InteractiveViewer

在现代移动应用开发中&#xff0c;用户互动性是提升体验的关键。Flutter 提供了多种组件来帮助开发者实现丰富的交互功能&#xff0c;其中一个强大的组件便是 InteractiveViewer。它允许用户通过手势对内容进行缩放、平移和旋转&#xff0c;适用于需要用户查看大图、地图或者其…...

【LeetCode HOT 100】详细题解之二分查找篇

【LeetCode HOT 100】详细题解之二分查找篇 35 搜索插入位置思路代码(左闭右闭)代码(左闭右开) 74 搜索二维矩阵思路代码(左闭右闭) 34 在排序数组中查找元素的第一个和最后一个位置思路代码 33 搜索旋转排序数组思路代码 153 寻找旋转排序数组中的最小值思路代码 4 寻找两个正…...

管理篇(顶级思维模型(31个))(待做)

目录 一、成长进阶模型 二、优势探索模型 三、优势层次模型 四、人生定位模型 五、看懂人性模型 六、如何抉择模型 七、本质思考模型 八、心流模型 九、精力管理模型 十、高效沟通模型 十一、100%传递模型 十二、高效倾听模型 十三、高效表达模型 十四、精准提问模…...

十一、数据库配置

一、Navicat配置 这个软件需要破解 密码是&#xff1a;123456&#xff1b; 新建连接》新建数据库 创建一个表 保存出现名字设置 双击打开 把id设置为自动递增 这里就相当于每一次向数据库添加一个语句&#xff0c;会自动增长id一次 二、数据库的增删改查 1、Vs 建一个控…...

day02 -- docker

1.docker的介绍 Docker 是一个开源的应用容器引擎&#xff0c;基于 Go语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。容器是完全使…...

ecmascript标准

1. 简介 1.1. 概述 ECMAScript(简称ES)是JavaScript编程语言的一个标准化版本。它是为网络开发设计的一种轻量级的脚本语言,主要用于在网页上实现交互性和动态效果。ECMAScript是该语言的标准名称,而JavaScript是其最知名和广泛使用的实现。 1.2. 特点 跨平台性 :ECMAS…...

在Linux命令行中一行执行多个命令

原文地址链接: https://kashima19960.github.io/2024/10/22/Linux/在Linux命令行中一行执行多个命令/&#xff0c;一般有最新的修改都是在我的个人博客里面&#xff0c;所以在当前平台的更新会比较慢&#xff0c;请见谅&#x1f603; 前言 在shell中一个一个命令行&#xff0c…...

u盘快速格式化后怎么恢复文件:深入解析与全面指南

U盘&#xff0c;凭借其小巧便携、易于使用的特点&#xff0c;成为了我们日常生活中不可或缺的数据存储工具。然而&#xff0c;有时为了清除病毒、解决文件系统错误或准备存储新数据&#xff0c;我们可能需要对U盘进行快速格式化。但这一操作往往伴随着一个严峻的问题&#xff1…...

青少年编程能力等级测评CPA C++(二级)试卷(2)

青少年编程能力等级测评CPA C&#xff08;二级&#xff09;试卷&#xff08;2&#xff09; 一、单项选择题&#xff08;共20题&#xff0c;每题3.5分&#xff0c;共70分&#xff09; CP2_2_1&#xff0e;下列C程序段中&#xff0c;对二维数组arr的定义不正确是&#xff08; &…...

aws 把vpc残留删除干净

最近忘了把vpc 删干净导致又被收了冤大头钱 在删除vpc 的收发现又eni在使用&#xff0c;但是忘了是哪个资源在占用 先用命令行把占用的资源找出来停掉 使用 AWS 命令行界面&#xff08;CLI&#xff09;来查看 VPC 的使用情况 列出子网&#xff1a; aws ec2 describe-subnets …...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

学习一下用鸿蒙​​DevEco Studio HarmonyOS5实现百度地图

在鸿蒙&#xff08;HarmonyOS5&#xff09;中集成百度地图&#xff0c;可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API&#xff0c;可以构建跨设备的定位、导航和地图展示功能。 ​​1. 鸿蒙环境准备​​ ​​开发工具​​&#xff1a;下载安装 ​​De…...