css - 浮动

浮动布局 float

取值:left | right | none

设置给:块元素、行内元素、行内块元素

作用:利用float属性可设置元素的浮动,使元素可以在一行上显示。虽然浮动主要是应用于块元素,但行内元素其实也可以浮动,但行内元素本来就是一行显示,所以也没有这个必要

浮动布局的特点

1.一旦元素浮动,它就会脱离标准文档流。它会悬在它原来的位置上面,也即它原来占据的位置被腾空。

2.浮动元素对它前面的兄弟元素无任何影响,只对它后面的兄弟元素有影响。由于它已经脱离了正常文档流,它腾空的位置就会被其它正常元素占据。比如:两个尺寸相同的兄弟div,A在前,B在后,当A向左浮动后,B就会占据A的位置,但由于A悬浮在B上面,所以会看不到B。看起来就是两个盒子处在了同一个位置。但是如果它下面的元素是行内/行内块元素,则浮动的块元素会与它们并列显示,不会发生重叠

3.只有当元素全部浮动后才会并排显示,只要中间有未浮动的div挡路,由于未浮动的div是独占一行,这就会导致后面的浮动元素在下一行显示而非并排。比如:三个兄弟div,A向左浮动、B不浮动、C向左浮动,则AB会重叠、C显示在B原来的位置

4.一行上,某元素浮动后,原本与它基线对齐的元素会变成与它顶对齐,即便多个元素都浮动,同样也是顶线对齐

5浮动元素会受到父元素padding和自身margin的影响会在padding、margin处停止

6.元素一旦浮动就会变成行内块元素,具备行内块的特性。

7.由于子元素浮动后,它会脱离正常文档流,如果一个父元素里的子元素全部脱离的正常流,那么父元素如果没有明确设置一个≥子元素高度的height,则子元素会溢出。

清除浮动

浮动元素除了对父元素高度造成影响以外,它还会对它后面的元素造成影响。可以使用清除浮动来避免这种影响。有四种方法可清除浮动:

#father {
    width: 500px;
    background: black;
}

#son1 {
    float: left;
    width: 500px;
    height: 50px;
    background: #010056;
}

#footer {
    height: 50px;
    background: #ff6a00;
}

<div id="father">
    <div id="son1"></div>
</div>

<div id="footer"></div>

son1的父元素因为没有明确设置高度且自身因为浮动而脱离了标准文档流,所以父元素的高度为0。当footer受到son1的浮动影响后,footer会占据son1的位置。

解决方法1.

设定父div的高≥后代元素的总高度,这样父元素后面的兄弟元素就不再受浮动的影响。

#father{
    width:500px;
    height:50px;
    background:black;           
}

父元素有了高度后,footer就可以正常显示在father的下面

解决方法2

设置父元素的overflow,取值hidden、scroll、auto,三个取值在此处的效果是一样的,它使父元素可以根据子元素的总高度自动撑开自身。这种方式与明确设置父元素高度是完全一样的。

#father{
    width:500px;   
    overflow:hidden;
    background:black;           
}

比如常见的ul列表,一旦其li浮动,ul又没有明确设置≥li的高度,那么ul的高度会变成0。

解决方法3

在最后一个浮动元素的后面放一个空的盒子,设定其css的clear属性,取值有left、right、both。一旦使用了clear清除浮动影响后,父元素可以自动计算出它的高度去正确包裹住它的所有子元素。推荐使用这种方式清除浮动,好处在于它不但清除了son1对son2的影响,同时还使父元素有了高度。

<div id="father">
    <div id="son1"></div>
    <div style="clear:left;"></div>
    <div id="son2"></div>
</div>

<div id="footer"></div>

解决方法4

利用伪元素::after,这个伪元素是在父元素所包含的区域内的最后区域附加一个伪元素,用该伪元素清除浮动。

.box::after {
    content: "";
    display: block;
    clear: both;
}
<div id="father">
    <div id="son1"></div>   
    ::after被放在了此处
</div>

<div id="footer"></div>

解决方法5

在受浮动影响元素上设置overflow

#son2 {
    overflow:hidden;
    width:20px;
    height: 20px;
    background: green;
}
<div id="father">
    <div id="son1"></div>
    <div id="son2"></div>
</div>

<div id="footer"></div>

  

Css - 学习总目录

