baihongyu.com
博客
关于我
css3之position相对定位和绝对定位以及固定定位的区别
阅读量:661 次
发布时间:2019-03-15

本文共 1730 字,大约阅读时间需要 5 分钟。

相对定位与绝对定位的理解

在CSS中,位置定位是布局中的核心原则之一。为了帮助开发者更好地理解不同定位类型,我们将深入探讨相对定位和绝对定位的概念及应用。

相对定位(Relative Positioning)

相对定位是最常用的定位方式,默认值为position: static。在这种定位模式下,元素的位置是相对于自身原来的位置(也就是static的位置)来确定的。简单来说,relative元素不会影响其父容器的布局,尽管它们可能会有特定的偏移(像top、bottom、left或right属性那样)。

例如,假设我们有以下HTML结构:

如果我们在.inner元素中设置如下CSS:

.inner {  position: relative;  top: 20px;}

那么.box元素如果没有特别的定位,就会相对于.inner的左上角布置20px的偏移。

绝对定位(Absolute Positioning)

绝对定位则完全不同于相对定位。在绝对定位模式下,元素的位置是相对于最近的拥有定位(position: absolute或position: fixed)的祖先元素来定位的。换句话说,绝对定位元素不会根据其在普通文本流中的位置来布局,而是相对于其最近的已经定位的祖先元素进行定位。

理解这一点至关重要,尤其是在网页设计中常用的绝对定位技术。例如,假设我们有一个布局如下:

如果在.article中设置如下CSS:

.article {  position: absolute;  top: 20px;  left: 50%;  width: 400px;}

那么.article的定位将依赖于.main-content或者更高的定位元素。请注意,这些定位元素必须是absolute或fixed类型的定位,且具有定位。

绝对定位的关键点

在实际应用中,绝对定位的关键在于找出正确的祖先元素。例如,在以下结构中:

如果.div2没有设置任何定位(即position: static),而.div1设置为position: absolute,那么.div3的定位将基于.div1的位置,因为.div1是最近的拥有定位的祖先元素。

这种理解对网页设计尤其重要,尤其是在创建框架或者复杂布局时。

示例分析

让我们来看看一个具体的示例:

如果我们在CSS中设置:

.div1 {  width: 500px;  height: 300px;  background: red;  position: absolute;  top: 50%;  left: 50%;  margin-left: -250px;  margin-top: -150px;}.div2 {  width: 100px;  height: 200px;  background: blue;  margin: 20px;}.div3 {  width: 200px;  height: 100px;  background: green;  position: absolute;  top: 50%;  left: 50%;  margin-top: -50px;  margin-left: -100px;}

那么.div3的绝对定位是基于.div1的位置的,而不是.div2的位置。这是因为.div1是.div2的直接父容器,并且.div1已经被设置为position: absolute。

总结

理解相对定位和绝对定位的差异是CSS布局编码中的核心技能之一。通过掌握这些概念,您可以更高效地构建美观且响应性的网页布局。如果您正在学习CSS,我强烈建议从简单的示例开始,逐步尝试和实验,以便更深刻地理解这些定位方式的实际应用场景。

转载地址:http://zvmmz.baihongyu.com/

你可能感兴趣的文章
Openlayers高级交互(15/20):显示海量多边形,10ms加载完成
查看>>
Openlayers高级交互(16/20):两个多边形的交集、差集、并集处理
查看>>
Openlayers高级交互(17/20):通过坐标显示多边形,计算出最大幅宽
查看>>
Openlayers高级交互(18/20):根据feature,将图形适配到最可视化窗口
查看>>
Openlayers高级交互(19/20): 地图上点击某处,列表中显示对应位置
查看>>
Openlayers高级交互(2/20):清除所有图层的有效方法
查看>>
Openlayers高级交互(20/20):超级数据聚合,页面不再混乱
查看>>
Openlayers高级交互(3/20):动态添加 layer 到 layerGroup,并动态删除
查看>>
Openlayers高级交互(4/20):手绘多边形,导出KML文件,可以自定义name和style
查看>>
Openlayers高级交互(5/20):右键点击,获取该点下多个图层的feature信息
查看>>
Openlayers高级交互(6/20):绘制某点,判断它是否在一个电子围栏内
查看>>
Openlayers高级交互(7/20):点击某点弹出窗口,自动播放视频
查看>>
Openlayers高级交互(8/20):选取feature,平移feature
查看>>
Openlayers高级交互(9/20):编辑图形(放缩、平移、变形、旋转),停止编辑
查看>>
Openlayers:DMS-DD坐标形式互相转换
查看>>
openlayers:圆孔相机根据卫星经度、纬度、高度、半径比例推算绘制地面的拍摄的区域
查看>>
OpenLDAP(2.4.3x)服务器搭建及配置说明
查看>>
OpenLDAP编译安装及配置
查看>>
Openmax IL (二)Android多媒体编解码Component
查看>>
OpenMCU(一):STM32F407 FreeRTOS移植
查看>>
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!-- 愿君每日到此一游!
当前时间: 2026-03-24 00:49:18   当前IP: 10.6.1.46   联系邮箱:javaeecc@qq.com     Copyright © 2020 - 2025 baihongyu.com 京ICP备2021015314号-2