关于浮动和清除的困惑

huangapple go评论85阅读模式
英文:

confusion about float and clear

问题

我有一个简单的示例:

    <head>
        <title>浮动</title>
        <style>
            .name2:after {
                content: "";
                clear: both;
                display: table;
            }
        </style>
    </head>
    <body>
        <div class="wrapper">
            <div style="float: left; background-color: red">
                name 1
            </div>
            <div class="name2" style="float: left; background-color: blue">
                name 2
            </div>
            <div style="background-color: purple">
                name 3
            </div>
            <div style="background-color: pink">
                name 4
            </div>
        </div>
        <div>
            next line
        </div>
    </body>
</html>

和结果如下:

关于浮动和清除的困惑

我期望带有内容 "name 3" 的 div 位于两个浮动 div "name 1" 和 "name 2" 的下方。为什么样式部分的 clear: both 没有任何效果呢?

我知道我可以改为写成:

.name2 + div {
    clear: both;
}

然后我就可以得到所期望的行为。

关于浮动和清除的困惑

英文:

I have a simple example:

&lt;html&gt;
    &lt;head&gt;
        &lt;title&gt;Float&lt;/title&gt;
        &lt;style&gt;
            .name2:after {
                content: &quot;&quot;;
                clear: both;
                display: table;
            }
        &lt;/style&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;div class=&quot;wrapper&quot;&gt;
            &lt;div style=&quot;float: left; background-color: red&quot;&gt;
                name 1
            &lt;/div&gt;
            &lt;div class=&quot;name2&quot; style=&quot;float: left; background-color: blue&quot;&gt;
                name 2
            &lt;/div&gt;
            &lt;div style=&quot;background-color: purple&quot;&gt;
                name 3
            &lt;/div&gt;
            &lt;div style=&quot;background-color: pink&quot;&gt;
                name 4
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div&gt;
            next line
        &lt;/div&gt;
    &lt;/body&gt;
&lt;/html&gt;

and the result is the following
关于浮动和清除的困惑
I expected that the div with content "name 3" is below the two floating divs "name 1" and "name 2". Why doesn't the clear: both in the style section have any effect?
I know that I can write instead

.name2 + div {
    clear: both;
}

and I get the desired behavior.
关于浮动和清除的困惑

答案1

得分: 1

你不能通过在浮动元素内部使用清除属性来清除浮动。清除应该在浮动元素之后进行,而不是在内部。

伪元素的技巧通常用于包含所有浮动元素的容器上,以清除它们,因为::after位于它们之后

英文:

You cannot clear float by using the clear property on an element that is inside the float element. The clear should be done after and not inside.

The technique of the pseudo element is generally used on the container that contain all the float elements to clear them since the ::after is placed after them

huangapple
  • 本文由 发表于 2023年7月3日 15:34:14
  • 转载请务必保留本文链接:https://go.coder-hub.com/76602696.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定