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;
}

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


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352

推荐阅读更多精彩内容

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