对于div盒子的一些困惑解答

对于div盒子的一些困惑解答

对于div盒子,此处我主要讲两个方面,一个是关于盒子position定位的问题,另一个是关于盒子自身大小以及距离变化的问题。

代码如下:

<!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>
        *{
            box-sizing: border-box;
            margin: 0;
        }
        body{
            display: flex;
        }
        #box-father1{
            position: absolute;
            width: 400px;
            height: 400px;
            left: 20%;
            top: 20%;
            background-color: burlywood;
        }
        #box-son1{
            width: 100px;
            height: 100px;
            position: absolute;     /* 此处需注意,对应box-son2 */
            top: 50%;
            left: 50%;
            transform: translate(-50%,-50%);
            background-color: cornflowerblue;
        }

        /*此处的box-son1和box-son2的定位都是针对于处于同一父对象之中而言,自然了,position:absolute即使脱离文档流,那么定位也还是得相对于所处的父对象进行定位*/

        #box-son2{
            position: absolute;
            width: 100px;
            height: 100px;
            top: 50%;
            left: 50%;
            transform: translate(-50%,-50%);
            margin-left: 0px;        /*此处需注意,多个已绝对定位的对象进行位置定位的时候,margin是相对于离它最近的单位进行定位*/
            margin-top: 0px;
            background-color: dodgerblue;
        }
        #box-father2{
            /*此处需注意,因为使用了position:relative,所以下面的定位是相对于离它最近的一个块状对象进行定位*/

            /*需要特别注意的是一旦使用了position:absolute,那么就意味着脱离了文档流,那么position:relative的对象将不再相对于离它最近的对象进行定位,
            而是相对于离它最近的未absolute的对象进行定位,针对于未处于同一父对象之中而言*/

            /*relative与absolute同时用的时候,relative处于absolute上面*/

            /*一个有趣的现象:当一个对象使用了position:relative之后,后面的对象是依照具有此relative属性的对象的最初的位置进行定位的*/

            /* position: relative; */
            width: 400px;
            height: 400px;
            background-color: slategray;
            margin-left: 200px;         /*此处需注意*/
            margin-top: 100px;          /*此处需注意*/
        }
        #box1,#box2,#box3{
            background-color: cornflowerblue;
            width: 100px;
            height: 100px;
        }


        /*始终需要注意的是div本就是一个盒子,padding还有border只不过是div盒子自身的一个属性,因而使用了padding亦或是border之后,
        div盒子看似位移了,实则是原本的div盒子变成了content,整个div盒子则会随着padding和border的增加而变大,所占用的空间自然就变大了,
        因此最开始设置的盒子宽高都将加上后面设置的margin和padding的长度,这里为了解决盒子宽高变化问题,得使用box-sizing:border-box,此时
        盒子设置的padding和border都是以原盒子长宽进行操作,此处需注意,margin不参与。
        因而,使用top亦或是left都只是针对于div这个盒子本身进行位移,且只能是配合position进行移动*/



    </style>
</head>
<body>
    <div id="box-father1">
        <div id="box-son1"></div>
        <div id="box-son2"></div>
    </div>
    <div id="box-father2"></div>
    <div id="box1"></div>
    <div id="box2"></div>
    <div id="box3"></div>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值