热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

清除浮动的四种方法(详解)

以下全部操作是在Webstorm中进行的,个人认为webstorm比dreamweaver好用。操作例子样图:代码:<!DOCTYPEhtml><html><

以下全部操作是在 Webstorm中进行的,个人认为webstormdreamweaver好用。

 

操作例子

样图:


代码:











我是内容


我是内容


我是内容




我是内容


我是内容


我是内容





全部左浮动后:

 











我是内容


我是内容


我是内容




我是内容


我是内容


我是内容




---------------------------------------------------------------------------------------------------

清除浮动后的效果是:让黄色部分与蓝色部分分行。

 

因为没有设置 box1 box2的宽和高,所以box1box2的形状 随着 浮动状态的变化而变化。

---------------------------------------------------------------------------------------------------

方法一:clear:both;这是最基本的方法

代码:











我是内容


我是内容


我是内容




我是内容


我是内容


我是内容




出现问题:不能直接用margin-topmargin-bottom设置两个兄弟盒子之间的距离。

解决方法:给这两个的盒子的父元素盒子添加一个边框。











我是内容


我是内容


我是内容




我是内容


我是内容


我是内容




这样就能设置margin-topmargin-bottom属性,但是如果当这两个属性的值设置的太小,box1box2之间依然没有空隙分开。

设置 box2 margin-top: 10px;时:


设置 box2 margin-top: 20px;


设置 box2 margin-top: 30px;

 

当值为30的时候才会出现空隙。

Margin-bottom:;margin-top相同。



改变box1box2两个盒子之间的距离:

先给 box1box2的父元素加一个边框,然后再给box2添加margin-top属性或者给box1添加margin-bottom属性,添加的属性赋予适当的 数值 ,因为数值太小没有任何效果,box1box2不会有空隙。

原因如图:

 

Margin-top的数值是大于所看到的距离的。所以margin-top数值在设置的时候要设置的大一些,大于所看到的分开距离。

 


方法二: 隔墙法

1.外墙法

方法: 在两个盒子(box1 , box2)之间添加一个额外的块级元素。

       给这个额外添加的块级元素设置clear:both;属性。

 

代码:












我是内容


我是内容


我是内容





我是内容


我是内容


我是内容




1)可以给box2盒子添加margin-top属性,让box1box2分开。

2)不可以给box1盒子添加margin-bottom属性:

 解决方法给box1盒子的父元素(body)添加一个边框。

 给父元素添加完边框后的情况:

  box2添加  Margin-top: 10px;   box1box2分开10px

   box1 添加 margin-bottom: 30px; box1 box2 分开10px

  其原因 直接添加 clear: both; 一样,解决方法也一样。

(3)使 box1 box2 分开有空隙的方法:

         1. box1添加 margin-bottom属性,但是这种方法要给body设置边框,而且margin-bottom属性的值要设置的大一些。

         2. box2添加 margin-top属性。

         3.

”qiang”>
这个盒子设置高度。也就是给额外添加的块级元素添加高度这一属性,高度的值与所想要的box1box2之间的距离相同。

方法代码:











我是内容


我是内容


我是内容





我是内容


我是内容


我是内容




2.内墙法

方法:(1) 在第一个盒子(box1)中所有的子元素最后添加一个额外的块级元素。

         2) 给这个额外添加的块级元素设置clear:both;属性。

 

代码:

 











我是内容


我是内容


我是内容





我是内容


我是内容


我是内容





1)可以给box2盒子添加margin-top属性,让box1box2分开。

2)可以给box1盒子添加margin-bottom属性,让box1box2分开。


使 box1 box2 分开有空隙的方法:

         1. box1添加 margin-bottom属性。

         2. box2添加 margin-top属性。

 3

”qiang”>
这个盒子设置高度。也就是给额外添加的块级元素添加高度这一属性,高度的值与所想要的box1box2之间的距离相同。


总结:

*比较这两种方法,说出外墙法和内墙法的不同之处?

(1)内墙法直接就可以用margin-bottom设置box1box2之间的距离,但是外墙法要经过处理(给父元素添加边框),才能用margin-bottom设置距离。

