一、问题描述

  web网页设计中,在div元素中有时候常伴有图文结合的post组件。为了使得文本在图像周围环绕,那么需要对图像区域使用float浮动。如果不做清除浮动,则会出现如下结果:

    图像比文本高,且图像脱离并超出了父级元素的文档流。

  源码:

<!DOCTYPE html>
<html>
<head>
<title>float demo span(block;clear;height)</title>
</style>
</head>
<body>
<div style="/*width: 300px;*//*height: 200px;*/padding:10px;border: 1px solid red;background-color: yellow;font-size: ">
<div class="photo" style="border: 1px solid black;padding:15px;float: left">
<img src="test.jpg" style="">
</div>
<section style="display: block;background-color: white;padding: 1px;">
<h3>肖像摄影</h3>
<p>
眼神锋利,嘴里叼着烟的画家;神情严肃,姿态自信的泥瓦匠;笑容憨厚,略有些拘谨的拳击手...... 600 多张不同年龄、职业的德国人的肖像,充满个性,又有着一脉相承的直率和倔强。这些作品来自一位以拍摄肖像而著名的德国摄影师——奥古斯特·桑德(August Sander,1876-1964)。
</p>
</section>
</div>
</body>
</html>

  原因分析:

  此处的div父级元素只能识别出子元素文本部分的高度,而图像比文本更高,所以高出部分就露出来了。那么,为了使得图像不超出母元素的高度,就必须进行float的浮动清除。

 

二、解决方案一

  源码:在父级元素内的末尾处加上span[display:block;height:0;clear:both]

<span style="display: block;clear: left;padding: 15px;background-color: red;"></span>

  解释:在浮动元素的后面兄弟元素(一般是末尾元素)中,加入span元素(display:block,clear:left(or right(根据浮动方向来))):
原因:块级元素(display:block)要独占一块文档流(且独立一行),再清除一下前面浮动兄弟元素的浮动方向的浮动,那本来应该浮动的span清除浮动后,自然要独占一行了(去掉padding后,对整体文档无影响)。

  效果:

  

  缺点:蛮力【需要强行加入span并添加其样式】:增加工作量;不利于页面优化 

二、解决方案二【推荐】

  源码:为div父级元素,设置公用类.clearfix

    .clearfix:after {
overflow: auto;
display: block;
clear: both;
content: attr(data-sort); /* 一般为 ‘ ’,此处为做测试 */
visibility: hidden;
height:0; /*使得不占据文档流*/
}
/* .clearfix:before{
overflow: auto;
display: block;
clear: both;
content: ' ';
visibility: hidden;
height:0;
}*/

  解释:略(见源码仔细领会)

  效果:

  

  优点:

    组件化设计的思想,可以大面积公用;提高生产效率,也有利于页面优化

三、参考文档:

  1.《网络设计的原理》|桧山佐知子:防止使用float时版面被破坏

  2.图文来源:蜂鸟网:http://image.fengniao.com/534/5345869.html

