CSS position: absolute 绝对定位精讲

CSS position: absolute 绝对定位精讲绝对定位基本特征绝对定位的第一个特征在于会从文档流中脱离 不受其他元素影响 定位是 绝对 的 所以称之为绝对定位 如果是相对定位 会受其他元素影响 则定位是 相对 的 未使用定位 即元素在正常文档流当中 frame margin 0auto margin top 50px

  • 本文要点
  • 1. 绝对定位元素文档流;
  • 2. 绝对定位元素定位参照对象;
  • 3. 绝对定位元素的自动伸缩;
  • 4. 绝对定位元素实现垂直居中;

绝对定位基本特征

绝对定位的第一个特征在于会从文档流中脱离,不受其他元素影响,定位是“绝对”的,所以称之为绝对定位,如果是相对定位,会受其他元素影响,则定位是“相对”的;

未使用定位:即元素在正常文档流当中

CSS position: absolute 绝对定位精讲

 
   
.frame { margin: 0 auto; margin-top: 50px; width: 400px; height: 300px; background-color: yellow; } #div1 { width: 100px; height: 50px; background-color: blue; } #div2 { width: 200px; height: 100px; background-color: green; }

当我们给元素加上绝对定位的时候,元素会脱离当前文档流;


#div1 { position: absolute; }

CSS position: absolute 绝对定位精讲

也就是说绝对定位的元素再文档流中没有位置,它从文档流中脱离了出来,后面的元素会填充掉它原来的位置;
绝对定位的第二个特征在于定位位置相对于第一个具有定位属性(即 position 为 relative 或者 absolute)的祖先元素;
#div1 { top: 30px; }

CSS position: absolute 绝对定位精讲


当给绝对定位元素设置定位值时,该元素会延着DOM树向上查找,直到找到一个具有定位属性的祖先元素,则定位相对于该元素,在该例子中,由于其祖先元素都没有定位属性,则该绝对定位元素会相对于body体进行定位;如果给其父元素加上一个定位属性,则该绝对定位元素会相对于这个父元素;
.frame { position: relative; /* 或者 position: absolute; */ }

CSS position: absolute 绝对定位精讲

        绝对定位高级特性 
绝对定位元素的第一个高级特性就是其具有自动伸缩的功能,当我们将 width 设置为 auto 的时候(或者不设置,默认为 auto ),绝对定位元素会根据其 left 和 right 自动伸缩其大小(
注意:请牢记绝对定位元素的定位值是相对于第一个具有定位属性的祖先元素);
#div1 { width: auto; left: 100; right: 50px; }

CSS position: absolute 绝对定位精讲

根据第一个高级特性,我们可以衍生出第二个高级特性,由于绝对行为元素具有自动伸缩的功能,如果 width 值为 auto 此时如果我们设置 left 和 right 都为0,则该元素会填充满其相对的元素,如果此时我们将宽度设置为固定值,这是绝对定位元素会优先取 left 值作为定位标志(
这个标准适用于从左向右读的文档流中,而在少数从右往左读的文档流中,则优先取 right)。如果这时我们将 margin 设置为 auto ,则绝对定位元素会呈现居中状态;
#div1 { margin: auto; width: 100px; left: 0; right: 0; }

CSS position: absolute 绝对定位精讲
其实并不一定非要设置成0,在 margin: auto 下,只要 left 和 right 的值相等,且不超过其 相对元素减去该绝对定位元素 width 的一半,就可以实现居中;如果其 left 超出了范围,那么会取 left 的值作为定位( 从左向右的文档流); /* 至于在范围能的值不等情况,大家可以自行测试一下 */


以上例子均在水平方向实现,那么垂直方向是怎么样的呢?其实垂直方向的作用效果是一样,垂直方向同样可以自动拉伸,同理我们也可以实现垂直方向上的自动居中;
#div1 { top: 0; bottom: 0; }

CSS position: absolute 绝对定位精讲

和水平居中有一点不同的是,无论 top 和 bottom 的值设置为多少,只要相等,就可以垂直居中。















版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225849.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午8:24
下一篇 2026年3月17日 上午8:25


相关推荐

  • 用户画像总结

    用户画像总结        最近在工作之余,结合自己的理解和论坛上的一些帖子,整理了份用户画像的文章,个人觉得这篇文章在宏观上很好地描述了用户画像的主要内容。(文章内的图片来源于不同帖子,权当分享,侵删)一、什么是用户画像        用户画像是指根据用户的属性、用户偏好、生活习惯、用户行为等信息而抽象出来的标签化用户模型。通俗说就是给用户打标签,而标签是通过对用户信息分析而来的高度精炼的特征标识。通过打…

    2022年7月18日
    24
  • C#最短路径算法demo

    C#最短路径算法demoC#最短路径算法源码和demo

    2022年5月7日
    106
  • Keepalived搭建

    Keepalived搭建LVS Keepalived 构建拓扑图安装 keepalivedke 起初是为 LVS 设计的 专门用来监控集群系统中各个服务节点的状态 后来又加入了 VRRP 的功能 VRRP 是 VirtualRoute 虚拟路由器冗余协议 的缩写 VRRP 出现的目的就是为了解决静态路由出现的单点故障问题 它能够保证网络的不间断 稳

    2026年3月17日
    1
  • 文心一言本地部署教程:本地部署ai大模型全攻略来了

    文心一言本地部署教程:本地部署ai大模型全攻略来了

    2026年3月12日
    2
  • Python 换行符以及如何在 Python 输出时不换行

    Python 换行符以及如何在 Python 输出时不换行Python中的换行符用于标记行的结尾和新行的开始。如果你想将输出打印到控制台并使用文件,那么你非常需要知道如何使用它。在本文中,你将学习:如何在Python中识别换行符 如何在字符串和打印语句中使用换行符 如何编写不会在字符串末尾添加换行符的打印语句我们开始吧!✨????换行符Python中的换行符是:它包含两个字符:一条反斜线 字母n如果你在字符串中看到此字符,则表示当前行在该点结束,并在其后立即开始新行:你也可以在格式化字符串(f-stri…

    2022年10月21日
    3
  • flvjs api 中文[通俗易懂]

    flvjs api 中文[通俗易懂]flvjs.createPlayer()functioncreatePlayer(mediaDataSource:MediaDataSource,config?:Config):Player;MediaDataSource Field Type Description type string Indicatesmediatype,’flv’or’mp4′ isLive? boolean Indic…

    2025年8月23日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号