CSS Float

Floatende kaders kunnen naar links of naar rechts bewegen totdat hun buitenste rand de rand van de omvattingbox of een andere float-box raakt.

Omdat de float-box niet in de normale stroom van het document staat, gedraagt de lijnbox in de normale stroom van het document zich alsof de float-box niet bestaat.

CSS Float

Zoals te zien in de onderstaande figuur, wanneer kader 1 naar rechts wordt gefloat, raakt het de documentstroom en verplaatst het zich naar rechts totdat de rechterrand van het kader de rechterrand van de omvattingbox raakt:

CSS Float Voorbeeld - Elementen die naar rechts drijven

Zoals te zien in de onderstaande figuur, wanneer kader 1 naar links wordt gefloat, raakt het de documentstroom en verplaatst het zich naar links totdat de linkse rand van het kader de linkse rand van de omvattingbox raakt. Omdat het niet langer in de documentstroom staat, neemt het geen ruimte in en overlapt het feitelijk kader 2, waardoor kader 2 uit het zicht verdwijnt.

Als alle drie de kaders naar links worden verplaatst, blijft kader 1 naar links floaten totdat het de omvattingbox raakt, en de andere twee kaders blijven naar links floaten totdat ze de vorige float-box raken.

CSS Float Voorbeeld - Elementen die naar links drijven

Zoals te zien in de onderstaande figuur, als de omvattingbox te smal is om de horizontaal geplaatste drie float-elementen te bevatten, dan verplaatsen de andere float-blokken naar beneden totdat er voldoende ruimte is. Als de hoogte van de float-elementen verschillend is, kunnen ze mogelijk worden 'gevangen' door andere float-elementen wanneer ze naar beneden bewegen:

CSS Float Voorbeeld 2 - Elementen die naar links drijven

CSS float eigenschap

In CSS realiseren we het floaten van elementen via de float-eigenschap.

Voor meer informatie over de float-eigenschap, raadpleeg het referentiemanual:CSS float eigenschap

Lijnbox en schoonmaken

De lijnbox naast de float-box wordt verkort, waardoor er ruimte wordt gecreëerd voor de float-box, en de lijnbox om de float-box omheen beweegt.

Dus, het maken van een float-box maakt het mogelijk om tekst om een afbeelding te laten omcirkelen:

Rijbalken omvatten de float-balken

Om te voorkomen dat een lijnbox zich om een float-box heen beweegt, moet je deze box toepassen clear-eigenschap. De waarde van de clear-eigenschap kan left, right, both of none zijn, wat aangeeft welke kanten van het frame niet aan het floatvak mogen grenzen.

Om dit effect te bereiken, in de elementen die worden schoongemaakt,bovenmargeVoeg voldoende ruimte toe aan de bovenste marges, zodat de toprand van het element loodrecht daalt onder het floatvak:

clear eigenschap voorbeeld - toepassen van clear op rijbalken

Dit is een nuttig hulpmiddel dat ervoor zorgt dat de omringende elementen ruimte voor het floatende element laten.

Laten we uitgebreid kijken naar floaten en schoonmaken. Stel dat je een afbeelding wilt floaten naar de linkerkant van een tekstblok en je wilt dat deze afbeelding en tekst in een ander element zitten dat een achtergrondkleur en rand heeft.

.news {
  achtergrondkleur: grijs;
  border: solid 1px zwart;
  }
.news img {
  float: left;
  }
.news p {
  float: right;
  }
<div class="news">
<img src="news-pic.jpg" />
<p>enkele tekst</p>
</div>

In dit geval ontstaat er een probleem. Omdat floatende elementen de stroom van het document verlaten, neemt de div om de afbeelding en tekst heen geen ruimte in.

Hoe kan je een omringend element visueel om een floatende element heen hebben? Je moet op een bepaalde plek in dit element clear toepassen:

clear eigenschap voorbeeld - schoonmaken van lege elementen

Helaas is er een nieuw probleem ontstaan, omdat er geen bestaand element is om schoon te maken, kunnen we alleen een lege element toevoegen en deze schoonmaken.

.news {
  achtergrondkleur: grijs;
  border: solid 1px zwart;
  }
.news img {
  float: left;
  }
.news p {
  float: right;
  }
.clear {
  clear: both;
  }
<div class="news">
<img src="news-pic.jpg" />
<p>enkele tekst</p>
<div class="clear"></div>
</div>

Dit levert het gewenste effect op, maar vereist extra code. Vaak kunnen elementen clear toepassen, maar soms moet je onnodige markeringen toevoegen om de lay-out te doen.

Maar we hebben ook een andere manier, dat is het floaten van de container div:

.news {
  achtergrondkleur: grijs;
  border: solid 1px zwart;
  float: left;
  }
.news img {
  float: left;
  }
.news p {
  float: right;
  }
<div class="news">
<img src="news-pic.jpg" />
<p>enkele tekst</p>
</div>

Dit levert het gewenste effect op. Helaas wordt de volgende element beïnvloed door deze float. Om dit probleem op te lossen, kiezen sommigen om alles in de lay-out te floaten en vervolgens de floaten schoon te maken met passende elementen (meestal de voettekst van de site). Dit helpt om onnodige markeringen te verminderen of te verwijderen.

In feite gebruiken alle pagina's op de CodeW3C.com-website deze techniek. Als je de CSS-bestanden opent, zie je dat we de div van de voettekst hebben schoongemaakt, en de drie div's boven de voettekst gaan naar links.

CSS clear eigenschap

We hebben net in detail besproken hoe CSS schoonmaak werkt en de toepassing van de clear-eigenschap. Als je meer wilt weten over de clear-eigenschap, bezoek dan het referentiemanual.CSS clear eigenschap

Voorbeelden van float en schoonmaken

Eenvoudige toepassing van float eigenschap
Maak een afbeelding float aan de rechterkant van een alinea
Maak een afbeelding met rand en marge float aan de rechterkant van een alinea
Maak een afbeelding float aan de rechterkant van een alinea. Voeg een rand en een marge toe aan de afbeelding.
Een afbeelding met een titel float aan de rechterkant
Maak een afbeelding met een titel float aan de rechterkant
Maak de eerste letter van een alinea float aan de linkerkant
Maak de eerste letter van een alinea float aan de linkerkant en voeg stijlen toe aan deze letter.
Maak een horizontaal menu
Maak een horizontale menu met float en een kolom met hyperlinks.
Maak een homepage zonder tabellen
Gebruik float om een homepage te maken met kop, voettekst, linkse inhoudsopgave en hoofdinhoud.
Schoonmaken van de zijkant van het element
Dit voorbeeld toont hoe je de float-elementen aan de zijkant van het schoonmaken element kunt gebruiken.