2022-02-23 CSS其五 浮动

还是你们城里人会玩 乐.jpg

一、浮动

传统的网页布局一般包含三种方式,标准流(普通流),浮动和定位。一个完整的页面中这三种布局方式都有。标准流就是默认的元素排列方式,之前所学习的标签都是按照标准流来布局的。
为什么我们需要浮动呢,因为有时候元素默认的布局方式并不能满足我们的要求。比如实现多个div元素的一行显示,我们当然可以将他们转化为行内块元素,但是发现他们之间会存在一个小的空隙。又比如要实现两个div元素,分别贴着浏览器的左右显示,用标准流的方式就比较难实现。所以浮动就是为了解决标准流难以满足的情况而出现的。
浮动的语法

选择器 {float : 属性值}
div {float  : left/right/none}

上述代码分别让元素向左、右以及不浮动。浮动的元素包含以下几个特点
1.浮动的元素会脱离标准流浮动到指定的位置,俗称脱标。
2.浮动的元素会在一行内显示并且顶部对齐,只有在宽度超出父元素的宽度的时候才会换行显示
3.浮动的元素会具有行内块元素的特点,即可以设置宽高并且一行内显示多个。
有了浮动我们就可以实现上述我们的需求了,要实现一行内显示多个div元素,只需要在CSS中书写

div {
            height: 200px;
            width: 200px;
            background-color: pink;
            float: left;
        }

最后一行就是浮动的代码,如果要实现左右分别对齐,只需要一个向左一个向右浮动即可。如果要间隔显示,通过设置外边距即可。
一般来说,浮动元素都是搭配标准流的父元素来使用的,比如这样



有了浮动,就可以实现一些简单的网页布局比如下面这个布局模式



其代码如下
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        li {
            list-style: none;
        }

        .top {
            height: 50px;
            background-color: gray;
        }

        .banner {
            width: 980px;
            height: 80px;
            background-color: gray;
            margin: 10px auto;
        }

        .box {
            width: 980px;
            height: 300px;
            background-color: pink;
            margin: 0 auto;
        }

        .box li {
            width: 237px;
            height: 300px;
            background-color: skyblue;
            float: left;
            margin-right: 10px;
        }

        .box .last {
            margin-right: 0;
        }

        .footer {
            height: 150px;
            background-color: gray;
            margin-top: 10px;
        }
    </style>
</head>

<body>
    <div class="top">top</div>
    <div class="banner">banner</div>
    <div class="box">
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li class="last">4</li>
        </ul>
    </div>
    <div class="footer">footer</div>
</body>

</html>

注意CSS开头的清除页面内外边距以及清除无序列表的小圆点的代码。
注意事项:1.网页布局一般首先使用标准流将父元素上下排列,然后利用浮动排列子元素。
2.一个元素浮动,其兄弟元素也浮动。浮动的元素只会影响其后面的标准流,不会影响前面的标准流。

二、清除浮动

有时候我们会遇见不方便直接给定父元素高度的情况,比如我们不知道内部的内容有多大的篇幅的时候。这种时候我们可以不设置父元素的高度,由内容来决定高度,但是内容由子元素容纳,如果子元素浮动那么父元素就没有高度了,这样显然会导致页面元素布局的混乱。为了消除浮动对标准流元素的影响,我们就需要清除浮动。清除浮动的方式有四种

1.额外标签法(隔墙法)

这是W3C的推荐做法,在每个浮动元素的后面额外加一个空标签,比如<div style=”clear:both”></div>,注意空标签必须是块级元素。这样左虽然简单易懂,但是代码中出现了大量无意义的标签,不利于结构化。

2.给父元素添加 overflow

给父元素添加,将溢出部分隐藏。代码简洁但是会将溢出部分隐藏,有时候不能满足要求。

3.:after 伪元素法

在父元素中添加下列代码。关于什么是伪元素后面会进行学习。

.clearfix:after { 
 content: ""; 
 display: block; 
 height: 0; 
 clear: both; 
 visibility: hidden; 
} 
.clearfix { /* IE6、7 专有 */ 
 *zoom: 1;
}

这种清除浮动的方法结构简单清晰,并且可以兼容低版本的浏览器。百度和网易使用的较多。

4.双伪元素清除浮动

使用方法同上

.clearfix:before,.clearfix:after {
 content:"";
 display:table; 
}
.clearfix:after {
 clear:both;
}
.clearfix {
 *zoom:1;
}

这种方法小米和腾讯使用较多。
一张图总结一下清除浮动的四种方法。


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 浮动 网页布局的核心,就是用CSS来摆放盒子位置。如何把盒子摆放到合适的位置?CSS的摆放盒子的方式有3种:普通流...
    艾曼大山阅读 5,650评论 1 7
  • CSS字体属性 font-family:设置字体系列;字体之间的用英文状态下的逗号隔开;尽量使用系统默认自带的字体...
    YanZi_33阅读 383评论 0 0
  • CSS-04 浮动 1 浮动(float) 1.1 传统网页布局的三种方式 网页布局的本质——用 CSS 来摆放盒...
    Tutuls阅读 518评论 0 0
  • 目标 能够说出为什么需要浮动 能够说出浮动得排列特性 能够说出3种最常见的布局方式 能够说出为什么需要清除浮动 能...
    皮皮章阅读 342评论 0 0
  • 技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1....
    CurryCoder阅读 702评论 0 2

友情链接更多精彩内容