浮动布局与定位布局

目录

前言:

浮动布局(Float Layout):

  定位布局(Positioning Layout):

 1.传统布局:

 1.1文档流布局:

1.1.1基本的布局方式:

1.1.2 块级元素: 

1.1.3调整元素:

1.2浮动布局:

1.2.1浮动布局允许元素向左或向右浮动,使其周围的文本或其他元素环绕它。

1.2.2浮动元素会脱离正常的文档流,但仍然占据空间,并且会影响其他元素的布局。

1.2.3常用于实现多列布局、文本环绕图像等效果。

1.2.4需要注意清除浮动,以避免布局问题(如父元素高度塌陷)。

1.3定位布局:

1.3.1定住指定位置:

1.3.1相对定位:

1.3.1绝对定位:

2.目前主流的Flex布局(弹性盒模型):

2.1lex布局:

2.2Flex布局基于两条轴进行布局:

2.3设置容器的 display 属性:

2.4Flex布局适用地方:

3.浮动篇:

3.1浮动的基本概念和用法:

3.1.1浮动方向:

3.1.2脱离文档流:

3.1.3边界行为:

3.2浮动的应用:

3.2.1图文环绕:

3.2.2水平布局:

3.3浮动的注意事项:

3.3.1父元素高度塌陷:

3.3.1元素重叠:

4.定位篇(position):

4.1定位的基本概念和用法:

4.1.1绝对定位(absolute):

4.1.2相对定位(relative):

4.2定位的方向和距离:

4.2.1定位元素的基本操作:

4.2.2定位元素的使用方法:

4.3父相子绝技巧:

4.3.1布局技巧:

4.3.2常用技巧:

4.5z-index属性:

结语:


前言:

今天我们来分享一下关于浮动布局和定位布局,以下是对二者的一个介绍:

浮动布局(Float Layout):

浮动布局在CSS中是一种非常重要的布局技术,它允许元素沿着其容器的左侧或右侧浮动,同时其他内容会环绕它。浮动最初是为了实现文本环绕图像的效果而设计的,但随后它被广泛用于创建多列布局和各种复杂的页面布局。

当元素被设置为浮动时,它会脱离正常的文档流,但仍然会占据空间(即它会影响布局)。浮动元素之后的元素会围绕它流动,这种特性使得浮动布局在实现多栏布局时特别有用。然而,浮动布局也有一些挑战,比如清除浮动(clearing floats),以确保父元素能够正确地包含其浮动的子元素。

浮动布局的优点包括灵活性高、能够实现复杂的布局效果以及响应式设计。但缺点也很明显,比如需要额外注意清除浮动、布局容易受到外部因素影响等。

  定位布局(Positioning Layout):

定位布局是CSS中另一种强大的布局技术,它允许开发者将元素精确地放置在页面上的任何位置。定位布局基于坐标系统,其中元素的定位可以通过设置toprightbottomleft属性来控制。

定位布局有两种主要类型:相对定位(relative positioning)和绝对定位(absolute positioning)。相对定位是相对于元素在文档流中的原始位置进行定位,而绝对定位是相对于最近的已定位祖先元素(即设置了position属性为relativeabsolutefixed的元素)进行定位。如果没有已定位的祖先元素,绝对定位的元素将相对于初始包含块(通常是视口或页面)进行定位。

定位布局的优点在于它能够提供精确的布局控制,使元素能够准确地出现在指定的位置。这种布局方式在实现需要精确对齐或重叠元素的复杂布局时特别有用。然而,定位布局也有一些缺点,比如需要额外注意定位上下文和层叠顺序(z-index)等问题。

 

 1.传统布局:

 1.1文档流布局:

1.1.1基本的布局方式:

这是最基本的布局方式,其中网页元素按照其在HTML代码中的顺序从上到下、从左到右进行排列。

1.1.2 块级元素: 

块级元素(如 <div><p> 等)默认独占一行,而行内元素(如 <span><a> 等)则与其他行内元素并排显示。

1.1.3调整元素:

通过调整元素的 marginpaddingdisplay, 和 line-height 等属性,可以控制元素在页面上的位置和外观。

1.2浮动布局:

1.2.1浮动布局允许元素向左或向右浮动,使其周围的文本或其他元素环绕它。

1.2.2浮动元素会脱离正常的文档流,但仍然占据空间,并且会影响其他元素的布局。

