CSS之position定位

本文详细介绍了CSS中的position属性,包括静态定位、相对定位、绝对定位、固定定位和粘性定位,以及边偏移的概念。讨论了定位模式如何影响元素在文档中的位置,特别强调了相对定位、绝对定位和固定定位的区别。此外,还提到了子绝父相的定位技巧,定位的叠放顺序以及定位的特殊特性,如块元素和行内元素在定位后的宽高变化。最后,总结了浮动、定位和标准流的关系及其应用场景。

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

将盒子定在某一位置,摆盒子,按照定位的方式移动盒子。

定位 = 定位模式(指定一个元素在文档中的定位方式) + 边偏移(决定该元素的最终位置)

position属性 (定位模式)


静态定位static

(了解)默认定位方式 无定位,没有边偏移

相对定位relative

(重要)以原位置的坐标为准 根据 边偏移 的量移动,后面的其他盒子仍以标准流固定在那里不脱标
例:

	<style>
		.box1 {
            width: 200px;
            height: 200px;
            background-color: gray;
        }
        .box2 {
            position: relative;
            top: 50px;
            left: 50px;
            width: 200px;
            height: 200px;
            background-color: black;
        }
        .box3 {
            width: 200px;
            height: 200px;
            background-color: pink;
        }
	</style>
	<div class="box1">1</div>
	<div class="box2" style="color: #fff">2</div>
	<div class="box3">3</div>

在这里插入图片描述
↑ 盒子box2是相对定位,给了偏移量,它仍然占有原来空间,下面的标准流box3不会受影响。

绝对定位absolute

(重要)元素移动位置是相对于最近一个嵌套它的祖先元素来,没有父级元素,或者 父元素是浮动的 或者 没有给定位的(没position:xxx(除了static) ),则以浏览器四周为准。

偏移之后会脱标,比浮动还高,下面的标准流会被影响

固定定位fixed

(重要) 固定于浏览器的 可视窗口 ,可以在滚动浏览器页面时固定位置不变。

可以left:50%;margin-left: 版心宽度一半距离+ ,这样就能让盒子固定悬在版心右边显示;悬在左边也同理 right:50%和margin-right: 版心宽度一半距离+ ,

这样缩放浏览器页面时盒子会跟着版心又能在滚动界面时固定于可视窗口的固定位置

例:

	<style>
		.fixed{
            position: fixed;
            top: 50px;
            right: 50%;
            margin-right: 605px;
            width: 100px;
            height: 100px;
            background-color: orange;
        }
        .banner{
            width: 1200px;
            height: 600px;
            background-color: pink;
            margin: 50px auto;
        }
    </style>
	<div class="fixed">5</div>
    <div class="banner">6</div>

在这里插入图片描述

粘性定位sticky

它是相对定位固定定位的混合,因为它既 占有原先位置可以悬于可视窗口区域

必须添加top、left、right、bottom的其中一个才有效

缺点:兼容性差 IE不支持,一般用js实现

例:

<style>
    	body{
            height: 5000px;
        }
        .sticky{
            position: sticky;
            top: 5px;
            width: 200px;
            height: 500px;
            background-color: darkblue;
            margin-top: 100px;
        }
    </style>
<body>
  <div class="sticky"></div>
</body>

在这里插入图片描述

边偏移

top :xxpx | bottom: xxpx | left:xxpx | right: xxpx

如果同时有left和right,则left有效;如果同时又top和bottom,则bottom有效。

子绝父相

父元素 position: relative 子元素position: absolute

只要子元素用了绝对定位,它默认是相对于整个浏览器窗口的四周围来定义边偏移,只有父元素设置了相对定位,子元素设置的边偏移才会以父元素的四周为参考。

定位的叠放顺序

可以用z-index来决定,如果没给,多个有position的盒子,后面写的在最上面(后来居上),
定义了z-index数值越大的越靠上,默认auto,负数在下面,数值都不加单位,

只有定位盒子才能用z-index属性

定位的特殊特性

块元素添加了定位positon的绝对定位absolute 或 固定定位fixed 后不设置宽高的话,宽高是由内容撑开的(相对定位relative则不会,宽度占一行)

行内元素加了定位position的绝对定位absolute 或 固定定位fixed 后可以设置宽高。

例:

	<style>
		.test {
            position: absolute;
            background-color: pink;
        }
        span {
            position: absolute;
            top: 100px;
            background-color: skyblue;
            width: 100px;
            height: 100px;
        }
    </style>

    <div class="test">9</div>
    <span>10</span>

