HTML&CSS Part6


元素显示的进一步优化

元素层级

属性介绍

上一节结尾我们留了一个问题,即一堆元素仍在一个HTML里面,这些玩意的层级怎么控制?需要记很多的结论嘛?

我们在这里给出答案,完全不必要。

我们在Css中有这样一个属性, z-index 其存在最重要的意义就是调整页面中一堆元素的显示层级。

z-index: 100;
/* 后面跟一个整数,这数越大,显示的就越靠上,默认值为0 */

提一嘴,这个玩意是可以设置成负值的,全看读者的习惯。

当然,这玩意必须是用于定位(position)存在的情况下的,毕竟如果没有position的属性,页面上的元素压根不会相互遮挡是不是。

父子关系 vs 元素层级?

有的读者可能挺好奇的,那我们平常子盒子总会默认显示在父盒子的上侧,我们有没有可能通过这个元素层级来让父盒子完全盖住子盒子?

答案是肯定的,但需要一定的方法:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .father{
            width: 200px;
            height: 200px;
            background-color: aqua;
            position: relative;
        }
        .son{
            width: 50px;
            height: 50px;
            background-color: blue;
            position: absolute;
            top: 10px;
            left: 10px;
            z-index: -1;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son">
        </div>
    </div>
</body>
</html>

哎,我们一看,挺成功,就显示了父盒子的颜色。

但需要说明的是,如果我们这样设置:

.father{
    ...
    z-index:100;
}
.son{
    ...
    <!-- z-index: -->
    <!-- 即子盒子不写z-index属性,仅通过父盒子设置 -->
}

我们会发现没法子,子盒子还是在父盒子上边。
所以,这位置需要读者记忆一下。

定位(确实,还是定位)

居中,彻彻底底的居中!

此前第五部分说过了定位的事,为什么这里还要提?

这是因为通过定位,我们可以实现一个之前没试过的效果: 让元素垂直居中

我们知道,让元素水平居中是很容易做到的:

margin: 0 auto;

但我们现在学了定位了,竖直居中就可以通过 绝对定位 来实现。

我们首先想到的应该是这个:

position: absoulte;
top:50%
left:50%

读者可以试一下,我们会发现,这样搞的话就移大劲了,它移到了页面的中间偏右下方,这是由于两个50%分别是 页面顶部距离上边框的距离页面左侧距离左边框的距离

那咋办捏?
好办,我们在说margin的时候单独提了一嘴,这玩意是支持负值的设置的,这时候就显出作用了。

div{
    width: 100px;
    height: 100px;
    position: absoulte;
    top: 50%;
    left: 50%;
    margin-left: -50px;
    margin-top: -50px;
}

哎,我们把这玩意通过负的margin再给它拽回来就完事了嘛。

相似的,我们如果要实现子盒子在父盒子里面的居中,自然也可以使用这种方法,无非是在父盒子里面设定一个 position: relative 而已。

绝对定位 vs 浮动

这俩玩意相信很多读者都懵的慌。

这里笔者仅仅给出一个不十分严谨的说法,即浮动是 半脱离文档流 ,而绝对定位是 完全脱离文档流

这会造成一个什么差别捏?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box2{
            width: 500px;
            height: 500px;
            background-color: aqua;
        }
        .box1{
            width: 50px;
            height: 50px;
            background-color: blue;
            position: absolute;
            /* float: left; */
        }
    </style>
</head>
<body>
    <div class="box1"></div>
    <div class="box2">
        Lorem, ipsum dolor sit amet consectetur adipisicing elit. Iusto debitis expedita delectus. Voluptates odit recusandae earum praesentium, quia incidunt suscipit expedita magni labore nemo velit animi molestias, odio voluptate aliquam!
    </div>
</body>
</html>

上面 ⬆ ,展现了绝对定位的情况,我们发现这绝对定位的盒子是一点面子也不给,直接碾着下面盒子里的内容。

如果我们改成:

.box2{
    width: 500px;
    height: 500px;
    background-color: aqua;
}
.box1{
    width: 50px;
    height: 50px;
    background-color: blue;
    /* position: absolute; */
    float: left;
}

我们会发现下边的盒子虽然上来了,但其内部的文字会绕着上面浮动的盒子走。形成了一个非常初步的 文字环绕 的效果。


文章作者: MUG-chen
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 MUG-chen !
  目录
加载中...