css基础笔记5-定位

本文详细介绍了CSS定位,包括静态定位、相对定位、绝对定位、固定定位和粘性定位。重点讲解了各种定位模式的特点,如相对定位不改变文档流,绝对定位和固定定位会脱离文档流,而粘性定位结合了相对和固定定位的特点。此外,还提到了定位叠放次序和如何实现盒子居中。

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

定位

定位=定位模式+边偏移

定位模式用于指定一个元素在文档中的定位方式。边偏移则决定了该元素的最终位置。

静态定位

静态定位是元素的默认定位方式,无定位的意思

语法:选择器{position:static;}

静态定位按照标准流特性摆放位置,它没有边偏移

相对定位

语法:选择器{position:relative;}

相对定位是元素在移动位置的时候,是相对它原来的位置来移动位置的,参照点是自己原来的位置。

注意:相对定位移动后,它原来在标准流的位置继续占有,后面的盒子仍然以标准流的方式对待它,也就是说,相对定位的元素移动不影响后面的其他元素,其他元素只会根据相对定位移动前的位置来排放。因此,相对定位并没有脱标(脱离文档流)。

相对定位前:

 

相对定位后:

 

绝对定位

语法:选择器{position:absolute;}

移动位置的时候是相对于它的祖先元素来说的

特点:找离它最近的有定位的(相对,绝对,固定定位)祖先元素,如果找不到,则以浏览器为准来定位(Document文档)。不再占用原来的位置(脱标)

在做网页的时候推荐用子绝父相的定位模式来做,因为如果不给父元素加相对定位,而是其他的定位,那父元素就会脱离文档流,使得后面的元素位置会到前面来。当然,如果不需要父元素占有位置,那子绝父绝也行。

固定定位

语法:选择器{position:fixed;}

元素固定于浏览器可视区的位置,主要使用场景:可以在浏览器页面滚动时元素的位置不会改变。

特点:以浏览器的可视窗口为参照点移动元素,跟父元素没有任何关系,不随滚动条滚动。固定定位不再占有原先的位置(脱标)其实可以看做一个特殊的绝对定位。

固定定位小技巧:固定到版心右侧:

给一个小盒子一个固定定位,left给50%,margin-left给版心宽度的一半就行了。

一开始对为什么给一个margin-left它还能往右走产生了疑惑,后面想到了,其实margin和padding把盒子撑开,这个说法并不太准确,我个人认为,margin和padding其实也是属于整个盒子的大小的,只是我们看不见,而我们给盒子定义的width和height其实只是盒子大小的内容区,并不是整个盒子大小,而给了margin-left后盒子的左边变大了,整个盒子也变大了,这时的定位是根据盒子的左上角的开始算的,也就是变大的盒子的(margin出来的部分)左上角,这样那个到版心的盒子内容就说得通了。

粘性定位

语法:选择器{position:sticky;}

粘性定位可以被认为是相对定位和固定定位的混合。

特点:以浏览器的可视窗口为参照点移动元素(固定定位的特点),占有原先的位置(相对定位特点),必须添加top,left,right,bottom其中一个才有效。兼容性比较差,IE不支持,不常用。

用法:加上top属性后,该元素在页面滚动到该元素离可视窗口top值的时候变成粘性定位,其实就像是固定定位。

定位的总结:

 

定位叠放次序

在用定位布局时,可能会出现盒子重叠的情况,此时可以使用z-index来控制盒子的前后次序(z轴)

语法:选择器{z-index:1;}

数值可以为正整数,负整数或0,默认是auto,数值越大,盒子越靠上。如果属性值相同,按照书写顺序,后来居上。数字后面不能加单位,只有定位的盒子才会有z-index属性

绝对定位的盒子居中运用:

水平居中:

{position:absolute;left:50%;margin-left:盒子自己宽度的一半的负值;}

垂直居中:

{position:absolute;top:50%;margin-top:盒子自己高度的一半的负值;}

定位的特殊性:

绝对定位和固定定位也和浮动类似,行内元素添加绝对或者固定定位,可以直接设置高度和宽度。块级元素添加绝对或者固定定位,如果不给宽度或者高度,默认大小是内容的大小。脱标的盒子不会触发外边距塌陷

绝对定位和固定定位会完全压住盒子,浮动元素不同,只会压住它下面标准流的盒子,,但是不会压住下面标准流盒子里面的文字(图片),但是绝对定位和固定定位会压住下面标准流所有的内容,浮动之所以不会压住文字,因为浮动产生的目的最初是为了做文字环绕效果的,文字会围绕浮动元素。

如果同时存在left和right属性则会默认执行left属性,同时有top和bottom则会默认执行botto,先左后右,先上后下。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值