css之position(定位)的理解

本文详细解析了CSS中的四种定位方式:static、relative、fixed和absolute的特点及应用。static为默认定位方式,relative为相对于自身位置偏移,fixed为相对于浏览器窗口固定位置,而absolute则根据最近的已定位父元素定位。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

css中的position(定位)有四个属性,比较容易搞混,这里做一个小结来区分方便以后的使用。

position的四个属性值:1.static     2.fixed     3.relative      4.absolute   

1.static定位:position的默认值,一般不设置position属性时,元素会按照正常的文档流进行排列。静态定位的元素不会受到top, bottom, left, right影响。

2.relative: 相对于本身的位置进行偏移(static定位下的元素位置为本身的位置,因为static不受top, bottom, left, right的影响),所以会发生与其他元素重叠的情况,但原本所占的空间不会改变(即static和relative在文档流中,与fixed和absolute相反)。相对定位元素经常被用来作为绝对定位元素的容器块。

3.fixed定位: 元素的位置相对于浏览器窗口是固定位置。即使窗口是滚动的它也不会随之移动。fixed定位使元素的位置与文档流无关,因此不占据空间。会与其他元素重叠。(总之,fixed是特殊的absolute)

4.absolute: 绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于<html>,即浏览器窗口。这句话可以做以下详解:                                                                                                                                                                                                               <div id="parent">
  <div id="sub1">sub1</div>
    <div id="sub2">sub2</div></div>                                                                                                                                                                                                                   当sub1的position设置为absolute后,其到底以谁为对象进行偏移呢?这里分为两种情况:
  (1).当sub1的父对象(或曾祖父,只要是父级对象)parent也设置了position属性,且position的属性值为absolute或者relative时,也就是说,不是默认值的情况,此时sub1按照这个parent来进行定位。
  注意,对象虽然确定好了,但有些细节需要您的注意,那就是我们到底以parent的哪个定位点来进行定位呢?如果parent设定了 margin,border,padding等属性,那么这个定位点将忽略padding,将会从padding开始的地方(即只从padding的左上 角开始)进行定位,这与我们会想当然的以为会以margin的左上端开始定位的想法是不同的。 接下来的问题是,sub2的位置到哪里去了呢?由于当position设置为absolute后,会导致sub1溢出正常的文档流,就像它不属于 parent一样,它漂浮了起来,在DreamWeaver中把它称为“层”,其实意思是一样的。此时sub2将获得sub1的位置,它的文档流不再基于 sub1,而是直接从parent开始。
  (2)如果sub1不存在一个有着position属性的父对象,那么那就会以body为定位对象,按照浏览器的窗口进行定位。

  绝对定位的元素位置与文档流无关,与fixed一样,不占据空间。(只要父级元素设了position并且不是static(默认既是static),那么设定了absolute的子元素即以此为包含块(最近的))。

 

转载于:https://www.cnblogs.com/mogu-xiaonao/p/5380603.html

资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 “STC单片机电压测量”是一个以STC系列单片机为基础的电压检测应用案例,它涵盖了硬件电路设计、软件编程以及数据处理等核心知识点。STC单片机凭借其低功耗、高性价比和丰富的I/O接口,在电子工程领域得到了广泛应用。 STC是Specialized Technology Corporation的缩写,该公司的单片机基于8051内核,具备内部振荡器、高速运算能力、ISP(在系统编程)和IAP(在应用编程)功能,非常适合用于各种嵌入式控制系统。 在源代码方面,“浅雪”风格的代码通常简洁易懂,非常适合初学者学习。其中,“main.c”文件是程序的入口,包含了电压测量的核心逻辑;“STARTUP.A51”是启动代码,负责初始化单片机的硬件环境;“电压测量_uvopt.bak”和“电压测量_uvproj.bak”可能是Keil编译器的配置文件备份,用于设置编译选项和项目配置。 对于3S锂电池电压测量,3S锂电池由三节锂离子电池串联而成,标称电压为11.1V。测量时需要考虑电池的串联特性,通过分压电路将高电压转换为单片机可接受的范围,并实时监控,防止过充或过放,以确保电池的安全和寿命。 在电压测量电路设计中,“电压测量.lnp”文件可能包含电路布局信息,而“.hex”文件是编译后的机器码,用于烧录到单片机中。电路中通常会使用ADC(模拟数字转换器)将模拟电压信号转换为数字信号供单片机处理。 在软件编程方面,“StringData.h”文件可能包含程序中使用的字符串常量和数据结构定义。处理电压数据时,可能涉及浮点数运算,需要了解STC单片机对浮点数的支持情况,以及如何高效地存储和显示电压值。 用户界面方面,“电压测量.uvgui.kidd”可能是用户界面的配置文件,用于显示测量结果。在嵌入式系统中,用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值