1.2.3常用于实现多列布局、文本环绕图像等效果。

1.2.4需要注意清除浮动,以避免布局问题(如父元素高度塌陷)。

1.3定位布局:

1.3.1定住指定位置:

通过设置元素的 position 属性为 relative(相对定位)或 absolute(绝对定位),可以将元素定位在指定位置。

1.3.1相对定位

元素相对于其正常位置进行定位。即使移动了元素,它仍然占据其原始空间。

1.3.1绝对定位

元素相对于最近的已定位祖先元素(或相对于初始包含块,如果没有已定位的祖先元素)进行定位。绝对定位的元素不占据空间,可以覆盖其他元素。

2.目前主流的Flex布局(弹性盒模型):

2.1lex布局:

lex布局是一种现代的、灵活的布局方式,允许容器中的项目以各种方式进行对齐、方向和顺序的控制。

2.2Flex布局基于两条轴进行布局:

主轴(默认为水平方向)和交叉轴(默认为垂直方向)。

2.3设置容器的 display 属性:

通过设置容器的 display 属性为 flex 或 inline-flex,可以启用Flex布局。然后,可以使用各种Flex属性(如 flex-directionflex-wrapjustify-contentalign-items 等)来控制项目的布局和对齐方式。

2.4Flex布局适用地方:

Flex布局非常适合用于创建复杂的、响应式的布局,特别是当需要在不同屏幕尺寸和方向上保持布局的一致性时。

3.浮动篇:

3.1浮动的基本概念和用法:

3.1.1浮动方向

float属性主要有两个值,leftright,分别表示元素向左浮动和向右浮动。

3.1.2脱离文档流

浮动元素会脱离其正常的文档流位置,但仍然会占据空间(不同于绝对定位的元素,它们会从文档流中完全移除)。这意味着浮动元素后面的内容会围绕浮动元素流动。

3.1.3边界行为

浮动元素会一直浮动,直到它遇到父元素的边界或其他浮动元素。如果一行内空间不足,浮动的元素会下移到下一行。

3.2浮动的应用:

3.2.1图文环绕

这是浮动的原始用途,允许文本围绕图像流动。

3.2.2水平布局

利用浮动可以很容易地实现水平排列的盒子布局。相较于行内块元素,使用浮动进行水平布局具有更好的性能和可控性。

3.3浮动的注意事项:

3.3.1父元素高度塌陷

如果父元素只包含浮动元素,它可能会出现高度塌陷的情况,因为浮动元素不参与父元素的高度计算。解决这个问题的一种方法是使用“清除浮动”的技巧,例如添加一个空的块级元素并应用clear: both;样式。

3.3.1元素重叠

由于浮动元素会脱离文档流,它们可能会与正常流中的其他元素重叠,需要特别注意。

4.定位篇(position):

4.1定位的基本概念和用法:

4.1.1绝对定位(absolute)

元素会脱离正常的文档流,并且相对于其最近的已定位祖先元素(即设置了position属性为absoluterelativefixedsticky的元素)进行定位。如果没有已定位的祖先元素,它会相对于初始包含块(通常是视口或页面)进行定位。

4.1.2相对定位(relative)

元素相对于它在正常文档流中的位置进行定位。即使移动了元素,它仍然占据其原始空间。这意味着其他元素不会填补它移动后留下的空间。

4.2定位的方向和距离:

4.2.1定位元素的基本操作:

定位元素可以通过toprightbottomleft属性来指定其在各个方向上的偏移量。这些属性决定了元素相对于其定位上下文(对于绝对定位,是最近的已定位祖先元素;对于相对定位,是元素自身在正常文档流中的位置)的位置。

4.2.2定位元素的使用方法:

这些属性通常需要与定位类型(absoluterelative)一起使用才有效。单独设置这些属性而不设置定位类型通常不会产生任何效果。

4.3父相子绝技巧:

4.3.1布局技巧:

“父相子绝”是一种常见的布局技巧,其中父元素设置为相对定位,而子元素设置为绝对定位。这样,子元素会根据移动后的父元素的位置来定位自己,而不会受到其他元素的影响。

4.3.2常用技巧:

这种技巧在实现一些复杂的布局效果时非常有用,比如创建模态窗口、下拉菜单、提示框等。

4.5z-index属性:

当元素在页面上重叠时,可以使用z-index属性来控制它们的堆叠顺序。z-index值越大的元素在堆叠顺序中越靠上,因此会覆盖值较小的元素。

需要注意的是,z-index属性只对设置了定位(即position属性不为static)的元素有效。此外,具有相同z-index值的元素会按照它们在HTML代码中的顺序进行堆叠(后出现的元素会覆盖先出现的元素)。

结语:

今天的分享就先分享到这里了,这些内容都偏理论的知识了,不过学习就是这样需要持之以恒的坚持,莫道浮云遮蔽日,终有云开见日时。云城发韧,万里可期。我们一切的学习和努力无非是为了三个目标:'解释问题','解决问题','预测问题'。相信只要熬过这段低谷时光,自然会有未来的钟声敲响,我们是生生不息的火花,终将以灿烂为名,谢谢大家看到这里。

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

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

相关文章

docker启动卡死问题排查

问题&#xff1a;输入docker ps 或则vession 卡死&#xff0c;无任何输出 排查思路如下&#xff1a; 1、查看docker状态或者日志 journalctl -u docker.service 或者 systemctl status docker 3月 20 18:23:06 dfbpmyy2 dockerd[1114]: time"2024-03-20T18:23:06.7449…

SpringBoot整合Redis:缓存击穿--互斥锁解决

&#x1f389;&#x1f389;欢迎光临&#xff0c;终于等到你啦&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;持续更新的专栏Redis实战与进阶 本专栏讲解Redis从原理到实践 …

Python算法100例-4.5 最小公倍数

完整源代码项目地址&#xff0c;关注博主私信源代码后可获取 1.问题描述2.问题分析3.算法设计4.确定程序框架5.完整的程序 1&#xff0e;问题描述 求任意两个正整数的最小公倍数&#xff08;Least Common Multiple&#xff0c;LCM&#xff09;。 2&#xff0e;问题分析 如…

开源博客项目Blog .NET Core源码学习(12:App.Application项目结构分析)

开源博客项目Blog的App.Application项目主要定义网站页面使用的数据类&#xff0c;同时定义各类数据的增删改查操作接口和实现类。App.Application项目未安装Nuget包&#xff0c;主要引用App.Core项目的类型。   App.Application项目的顶层文件夹如下图所示&#xff0c;下面逐…

【Java程序设计】【C00352】基于Springboot的疫情隔壁酒店管理系统(有论文)

基于Springboot的疫情隔壁酒店管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 项目获取 &#x1f345;文末点击卡片获取源码&#x1f345; 开发环境 运行环境&#xff1a;推荐jdk1.8&#xff1b; 开发工具&#xff1a;eclipse以…

大学里女生适合做什么副业?这几个小副业最适合女生

大学里女生应该做什么样的副业合适&#xff1f;对于这个问题没办法给大家确定的答案&#xff0c;毕竟每个人能做什么&#xff0c;适合什么&#xff0c;要根据每个人的性格特点特长来看。 但是女生们不管做什么&#xff0c;尽量都不要选择做廉价劳动力的赚钱方式&#xff0c;因为…

STM32串口收发单字节数据原理及程序实现

线路连接&#xff1a; 显示屏的SCA接在B11&#xff0c;SCL接在B10&#xff0c;串口的RX连接A9&#xff0c;TX连接A10。 程序编写&#xff1a; 在上一个博客中实现了串口的发送代码&#xff0c;这里实现串口的接收代码&#xff0c;在上一个代码的基础上增加程序功能。 Seiral.…

【搞不明白】redis和mysql、mybatisplus有啥关系

一个解决三天的bug&#xff0c;到现在也没有搞明白&#xff0c;如题&#xff0c;到底redis和mysql、mybatisplus能有啥关系。三个不相关的嘛 记录下问题&#xff1a; (框架用的Jeecgboot 3.6.0) – 学习使用 看下面的一段代码&#xff0c;是一个分页查询&#xff1a;注意引用的…

mysql数据库表字段使用desc等关键字报错及解决方法

建议尽量避开关键字&#xff01;&#xff01;&#xff01; 如果实在必须用&#xff0c;那参考下面解决办法&#xff1a; 在要用到关键字的地方加反引号标识&#xff1a;

@EnableWebMvc 导致自定义序列化器失效

