css之浮动的清除

先看看不清除浮动的效果

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>Document</title>
    <style type="text/css">
        ul {list-style: none; }
        li { float: left;margin-left: 5px;padding: 0;}
        .div1 li {background-color: red;}
        .div2 li {background-color: green; }
    </style>
</head>
<body>
    <div class="div1">
        <ul>
            <li><a href="https://home.cnblogs.com/">园子</a></li>
            <li><a href="https://news.cnblogs.com">新闻</a></li>
            <li><a href="https://q.cnblogs.com/">博问</a></li>
        </ul>
    </div>
    <div class="div2">
        <ul>
            <li><a href="/" class="current_nav">首页</a></li>
            <li><a href="/pick/" title="编辑精选博文">精华</a></li>
            <li><a href="/candidate/" title="候选区的博文">候选</a></li>
        </ul>
    </div>
</body>
</html>

本想让div1和div2分成两行显示,但是结果显示在了一行,第二组中的第1个li,去贴靠第一组中的最后一个li了。看看两个div的高度,显示为0,原因就是因为div没有高度,不能给自己浮动的子元素们一个容器。

清除浮动方法

清除浮动方法1.给浮动的元素的祖先元素加高度

如果一个元素要浮动,那么它的祖先元素一定要有高度,有高度的盒子,才能关住浮动。只要浮动在一个有高度的盒子中,那么这个浮动就不会影响后面的浮动元素。所以就是清除浮动带来的影响了。

上面的代码,为了让div1浮动的子元素不影响div2,给div1增加 .div1{height: 50px;} 或者给div1的任何一个父级加上高度就达到了想要的结果。

网页制作中,高度height很少出现。因为能被内容撑高(浮动的元素不能撑高父元素),所以这种清除浮动的方法不太适用。

清除浮动方法2:clear:both; 

  clear:both; 清除左右浮动,这种方法有一个非常大的问题,margin失效了。

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>Document</title>
    <style type="text/css">
       ul{list-style: none;}
       li{float: left;margin-left: 5px;padding: 0;background-color: green;}
       .div1{margin-bottom: 100px;}/*margin失效*/
       .div2{margin-top: 100px;clear:both;}/*margin失效*/
    </style>
</head>
<body>
    <div class="div1">
        <ul>
            <li><a href="https://home.cnblogs.com/">园子</a></li>
            <li><a href="https://news.cnblogs.com">新闻</a></li>
            <li><a href="https://q.cnblogs.com/">博问</a></li>
        </ul>
    </div>
    <div class="div2">
        <ul>
            <li><a href="/" class="current_nav">首页</a></li>
            <li><a href="/pick/" title="编辑精选博文">精华</a></li>
            <li><a href="/candidate/" title="候选区的博文">候选</a></li>
        </ul>
    </div>
</body>
</html>

清除浮动方法3:隔墙法

外墙法

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>Document</title>
    <style type="text/css">
       ul{list-style: none;}
       li{float: left;margin-left: 5px;padding: 0;background-color: green;}
       .div1{margin-bottom: 100px;}/*margin失效*/
       .both { clear: both;margin-top:100px; }/*margin失效*/     .h10{height:10px;}
    </style>
</head>
<body>
    <div class="div1">
        <ul>
            <li><a href="https://home.cnblogs.com/">园子</a></li>
            <li><a href="https://news.cnblogs.com">新闻</a></li>
            <li><a href="https://q.cnblogs.com/">博问</a></li>
        </ul>
    </div>
    <div class=‘both .h10‘></div>
    <div class="div2">
        <ul>
            <li><a href="/" class="current_nav">首页</a></li>
            <li><a href="/pick/" title="编辑精选博文">精华</a></li>
            <li><a href="/candidate/" title="候选区的博文">候选</a></li>
        </ul>
    </div>
</body>
</html>

margin仍然失效,但是可以给<div class=‘both‘></div> 设置高度,充当margin效果。

内墙法

  <div class=‘both h10‘></div> 放到div1的内部,好处是内容可以撑出父级的高了,margin也不会失效了。

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>Document</title>
    <style type="text/css">
       ul{list-style: none;}
       li{float: left;margin-left: 5px;padding: 0;background-color: green;}
       .both { clear: both; }
       .h10{height:10px;}
    </style>
</head>
<body>
    <div class="div1">
        <ul>
            <li><a href="https://home.cnblogs.com/">园子</a></li>
            <li><a href="https://news.cnblogs.com">新闻</a></li>
            <li><a href="https://q.cnblogs.com/">博问</a></li>
        </ul>
        <div class=‘both h10‘></div>
    </div>
    <div class="div2">
        <ul>
            <li><a href="/" class="current_nav">首页</a></li>
            <li><a href="/pick/" title="编辑精选博文">精华</a></li>
            <li><a href="/candidate/" title="候选区的博文">候选</a></li>
        </ul>
    </div>
</body>
</html>

清除浮动方法4:overflow:hidden;

一个父元素不能被自己浮动的子元素撑出高度。但是只要给父级元素加上 overflow:hidden ; 父亲就能被子元素撑出高了。

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>Document</title>
    <style type="text/css">
       ul{list-style: none;}
       li{float: left;margin-left: 5px;padding: 0;background-color: green;}
       .div1{overflow:hidden;}
    </style>
</head>
<body>
    <div class="div1">
        <ul>
            <li><a href="https://home.cnblogs.com/">园子</a></li>
            <li><a href="https://news.cnblogs.com">新闻</a></li>
            <li><a href="https://q.cnblogs.com/">博问</a></li>
        </ul>
        <div class=‘both‘></div>
    </div>
    <div class="div2">
        <ul>
            <li><a href="/" class="current_nav">首页</a></li>
            <li><a href="/pick/" title="编辑精选博文">精华</a></li>
            <li><a href="/candidate/" title="候选区的博文">候选</a></li>
        </ul>
    </div>