Css - 浮动布局的更多相关文章

  1. css浮动布局

    上次我们一起对盒子模型进行了一定的了解,今天我们就对css浮动布局做一下研究.首先我们来了解一下网页基本布局的三种形式. 首先我们来了解一下什么是网页布局: 网页的布局方式其实就是指浏览器是如何对网页 ...

  2. CSS浮动布局与菜单栏设计

    公司周六停电,终于可以双休了.用周五空余时间再夯实一下css基础,<CSS权威指南>概念性的内容看起来容易犯困,不如实践来得快,动手操作吧. 一.浮动布局 浮动存在问题:浮动使元素脱离文档 ...

  3. css浮动布局,浮动原理,清除(闭合)浮动方法

    css浮动 1.什么是浮动:在我们布局的时用到的一种技术,能够方便我们进行布局,通过让元素浮动,我们可以使元素在水平上左右移动,再通过margin属性调整位置 2.浮动的原理:使当前元素脱离普通流,相 ...

  4. CSS浮动布局带来的高度塌陷以及其解决办法

    1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...

  5. css浮动布局小技巧

    父元素如何围住浮动的子元素的三种办法: 一.为父元素应用overflow:hidden. overflow真正用途是防止包含元素被大的内容撑开,设定了宽度之后,包含元素将超过容器的内容减掉:而它还有另 ...

  6. css 浮动布局,清除浮动

    浮动的特性: (1)浮动元素有左浮动(float:left)和右浮动(float:right)两种 (2)浮动的元素会向左或向右浮动,碰到父元素边界.其他元素才停下来 (3)相邻浮动的块元素可以并在一 ...

  7. div css float布局用法

    float的应用与用法 想要知道float的用法,首先你要知道float在网页中的用处. 浮动的目的就是为了使得设置的对象脱离标准文档流. 什么是标准文档流? 网页在解析的时候,遵循于从上向下,从左向 ...

  8. 前端开发:css基础知识之盒模型以及浮动布局。

    前端开发:css基础知识之盒模型以及浮动布局 前言 楼主的蛮多朋友最近都在学习html5,他们都会问到同一个问题 浮动是什么东西?  为什么这个浮动没有效果?  这个问题楼主已经回答了n遍.今天则是把 ...

  9. html/css 盒子布局 Margin 、Padding 、border 以及 清除浮动的知识 (学习HTML过程中的小记录)

    html/css  盒子布局 Margin .Padding .border 以及 清除浮动的知识 (学习HTML过程中的小记录) 作者:王可利(Star·星星) width     是"宽 ...

随机推荐

  1. JS学习笔记Day6

    一.数组 1.数组就是个容器,里面可以存放任意类型的数 2.定义数组:1)var arr = []: 2)var arr = new Array():构造函数定义方式,如果括号中有一个整数,该正数代表 ...

  2. node.js小案例_留言板

    一.前言 通过这个案例复习: 1.node.js中模板引擎的使用 2.node.js中的页面跳转和重定向 二.主要内容 1.案列演示:  2.案列源码:https://github.com/45612 ...

  3. ajax请求封装函数

    写封装函数的套路 1.先写出这个函数原来的基本用法 2.写一个没有形参空函数,将上一步的代码直接作为函数体, 3.根据使用过程中,抽象出来需要变的东西作为形参 function ajax (metho ...

  4. Linux系统下DNS主从配置详解

    一.DNS概述DNS(Domain Name System),即域名系统.因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串. ...

  5. bzoj1003 最短路+dp

    遇到小范围数据的题目就容易被限制了思维,我单知道数据小可以跑很多遍最短路,但我没想到暴力跑N ^ 2的最短路也能过 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输 ...

  6. CodeForces12D 树状数组降维

    http://codeforces.com/problemset/problem/12/D 题意 给N (N<=500000)个点,每个点有x,y,z ( 0<= x,y,z <=1 ...

  7. 使用Redis模拟简单分布式锁,解决单点故障的问题

    需求描述: 最近做一个项目,项目中有一个功能,每天定时(凌晨1点)从数据库中获取需要爬虫的URL,并发送到对应的队列中,然后客户端监听对应的队列,然后执行任务.如果同时部署多个定时任务节点的话,每个节 ...

  8. C#设计模式(1)——简单工厂模式

    1.什么是简单工厂 现实中的工厂负责生产产品,顾名思义,编程中的简单工厂就是一个生产对象的类,它的主要作用是创建具体的产品类实例.我们以一个生产鼠标为例来分析简单工厂的作用,鼠标有两种:戴尔鼠标和惠普 ...

  9. OPC和DCOM配置

    本文为Java实现OPC通信的一部分 系统:使用win10 64位专业版 PDF文件: 本文,链接:  百度网盘 密码: reht, Win7和Win7_SP1网络OPC配置,链接:  百度网盘 密码 ...

  10. Spyder Crashed During Last Session

    尝试一:Command: pyhton spyder --reset 尝试二:Command: spyder --show-console  (突然就好了...)