CSS:走进position属性(二)

发布于:2023-01-23 ⋅ 阅读:(418) ⋅ 点赞:(0)

4.绝对定位(absolute)

1.在没有父元素或者父元素没有定位,绝对定位相对于当前屏幕的左上角。随着滚动条,离开当前屏幕,绝对定位就会失效。
先上效果
chrome-浏览器-显示效果:
在这里插入图片描述

HTML代码:

<body>
    <!-- 父元素没有定位的情况 -->
    <div class="box">
         <div>块级元素:div1</div>
         <div class="div2">块级元素:div2</div>
         <div>块级元素:div3</div>
    </div>
         <!-- 没有父元素的情况 -->
        <div class="div4">块级元素:div4</div>
        <div class="div5">块级元素:div5</div>
        <div class="div6">块级元素:div6</div>
</body>

CSS代码:

 .box{
            height:500px;
            background-color:yellow;
        }
        .box div{
            width:200px;
            height:200px;
            background-color:orange;
            margin-top:20px;
        }
        .div2{
            position:absolute;
            top:100px;
            left:240px;
        }
        
         .div3,.div4,.div5{
            width:200px;
            height:200px;
            background-color:orange;
            margin-top:20px;
        }
        .div4{
            position:absolute;
            top:120px;
            left:240px;
            background-color:rgba(0, 217, 255, 0.9);
        }

总结:div1.div2和div3演示父元素没有定位的情况。div4,div5和div6演示在没有父元素的情况。注意观察div2和div5的位置变化,可以了解到绝对定位始终相对于当前屏幕的左上角,并且脱离了文档流,且没有保留改变之前的位置,造成下面的元素自动补上。

2.父元素有定位时,绝对定位相对于父元素的左上角。
chrome浏览器-显示效果:
在这里插入图片描述
HTML代码:

<body>
    <!-- 父元素相对定位 -->
    <div class="box">
         <div>块级元素:div1</div>
         <div class="div2">块级元素:div2</div>
         <div>块级元素:div3</div>
    </div>
</body>

CSS代码:

.box{
            width:600px;
            height:500px;
            background-color:yellow;
            position:relative;
            margin:10px auto;
        }
        .box div{
            width:200px;
            height:200px;
            background-color:orange;
            margin-top:20px;
        }
        .div2{
            position:absolute;
            top:100px;
            left:240px;
        }

总结:观察输出效果,我先把整个父元素进行屏幕居中,还为父元素添加相对定位。而div2改变的位置并不是再次相对于屏幕左上角而是父元素的左上角。并且div3补上了原先div2的位置。

5.固定定位(fixed)

固定定位,顾名思义就是设置后,该元素始终固定在指定位置上,不在随着页面的滚动而移动。

chrome浏览器-显示效果:
变化前:
在这里插入图片描述
变化后:
在这里插入图片描述

HTML代码:

<body>
    <!-- 父元素相对定位 -->
    <div class="box">
        <!-- 设置为固定定位 -->
         <div class="div1">块级元素:div1</div>
         <div class="div2">块级元素:div2</div>
    </div>
</body>

CSS代码:

  .box{
            width:600px;
            height:20000px;
            background-color:yellow;
            /* position:relative; */
            margin:0 auto;
        }
        .box .div1{
            width:200px;
            height:200px;
            background-color:orange;
            position:fixed;
            top:100px;
        }
        .box .div2{
            width:200px;
            height:200px;
            background-color:orange;
        }

总结;注意观察前后变化,以及滚动条所在的位置。我们可以得出如下结论 ,固定定位相对于父元素,在屏幕上固定不变。并且脱离文档流的。

6.粘性定位(sticky)

粘性定位:来源于CSS3,对于之前的版本它属于新技术。所以相对的较低版本的浏览器存在兼容问题。

chrome浏览器-显示效果:
变化前:
在这里插入图片描述
变化中:
在这里插入图片描述
变化后:
在这里插入图片描述
HTML代码:

<body>
    <!-- 父元素相对定位 -->
    <div class="box">
        <!-- 设置为粘性定位 -->
         <div class="div1">块级元素:div1</div>
         <div class="div2">块级元素:div2</div>
         <div class="div1">块级元素:div3</div>
    </div>
</body>

CSS代码:

 .box{
            width:600px;
            height:20000px;
            background-color:yellow;
            position:relative;
            margin:0 auto;
        }
        .box .div1{
            width:200px;
            height:200px;
            background-color:orange;
           
        }
        .box .div2{
            width:200px;
            height:200px;
            background-color:red;
            position:sticky;
            top:0px;
        }

总结:还是先观察,找出相似以及不同之处。粘性定位和固定定位很相似,只是粘性定位不脱离文档流。在没有到达指定位置之前,它和静态定位一样,随着页面滚动而滚动。到达指定位置后,固定不在滚动。

补充:图层显示(z-index)

随着三D效果的出现,页面不仅存在X轴,Y轴还有Z轴。z-index:要解决的问题是,在多个元素重叠,该让哪一个元素显示在最外层。
默认x-index效果:
在这里插入图片描述
改变后:
在这里插入图片描述

HTML代码:

<body>
    <!-- 父元素相对定位 -->
    <div class="box">
        <!-- 设置为粘性定位 -->
         <div class="div1">块级元素:div1</div>
         <div class="div2">块级元素:div2</div>
         <div class="div3">块级元素:div3</div>
         <div class="div4">块级元素:div4</div>
    </div>
</body>

CSS代码:

.box{
            width:600px;
            height:20000px;
            background-color:yellow;
            position:relative;
            margin:0 auto;
        }
        .box .div1{
            width:200px;
            height:200px;
            background-color:orange;
            position:fixed;
            top:10px;
            z-index:4;
           
        }
        .box .div2{
            width:200px;
            height:200px;
            background-color:red;
            position:fixed;
            top:40px;
            z-index:3;
        }
        .box .div3{
            width:200px;
            height:200px;
            background-color:rgb(247, 243, 243);
            position:fixed;
            top:60px;
            z-index:2;
        }
        .box .div4{
            width:200px;
            height:200px;
            background-color:rgb(81, 11, 243);
            position:fixed;
            top:80px;
            z-index:1;
        }

总结:z-index,没有单位,并存在负值。默认情况下最后写的优先显示在最上层。设置后,数值越大,显示越靠上。


网站公告

今日签到

点亮在社区的每一天
去签到