在这里插入图片描述

定位总结

定位模式是否脱标移动位置是否常用
静态定位static不能使用边偏移
相对定位relative相对于自身原位置移动
绝对定位absolute带有定位的父级或相对于浏览器
固定定位fixed浏览器可视区
粘性定位sticky浏览器可视区

浮动不会压住下面标准流的文字,但是绝对定位absolute 和 固定定位fixed会。
因为浮动最开始是为了实现文字环绕效果而出现的,现在多用于布局。


浮动、定位、标准流 的联系案例:

<style>
 		* {
            margin: 0;
            padding: 0;
        }
        .box1 {
            float: left;
            width: 200px;
            height: 200px;
            background-color: pink;
        }
        .box2 {
            position: relative;
            width: 50px;
            height: 50px;
            top: 10px;
            left: 10px;
            background-color: skyblue;
        }
        .box3 {
            width: 500px;
            height: 500px;
            background-color: gray;
        }
</style>
    <div class="box1">1</div>
    <div class="box2">2</div>
    <div class="box3">3</div>

效果:
在这里插入图片描述

### CSS `position` 属性使用指南 #### 一、CSS 定位概述 CSS 中的 `position` 属性用于定义元素框相对于其正常位置或其他容器的位置。通过设置不同的定位类型,可以精确控制 HTML 元素在页面中的布局[^1]。 --- #### 二、定位类型的详细说明 ##### 1. **Static(默认定位)** 这是所有 HTML 元素的默认定位方式。在这种模式下,元素按照正常的文档流进行排列,不受 `top`, `bottom`, `left`, 和 `right` 属性的影响[^3]。 ```css /* 默认定位 */ .element { position: static; } ``` ##### 2. **Relative(相对定位)** 相对定位使元素相对于其原始位置偏移,而不会影响其他元素的布局。尽管该元素被重新定位,但它仍然占据原来的空间。 ```css /* 相对定位 */ .relative-element { position: relative; top: 20px; /* 向上移动 20px */ left: 10px; /* 向右移动 10px */ } ``` ##### 3. **Absolute(绝对定位)** 绝对定位将元素从标准文档流中移除,并将其放置在一个指定的位置。如果父级元素设置了 `position` 属性为非 `static` 值,则子元素会相对于最近的已定位祖先元素;如果没有这样的祖先,则相对于初始包含块(通常是浏览器窗口)。 ```css /* 绝对定位 */ .absolute-element { position: absolute; top: 50px; right: 30px; } ``` ##### 4. **Fixed(固定定位)** 固定定位类似于绝对定位,但是固定的参照物是视窗本身而不是某个特定的HTML标签或者区域。即使用户滚动页面,这种类型的盒子也会保持不动[^2]。 ```css /* 固定定位 */ .fixed-element { position: fixed; bottom: 0; right: 0; } ``` ##### 5. **Sticky(粘性定位)** 粘性定位是一种混合形式,在某些条件下表现为相对定位而在另一些条件则像固定定位一样工作。通常来说,当目标对象位于可见区域内时表现得像是相对定位,一旦超出可视范围就变成固定定位。 ```css /* 粘性定位 */ .sticky-element { position: sticky; top: 10px; /* 距离顶部的距离 */ } ``` --- #### 三、实际应用场景与案例分析 以下是几个常见的场景以及如何利用不同种类的定位来解决问题: - **导航栏始终显示于顶端** 可以采用 Fixed Position 来实现这一需求,使得无论怎样滑动网页内容,导航条都维持在其设定好的地方不变形也不消失。 - **侧边栏跟随浏览行为变化** Sticky positioning 很适合用来创建随着用户的垂直滚动自动调整自己高度或状态的小部件,比如目录索引链接列表等。 --- #### 四、常见问题及其解决方案 1. **清除浮动导致的布局错乱** 当多个浮动物体并列存在时可能会引发后续非浮动项目无法正确计算宽度等问题。可以通过引入额外空白 div 设置样式 clear:both 或者运用 clearfix 技巧加以规避[^4]。 2. **层叠上下文混乱** 如果发现 z-index 不生效,请确认当前操作的对象确实处于同一层级关系之中,并且已经显式声明过相应的 position 参数值。 --- ### 总结 掌握好各种定位机制的特点及适用场合对于构建复杂灵活界面至关重要。每种方法都有各自的优势和局限之处,合理搭配才能达到最佳效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值