(2)外墙法不能撑起第一个盒子的高度,而内墙法可以撑起第一个盒子的高度。

方法: 在额外增加的块级元素中添加高度这个属性,用块级元素的高度来改变两个盒子之间的上下距离。

内墙法:


外墙法:

 


内墙法和外墙法在企业开发中都不推荐使用,很少进行使用。因为添加了很多额外的块级元素,影响了代码的可读性。在前端开发中推崇的是:结构和样式分离。

 

 

方法三: 伪元素法


在讲伪元素法之前先要了解伪元素选择器

伪元素选择器的作用:给指定标签的内容前面添加一个子元素或者给指定标签的内容后面添加一个子元素。

效果图:

 

不用伪元素选择器给内容 添加 前后子元素:

代码:











我是前面。


我是内容。

我是后面。






使用伪元素选择器进行添加内容的前后子元素:

代码:











我是内容。



隐藏内容前面或者内容后面的子元素的方法:

以隐藏内容后面的子元素为例子

方法:

height: 0px;

visibility: hidden;  .box1::after{}中的height属性的值改为0visibility属性的值改为hidden

(1)height: 0px; 的意思是:将盒子或块级元素的高度变为零,隐藏显示后面子元素的区域。

(2)visibility: hidden; 的意思是:将盒子或块级元素中的文字部分隐藏起来。

 综上所述,显示区域和内容区域都被隐藏起来了,所以整个子元素也被隐藏起来了。


代码:











我是内容。



利用 伪元素选择器 清除浮动:

方法:在第一个盒子(box1)中内容的最后 添加一个 伪元素选择器。在伪元素选择器中添加content: "";  height: 0px;  visibility: hidden;  display: block;  clear: both;这些属性。

 

content: ""   不写入任何的内容。

height: 0px;   显示区域没有高度。

visibility: hidden;  隐藏内容区域的内容部分。

display: block;  设置成块级元素。

clear: both; 清除所有浮动

 

代码:











我是内容


我是内容


我是内容




我是内容


我是内容


我是内容





 注意:在box1中添加*zoom: 1;的原因是: 兼容IE6, 提高兼容性。

    (1)可以给box2盒子添加margin-top属性,让box1box2分开。

     2)可以给box1盒子添加margin-bottom属性,让box1box2分开。


使 box1 box2 分开有空隙的方法:

         1. box1添加 margin-bottom属性。

         2. box2添加 margin-top属性。

 3 给伪元素选择器设置高度,高度的值与所想要的box1box2之间的距离相同。

 

注意: 伪元素法可以撑起第一个盒子(box1)的高度,与内墙法效果一样。

当给伪元素选择器添加一个高度属性的时候,第一个盒子就会被撑起来。

 


方法四: overflow: hidden;

 Overflow 的几个作用:

 作用一:清除浮动

方法:在第一个盒子中添加overflow: hidden;属性。

代码:











我是内容


我是内容


我是内容




我是内容


我是内容


我是内容




 注意:  在box1中添加*zoom: 1;的原因是: 兼容IE6 提高兼容性。

1)可以给box2盒子添加margin-top属性,让box1box2分开。

2)可以给box1盒子添加margin-bottom属性,让box1box2分开。

 

使 box1 box2 分开有空隙的方法:

         1. box1添加 margin-bottom属性。

         2. box2添加 margin-top属性。

 

作用二: 切除(删除)超出的内容部分:

 没切除之前:

 

代码:











我是内容我是内容我是内容我是
内容我是内容我是内容我是内容
我是内容我是内容我是内容我是
内容我是内容我是内容我是内容
我是内容我是内容我是内容我是
内容我是内容我是内容我是内容
我是内容我是内容我是内容我是
内容我是内容我是内容我是内容
我是内容我是内容我是内容我是
内容我是内容我是内容我是内容
我是内容我是内容我是内容我是
我是内容我是内容我是内容我是
我是内容我是内容内容内容






 

切除超出内容之后: .box1中添加overflow: hidden;属性即可。

 