</body>
</html>

本文非原创,纯粹学习笔记

时间: 2024-10-12 09:25:19

css之浮动的清除的相关文章

CSS的浮动和清除

CSS浮动和清除 什么是浮动? 在实现效果上,让元素浮起来(飘起来),动起来(向左或向右移动) 浮动本质:就是将两个块元素同存一行. float 取值:主要是对浮动的方向进行控制 left:让元素向左浮动 right:让元素向右浮动 浮动的特性: 当网页中的某些元素(如:div1,div2,div3)设置了浮动后,,这些设元素飘起来后,会遇到边线. 边线:父元素的边线(.box的边线),同时有多个浮动元素的话,边线也可以是上一个浮动元素的边 置了额浮动效果的元素会脱离普通文档流,现象是:浮动,飘

CSS浮动与清除浮动(overflow)例子

在css中浮动与清除浮动功能是我们开发中常用到的一个功能了,下面小编来为各位分析关于CSS浮动与清除浮动(overflow)例子吧. float脱离文本流,可是为什么文字却会有环绕的效果,这点实在是神奇,于是乎就去问了师匠: Normal flow is the way that elements are displayed in a web page in most circumstances. All elements in HTML are inside boxes which are e

css的浮动以及如何清除浮动

css的浮动是经常会在实际中运用到,之前我对浮动的理解就是使用float,除此之外没有深入理解,后来发现对于浮动还是有必要深入理解一下. css浮动 css的浮动是float属性,该属性没有继承性,默认值为none,该属性有四个值,以下一一解释: 1)right:向右浮动 2)left:向左浮动 3)none:没有浮动 4)inherit:规定继承父元素的浮动 css的浮动实际上就是打破标准流,如果说没有浮动的元素是在一个标准流里,那么浮动的元素将脱离原本的标准流浮动. 元素的浮动效果 例子:以

css浮动和清除浮动

浮动存在的原因 在word排版中,文本可以环绕图片.在css中,想要实现文字环绕的效果,只能借助于float,没有其他的替代方式.在实际中,文档的布局经常会使用浮动. float属性 float属性,默认为none,也就是标准流通常的情况.如果将float的属性的值设置为left或right,元素就会向其父元素的左侧或右侧紧靠. inherit表示从父元素继承float属性的值. clear属性 clear 属性定义了元素的哪边上不允许出现浮动元素.在 CSS1 和 CSS2 中,这是通过自动为

css通用小笔记02——浮动、清除(三个例子)

css中通常会用到浮动与清除,也是一个必须掌握的知识点,概念性的东西不多说,下面举几个例子,来说明它的用法:1.文字环绕效果  2.多个div并排显示 3.清除浮动(默认显示) 一.文字环绕效果: html代码如下: 1 <body> 2 3 <style type="text/css"> 4 #big img {float: left;padding: 10px;border: 1px solid red;} 5 #big span {font-size: 2

CSS设计指南之浮动与清除

原文:CSS设计指南之浮动与清除 浮动意思就是把元素从常规文档流中拿出来,浮动元素脱离了常规文档流之后,原来紧跟在其后的元素就会在空间允许的情况下,向上提升到与浮动元素平起平坐. 一.浮动 CSS设计float属性的主要目的,是为了实现文本绕排图片的效果.然而,这个属性也成为了创建多栏布局最简单的方式. 1.文本绕排图片 在浮动一张图片或其他元素时,你是在要求浏览器把它往上方推,直到它碰到父元素的内边界.后面的段落不再认为浮动元素在文档流中位于它的前面了,因为它会占据父元素左上角的位置.不过,它

css中的浮动以及清除浮动

对于css中的浮动问题,曾经有一段时间我是懵懵懂懂的感觉,对于float这个属性一直是似懂非懂的赶脚,对于这种让我们一直懵懵懂懂的知识点,我们就需要找个时间点,仔仔细细的去将它搞懂,从这个过程中我们也会去复习以前的知识,这是真正会让我们有所提高的一个过程,是所谓温故而知新.那么在学习的过程中也看了很多大神的博客,这里就来总结一下我个人对于float的理解; css的浮动使我们在布局的时候经常会用到的一个属性,在大量的使用过程中,我们可能只是一知半解的去使用,或者使用的时候得到了自己想要的结果就绝

CSS 浮动和清除浮动

CSS浮动和清除   float:让元素浮动,取值:left(左浮动).right(右浮动)   clear:清除浮动,取值:left(清除左浮动).right(清除右浮动).both(同时清除上面的左浮动和右浮动) 1.CSS浮动   浮动的元素,将向左或向右浮动,浮动到包围元素的边上,或上一个浮动元素的边上为止.   浮动的元素,不再占空间了,并且,浮动元素的层级要高于普通元素.   浮动的元素,一定是“块元素”.不管它原来是什么元素. 如果浮动的元素,没有指定宽度的话,浮动后它将尽可能的变

(转)css中通常会用到浮动与清除,也是一个必须掌握的知识点,概念性的东西不多说,下面举几个例子,来说明它的用法:1.文字环绕效果 2.多个div并排显示 3.清除浮动(默认显示)

一.文字环绕效果: html代码如下: 1 <body> 2 3 <style type="text/css"> 4 #big img {float: left;padding: 10px;border: 1px solid red;} 5 #big span {font-size: 24px;font-weight: bold; margin: 0 auto;} 6 </style> 7 <div id="big">