CSS之清除浮动(span/clearfix)的更多相关文章

  1. 【css】清除浮动(clearfix 和 clear)的用法

    本文主要是讲解如何在 html 中使用 clearfix 和 clear,针对那些刚开始了解 css 的童鞋.关于 clearfix 和 clear 的样式在这里我就不写了,具体样式点击此处. 下面就 ...

  2. 【css】清除浮动的几种方式

    [css]清除浮动的几种方式   因为浮动框不在普通的文档流中,所以它不占据空间.如下面的代码: .news { background-color:gray; border:1px solid bla ...

  3. HTML&CSS基础-清除浮动

    HTML&CSS基础-清除浮动 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看浮动效果 1>.HTML源代码 <!DOCTYPE html> &l ...

  4. div+css之清除浮动

    当元素有浮动属性时,会对其父元素或后面的元素产生影响,会出现一个布局错乱的现象,可以通过清除浮动的方法来解决浮动的影响. 浮动的清理(clear): 值:none:默认值.允许两边都可以有浮动对象:l ...

  5. CSS中清除浮动的作用以及如何清除浮动

    1.什么是浮动,浮动的作用 “浮动”从字面上来理解就是“悬浮移动.非固定”的意思.块级元素(div.table.span…)是以垂直方向排列,而在前端界面中往往要使用水平布局块级元素使界面更美观.这就 ...

  6. 【CSS】清除浮动的五种方式

    清除浮动是一件功德无量的事情23333 这里记录一下清除浮动的多种方式 *首先要明确的是,为什么要清除浮动? A 影响其他元素定位 父盒子高度为0,子盒子全部浮动.定位,子盒子不会撑开父盒子,下面的元 ...

  7. CSS——如何清除浮动

    众所周知,平时在写HTML代码时,难免少不了使用Float样式,这样一来,假使您没有清除浮动,那么有浮动元素的父元素容器将元素将无法自动撑开.换句简单好理解的话来说,假如你在写CODE时,其中div. ...

  8. 面试 CSS篇清除浮动及display:inline-block

    一. 在div使用display:inline-block时,HTML代码中的回车换行键会被转化为一个空白符 如图 <style type="text/css"> *{ ...

  9. CSS中清除浮动的两种方式

    在CSS中,父元素中的子元素如果使用了float,会导致父元素塌陷,高度为0. 对于这种情况,常见的解决方式有两种. 一.增加新的div,应用clear:both属性 html: <div cl ...

随机推荐

  1. Bootstrap滚动监控器

    前面的话 滚动监听插件是用来根据滚动条所处的位置来自动更新导航项的.滚动导航条下面的区域并关注导航项的变化,下拉菜单中的条目也会自动高亮显示.本文将详细介绍Bootstrap滚动监控器 基本用法 滚动 ...

  2. BZOJ3417[Poi2013]Tales of seafaring——BFS

    题目描述 Young Bytensson loves to hang out in the port tavern, where he often listens to the sea dogs te ...

  3. So you want to be a 2n-aire? UVA - 10900(概率)

    题意: 初始值为1, 每次回答一个问题,如果答对初始值乘2,答错归0,结束,一共有n个问题,求在最优的策略下,最后值的期望值 解析: 注意题中的一句话  每个问题的答对概率在t和1之间均匀分布  也就 ...

  4. 覆盖的面积 HDU - 1255(扫描线求面积交)

    题意: 就是扫描线求面积交 解析: 参考求面积并.... 就是把down的判断条件改了一下..由w > 0 改为 w > 1 同时要讨论一下 == 1 时  的情况, 所以就要用到一个临时 ...

  5. CSS覆盖公共样式中的某个属性

    CSS如何覆盖公共样式中的某个属性?利用CSS样式的优先级. 如下例子: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transition ...

  6. MT【29】介绍向量的外积及应用举例

    我们在学校教材里学到的数量积(内积)其实还有一个孪生兄弟向量积(外积),这个对参加自主招生以及竞赛的学生来讲是需要掌握的,这里稍作介绍: 原理: 例题: 应用:

  7. C代码快速构建框架

    #include "stdio.h" typedef char int8_t; typedef short int16_t; typedef int int32_t; typede ...

  8. 端午漫谈(附:Ubuntu18.04下轻量截图软件)

    先说声端午快乐- 有空就陪陪家人吧.今天陪外公吃了顿饭,陪老人家聊了会天,颇有点感触.发现技术真的是改变生活,小孩抖音自学跳舞,大人微信刷又刷,很多天海一方的老朋友都可以联系到了... 其实最有感触的 ...

  9. 使用nagios监控ssl证书过期时间

    1.编写监控脚本. # vim check_ssl_expiry.sh #!/bin/bash STATE_OK=0 STATE_WARNING=1 STATE_CRITICAL=2 Host=$1 ...

  10. 拆分string 用空格 逗号

    string that have both comma and space struct tokens: std::ctype<char>{ tokens(): std::ctype< ...