目录 前言 一. 自定义序列化器失效 1.1 EnableWebMvc 的作用 1.2 EnableWebMvc 带来了什么后果 1.3 原理分析 1.4 问题解决 二. 总结 前言 在使用Swagger的时候用 到了EnableWebMvc&#xff0c;发现之前为了解决Long类型、日期类型等自定义序列化器失效了 Configurati…

JavaScript、ES6与微信小程序:工具箱、升级与新房子

JavaScript、ES6和微信小程序三者之间有什么联系&#xff1f;我想&#xff0c;作为初学者还是有点蒙。下面作一个简单的分析&#xff0c;供大家参考。 首先,我们可以把JavaScript想象成一个非常强大的工具箱,里面装满了各种各样的工具。这些工具可以帮助我们完成各种任务,比如…

vivado 使用远程主机和计算群集

使用远程主机和计算群集 概述 AMD Vivado™集成设计环境&#xff08;IDE&#xff09;支持同时并行合成和实现的执行在多个Linux主机上运行。你可以做到这一点通过配置单个主机或指定要在其上启动作业的命令手动执行现有的计算集群。目前&#xff0c;Linux是Vivado唯一支持远程主…

书生浦语大模型实战营第一课笔记

书生浦语大模型全链路开源体系 课程笔记大模型的发展趋势InternLM2的主要亮点模型到应用的典型流程全链路的开源工具 InternLM2技术报告笔记大型语言模型的发展InternEvoModel Structure训练数据 课程笔记 第一节课主要对大模型进行介绍&#xff0c;特别是书生浦语大模型的发展…

【读书微言】The first summary

系列文章目录 文章目录 系列文章目录前言一、读书微言总结 前言 一、读书微言 强大的内心催生信念我们的生活是否幸福并不是依靠外在的环境&#xff0c;而是依靠我们内在的信念。要想成为自己命运的主宰&#xff0c;我们就必须形成自己的信念。只要我们能坚定自己的内在信念&…

认识线程(Thread)

目录 一、概念 1、 线程是什么 2、为啥要有线程&#xff1f; 3、进程和线程的区别 4、Java 的线程 和 操作系统线程 的关系 二、第⼀个多线程程序 三、创建线程 ⽅法1&#xff1a;继承 Thread 类 ⽅法2&#xff1a;实现 Runnable 接⼝ 对⽐上⾯两种⽅法: 其他变形 四、…

鸿蒙应用开发学习:用Marquee组件做个跑马灯

一、前言 鸿蒙应用的学习持续进行中&#xff0c;这两天阅读官方的API参考文档&#xff0c;发现一个有趣的组件——Marquee&#xff0c;用它做了个跑马灯&#xff0c;做个学习记录。 二、参考资料 官网文档链接如下&#xff1a; https://developer.huawei.com/consumer/cn/d…

【JVM】Java八股文之JVM篇

目录 一、JVM类加载与垃圾回收加载过程加载机制优点图解加载机制 分代回收分代垃圾回收新生代垃圾回收老年代垃圾回收 回收算法 一、JVM类加载与垃圾回收 面试过程中最经典的一题&#xff1a; 请你讲讲在JVM中类的加载过程以及垃圾回收&#xff1f; 加载过程 当Java虚拟机&…

双纤SFP光模块和单纤SFP光模块之间的区别

双纤SFP光模块和单纤SFP光模块是两种不同的光模块类型。对于网络部署而言&#xff0c;了解它们之间的区别至关重要。本文将深入探讨这两种光模块之间的差异&#xff0c;并介绍其特性和适用场景。 双纤与单纤SFP光模块&#xff1a;它们是什么&#xff1f; 双纤SFP光模块是常用…

回文子串 每日温度 接雨水

647. 回文子串 力扣题目链接 如果s【i】和s【j】相同 dp【i1】【j-1】也是回文串的话 &#xff08;等于true&#xff09; 那么dp【i】【j】也是回文串 true 定义一个bool二维数组 遍历顺序是从下到上 从左到右 因为dp【i】【j】是通过dp【i1】【j-1】推出来的 i从最后一…

120.龙芯2k1000-qt(19)-做了一个qt测试界面

主要接口和性能测试&#xff0c;主要针对的是龙芯2k1000. 以下是windows下的截图&#xff0c;大概功能就是这样吧&#xff0c;能想到的都想了一遍。 cpu的温度和频率采集不到&#xff0c;就没有放了。