当前位置: 首页 > Web前端 > CSS

CSS定位layout-relative,absolute,fixed,sticky四种定位

时间:2023-03-30 16:01:05 CSS

文档流默认的文档流是指元素在元素排版和布局过程中会自动按照这种从左到右,从上到下的顺序排列方式,其中每个块元素占一行,一行中的元素在一行内从左到右排列,直到当前行遇到边界,再换到下一行的起点继续排列。脱离文档流意味着将元素从普通布局(普通文档流)中分离出来。当其他盒子被定位时,它们将被视为没有看到它。这两个位置有可能重叠,但它们仍然存在于DOM树中。.定位的实现我们可以通过在css中设置position属性的值来设置元素的定位类型。position的值分为以下几种:staticdefault(非定位元素)inherit从父元素继承position属性的值relativerelative(定位元素)absoluteabsolute(定位元素)fixedfixed(定位元素)stickysticky(定位元素)定位元素的特点:可以使用定位规则。按上、右、下、左设置偏移量。绝对定位和固定定位的块元素和内联元素会自动转换为内联块元素1.相对布局位置:relative;不脱离文档流。相对于其原始位置移动。案例:如何实现下图的偏移效果?从代码中可以看出,只要将紫色div的style属性设置为position:relative即可;,你可以使用left和top设置相对于原始文档布局位置的偏移量。实现代码如下:文档

2.绝对布局位置:absolute;脱离文档流。它指的是它最近的父定位元素,或者body如果它的父元素都不是定位元素。(一般情况下,绝对定位元素是嵌套在相对定位元素的内容中使用的)案例:我们把上面代码中设置相对定位的代码改成绝对定位。将紫色div设置为绝对定位后,发现蓝色div不见了。其实蓝色的div并没有丢失,而是和紫色的div重叠了。因为当紫色div设置为绝对定位时,会脱离文档流布局。这时候就相当于漂浮了,蓝色div自然会和紫色div重叠,因为没有紫色div的挤压。一起。接下来,让我们为紫色的div设置一个偏移量。此时,我们发现紫色的div出现在了父元素之外,在页面的左上角。这是因为它的父元素中没有定位元素,所以它的偏移量是相对于body调整的。接下来,我们将其父元素设置为相对定位,看看会发生什么?这时候我们看到紫色的div回到了它的父元素。3、固定布局位置:固定;脱离文档流。它是相对于浏览器窗口定位的,相当于把这个元素钉在了浏览器窗口上,无论我们如何操作滚动条,它的位置都无法改变。我们继续沿用上面的代码,将紫色div中的绝对布局改为固定布局,并将其父元素的高度调大一些。从上面的GIF中我们可以看到,无论我们如何操作滚动条,紫色的div在整个浏览器页面中都处于一个固定的位置。这种类型的定位最适合广告展示位置。4.置顶布局位置:置顶;未达到阈值时,不离开文档流(相对),达到阈值时,离开文档流(固定)。阈值可以设置为左、上、右、下。了解了上面的布局之后,我们再来看看什么是粘性布局。将一个定位元素设置为粘性布局后,当我们没有达到设定的阈值时,它就会显示在它应该出现的位置,就像正常的文档流一样。一旦我们达到它设置的阈值,它就会一直停留在我们设置的位置。效果图如下:css代码如下:.two{width:100%;高度:100px;背景色:浅珊瑚色;定位:粘性;/*设置为粘性定位*/top:0;/*当元素到达整个页面距离顶部0px时,会停留在这个位置*/}定位元素层级z-index定位元素悬浮在正常文档流之上,我们可以设置层级通过z-index属性的元素。什么场景下会用到z-index属性呢?比如我们做一个让用户输入登录信息的弹框,我们希望当用户点击登录的时候,弹框不会被其他任何元素覆盖。我们可以设置它的z-index属性,让它的级别设置为最高级别。以下案例将帮助我们学习和理解z-index属性。代码如下:文档
我们可以看到从上到下依次是:紫、蓝、蓝、绿、黄、橙、红如果我们要从上到下排序的话:红、橙、黄、绿、蓝、蓝、紫,我们只需要在每个div中设置z-index属性,就可以轻松实现。如下图所示:部分CSS代码如下:.one{background-color:red;顶部:20px;左:20px;z-index:7;}.two{背景色:橙色;顶部:40px;left:40px;z-index:6;}.three{background-color:yellow;顶部:60px;左:60px;z-index:5;}.four{背景色:绿色;顶部:80px;左:80px;-index:4;}.five{背景色:青色;顶部:100px;左:100px;z-index:3;}.six{背景色:蓝色;顶部:120px;左:120px;z-index:2;}.??seven{背景色:紫色;顶部:140px;左:140px;z-index:1;}课后练习按照下图要求制作图标。1、先写两个div。2.设置第一个div为相对定位,第二个div为绝对定位。并设置偏移量将第二个div放在第一个div的右上角。3.通过border-radius属性设置两个div周围的弧度。将第二个div的圆弧设置为其宽度的一半会形成一个圆。代码如下:文档<imgsrc="../微信.png"alt="">7