代码:











我是内容我是内容我是内容我是
内容我是内容我是内容我是内容
我是内容我是内容我是内容我是
内容我是内容我是内容我是内容
我是内容我是内容我是内容我是
内容我是内容我是内容我是内容
我是内容我是内容我是内容我是
内容我是内容我是内容我是内容
我是内容我是内容我是内容我是
内容我是内容我是内容我是内容
我是内容我是内容我是内容我是
我是内容我是内容我是内容我是
我是内容我是内容内容内容






作用三 防止外面的盒子因为里面的盒子使用margin-top的时候被顶下来。

  两个属于嵌套关系的盒子,当设置里面盒子的margin-top的同时,外面盒子也会被顶下来。

 

属于嵌套关系的两个盒子:

 

当给里面的蓝色盒子使用margin-top: 20px;的时候:

 

当给box1(外面的盒子)添加一个overflow: hidden;属性的时候:

 

代码:














总结:

两个具有嵌套关系的盒子,当给里面的盒子设置margin-top属性的时候,外面的盒子也会受到影响被顶下来,解决方法有两个:1.给外面盒子设置边框 ,2.给外面盒子添加overflow: hidden;属性。第一种方法不推荐使用,因为如果外面的盒子是最大的body,虽然可以设置边框,但是在企业开发中是不允许的,在企业开发中我们不会给body设置一个边框的。所以遇到这样的问题就用第二种方法。

 


推荐阅读
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 本文详细探讨了使用纯JavaScript开发经典贪吃蛇游戏的技术细节和实现方法。通过具体的代码示例,深入解析了游戏逻辑、动画效果及用户交互的实现过程,为开发者提供了宝贵的参考和实践经验。 ... [详细]
  • 通过纯CSS技术,可以轻松创建精致的小圆点和三角形图形。本文详细介绍了如何利用CSS的伪元素、边框和背景属性,实现这些图形的高效绘制,并提供了多种应用场景和示例代码,帮助开发者在网页设计中增添更多视觉效果。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • javax.mail.search.BodyTerm.matchPart()方法的使用及代码示例 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 深入解析HTML5字符集属性:charset与defaultCharset
    本文将详细介绍HTML5中新增的字符集属性charset和defaultCharset,帮助开发者更好地理解和应用这些属性,以确保网页在不同环境下的正确显示。 ... [详细]
  • oracle c3p0 dword 60,web_day10 dbcp c3p0 dbutils
    createdatabasemydbcharactersetutf8;alertdatabasemydbcharactersetutf8;1.自定义连接池为了不去经常创建连接和释放 ... [详细]
  • 本文详细介绍了如何使用Python中的smtplib库来发送带有附件的邮件,并提供了完整的代码示例。作者:多测师_王sir,时间:2020年5月20日 17:24,微信:15367499889,公司:上海多测师信息有限公司。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 本文介绍了Java中的com.sun.codemodel.JBlock._continue()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 本文将详细介绍如何在Webpack项目中安装和使用ECharts,包括全量引入和按需引入的方法,并提供一个柱状图的示例。 ... [详细]
  • 【问题】在Android开发中,当为EditText添加TextWatcher并实现onTextChanged方法时,会遇到一个问题:即使只对EditText进行一次修改(例如使用删除键删除一个字符),该方法也会被频繁触发。这不仅影响性能,还可能导致逻辑错误。本文将探讨这一问题的原因,并提供有效的解决方案,包括使用Handler或计时器来限制方法的调用频率,以及通过自定义TextWatcher来优化事件处理,从而提高应用的稳定性和用户体验。 ... [详细]
  • 本文全面解析了JavaScript中的DOM操作,并提供了详细的实践指南。DOM节点(Node)通常代表一个标签、文本或HTML属性,每个节点都具有一个nodeType属性,用于标识其类型。文章深入探讨了DOM节点的创建、查询、修改和删除等操作,结合实际案例,帮助读者更好地理解和掌握DOM编程技术。 ... [详细]
author-avatar
吴冲幸福
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有