Como a limpeza de CSS realmente funciona?

eu tenho um<div> que eu quero estar em uma linha sozinha. De acordo comW3Schools, Esta regra:

div.foo {
  clear: both;
}

... deve significar o seguinte:

"Nenhum elemento flutuante é permitido no lado esquerdo ou no lado direito."

No entanto, se eu flutuar dois<div> elementos restantes e aplique a regra acima ao primeiro, o segundo não se move.

Por outro lado, se eu aplicar"clear: left" para o segundo<div>, ele desce para a próxima linha. Essa é a minha abordagem normal, mas não entendo por que tenho que fazer assim.

A descrição do W3Schools acima está mal estabelecida ou estou faltando alguma coisa?Uma regra de compensação é capaz de mover apenas o elemento ao qual é aplicado?

Responda

Obrigado Michael S e John D pelas boas explicações. Warren apontou paraa especificação CSS2, e foi aí que encontrei esta resposta (ênfase minha):

Essa propriedade indica quais lados da (s) caixa (s) de um elemento podem não estar adjacentes a umamais cedo caixa flutuante.

Assim:clear afeta apenas a posição do elemento ao qual é aplicado, em relação aos elementos que aparecem antes do código.

Decepcionante que eu não posso dizer ao meu<div> fazer outros divs descerem, mas são os intervalos. :)

questionAnswers(5)

yourAnswerToTheQuestion