当前位置: 首页 > 面试题库 >

CSS规则“清除:两者”有什么作用?

燕翔飞
2023-03-14
问题内容

以下CSS规则有什么作用:

.clear { clear: both; }

为什么我们需要使用它?


问题答案:

我不会在这里详细解释浮点数的工作原理,因为这个问题通常集中在“ 为什么要使用clear: both;OR或到底有什么作用”方面clear: both;

我将简单,直截了当地回答这个问题,并以图形方式向您解释为什么clear: both;需要这样做或做什么……

通常,设计人员将元素向左或向右浮动,从而在另一侧创建一个空白空间,该空间允许其他元素占用剩余空间。

为什么它们浮动元素?

当设计人员并排需要2个块级元素时,元素将浮动。例如说我们要设计一个基本的网站,其布局如下图所示。

演示图像的实时示例。

/*  CSS:  */

* { /* Not related to floats / clear both, used it for demo purpose only */
    box-sizing: border-box;
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
}

header, footer {
    border: 5px solid #000;
    height: 100px;
}

aside {
    float: left;
    width: 30%;
    border: 5px solid #000;
    height: 300px;
}

section {
    float: left;
    width: 70%;
    border: 5px solid #000;
    height: 300px;
}

.clear {
    clear: both;
}
<!-- HTML -->
<header>
    Header
</header>
<aside>
    Aside (Floated Left)
</aside>
<section>
    Content (Floated Left, Can Be Floated To Right As Well)
</section>
<!-- Clearing Floating Elements-->
<div class="clear"></div>
<footer>
    Footer
</footer>

注意: 您可能必须添加header,footer,aside,section(和其他HTML5元素)为display: block;您的样式表明确提的是,元素是块级元素。

说明:
我有一个基本布局,1个标题,1个侧边栏,1个内容区域和1个页脚。

没有浮动header,下一个是aside我将用于网站侧边栏的标签,因此我将元素向左浮动。

注意:默认情况下,块级元素占用文档100%的宽度,但是向左或向右浮动时,它将根据其持有的内容调整大小。

  1. 块级元素的正常行为
  2. 块级元素的浮动行为
    因此,正如您所注意到的,左侧浮动div的空间留给右侧的空间未使用,这将使div后面的空间移动剩余空间。

  3. div如果未浮动,则将一个接一个地渲染

  4. div 如果向左或向右浮动,将彼此并排移动

好的,这就是块级元素向左或向右浮动时的行为,那么现在为什么是clear: both;必需的,为什么呢?

因此,如果您在布局演示中注明-如果您忘记了,就在这里。

我使用的是所谓的类.clear,它拥有一个名为属性clear与值both。因此,让我们看看它为什么需要both。

我已经漂浮aside和section元素的左侧,所以假设一个场景,在这里我们有一个游泳池,那里header是坚实的土地,aside并section在泳池漂浮和页脚再次坚实的土地,这样的事情..

因此,蓝色的水不知道浮动元素的面积是多少,它们可以大于池的面积,也可以小于池的面积,因此出现了一个使90%的CSS初学者感到困扰的常见问题:为什么容器元素的背景没有拉伸当它包含浮动元素时。这是因为容器元素在这里是一个POOL,而POOL不知道有多少个对象在浮动,或者浮动元素的长度或宽度是多少,因此它根本不会拉伸。

  1. 文件的正常流动
  2. 剖面向左浮动
  3. 清除浮动元素以拉伸容器的背景色
    (请参阅此答案的[Clearfix]部分,以获取整洁的方法。我div有意使用一个空示例进行说明)

我在上面提供了3个示例,第一个是普通文档流,其中red背景将按预期方式呈现,因为容器不包含任何浮动对象。

在第二个示例中,当对象向左浮动时,容器元素(POOL)将不知道浮动元素的尺寸,因此不会拉伸到浮动元素的高度。

使用后clear: both;,容器元素将被拉伸到其浮动元素的尺寸。

使用的另一个原因clear: both;是为了防止元素在剩余空间中向上移动。

假设您要并排放置2个元素,并在其下面放置另一个元素…因此,您需要将2个元素向左浮动,而您要在其下面放置另一个元素。

  1. div向左浮动导致section进入剩余空间
  2. div清除浮动,以便section标记将在浮动divs 下方呈现


 类似资料:
  • 问题内容: 我有一个嵌套的flexbox布局(使用bootstrapv4),可根据横向/纵向模式更改方向。第一层(由flexbox使用该属性放置)包含5个用作按钮的图标。我无法在这些图标上正常使用该属性。 如果我不使用属性,则图标将按照自然顺序进行布局;但是,如果我尝试使用该属性对其进行布局,则无法正常工作。在代码中,()应该是最后一个元素。不是。我可以通过更改源中的顺序来获得所需的顺序。但是,我

  • 问题内容: HTML5具有新的全局属性,可用于隐藏内容。 CSS具有规则,也可以用来隐藏内容。 在视觉上,它们是相同的。在语义上有什么区别?计算上? 在何时使用一种或另一种时,我应该考虑哪些准则? TIA。 编辑 :根据@newtron的响应(如下),我进行了更多搜索。该属性去年曾引起激烈争论,并且(显然)几乎没有使其成为HTML5规范。有人认为这是多余的,没有目的。据我所知,最终的评估结果是:如

  • 主要内容:1、常规规则,2、嵌套规则在 CSS 中包含两种语法规则: 普通规则:由选择器、属性和值构成,在之前的学习中我们主要使用的就是这种规则; @规则:以开头后面跟随一个关键字的形式构成,也被称为“AT规则”,根据使用方法的不同又可以分为“常规规则”与“嵌套规则”两种。 本节我们主要来介绍一下 CSS 中的 @ 规则。 1、常规规则 所谓“常规规则”指的是语法类似下面的规则: @[KEYWORD] (RULE); 1) @cha

  • 我有很长时间使用JBOSS Drools的经验。我正在处理的当前项目使用Drools 4。 这是我在项目中的一条规则 想法是从没有关联目标对象的工作内存中收回此类项目。我正在使用工作内存中的这些对象对其进行测试: 项目{itemId=7305,itemTYpeId=Item\u TYPE\u A,targetId=-1023}目标{targetId=-1023} 在这种情况下,规则不应该开火,但它

  • 问题内容: 我看不出两者之间的区别: 和 有什么解释吗? 问题答案: 两者之间没有真正的区别(如果您只是在谈论在哪里申请,那么BoltClock对另一个问题的答案更合适)。是一个元素,就像是。 两者都是有效的选择,并且都可以在所有通用浏览器中使用。 例如,YUI重置选择在元素上设置一个,而不是: 这要求您将on 设置为on ,例如,请参见:无法使用CSSreset更改主体背景颜色 根元素的背景成为

  • 我正在浏览微软的Rust教程,它是关于 实现函数,以便返回对插入向量中的值的引用 这里给出了解决方案,但它与我的不同之处在于它使用了 除了返回类型之外,我的和标准解决方案之间的另一个区别是,我只是简单地返回了参数,而标准解决方案使用复杂方式)。 我想知道我的解决方案是否有任何问题,本教程采取了另一种方式? 虽然@Masklin为我的问题提供了一个很好的答案,但它有点特定于我给出的示例,但没有直接解