CSS浮动布局

2021-01-26  本文已影响0人  白羽之鹰

说浮动布局,就得先知道文档流,文档流有正常文档流脱离文档流

<body>
    <div class="div00">
        <div class="div01"></div>
        <div class="div02"></div>
        <span></span><span></span>
        <div class="div03"></div>
        <div class="div04"></div>
    </div>
</body>

对应的正常文档流如图,

image.png
改变正常文档流的方法:浮动和定位。
1.使用浮动脱离文档流

例如01:

html:
    <div class="div00">
        <div class="div01">div01块</div>
        <div class="div02">div02块</div>
        <div class="div03">div03块</div>
        <div class="div04">div04块</div>
    </div>
scss (用了sass预处理器):
.div00{
    width: 200px;
    //注意这里目前未设置父元素的高度
    background-color: chartreuse;
    div{
        height: 50px;
    }
    .div01{
        float: left;
        background-color: aqua;
    }
    .div02{
        background-color: bisque;
    }
    .div03{
        background-color: blueviolet;
    }
    .div04{
        background-color: blue;
    }
}

结果:


image.png

分析:对div01设置了左浮动,使div01脱离了文档流,div01是在div02的上面一层,实际的div02还是占据了一整行,div02的文字部分看着像被挤出来了,其实这就是文字环绕的实现(文字是英文时有点问题)。
例如02:
只设置后面两个div左浮动
结果:


image.png

例如03:
全部设置左浮动,会从左到右依次排列。(right的相反)注意这里出现了父元素高度塌陷,height为0


image.png
例如04:
父元素宽度不能容纳浮动的元素时,就会换到下一行。
image.png

2.浮动带来的影响

.div00{
    *zoom: 1;
}
.div00::after{
    clear: both;
    content: '';
    display: block;
    height: 0;
    visibility: hidden;
}

效果如图:对比例3,父元素高度塌陷问题解决


image.png

此外,浮动可以用来实现两列布局或多列布局
例如:

html:
<body>
    <div class="div00">
        <div class="div01">div01块</div>
        <div class="div02">div02块</div>
    </div>
</body>
scss:
.div00{
    *zoom: 1;
}
.div00::after{
    clear: both;
    content: '';
    display: block;
    height: 0;
    visibility: hidden;
}
.div00{
    width: 100%;
    background-color: white;
    div{
        height: 5000px;
    }
    .div01{
        margin-left: 10%;
        width: 40%;
        float: left;
        background-color: aqua;
    }
    .div02{
        margin-right: 10%;
        width: 40%;
        float: right;
        background-color: bisque;
    }
}

结果:


image.png
上一篇 下一篇

猜你喜欢

热点阅读