vymazat
Když použijeme vlastnost float
a chceme další prvek níže (nikoli vpravo nebo vlevo), budeme muset použít clear
vlastnictví.
Vlastnost clear
určuje co by se mělo stát s prvkem, který je vedle plovoucího prvku.
Vlastnost clear
může mít jednu z následující hodnoty:
none
- Prvek není zasunut pod levý nebo pravý plovoucí prvek. Toto je výchozí nastavení
left
- Prvek je posunut pod levý plovoucí prvky
right
- Prvek je posunut pod pravým plovoucím prvkem
both
- Prvek je zasunut pod levý i pravý plovoucí prvek
inherit
- Prvek zdědí jasnou hodnotu od svého rodiče
Při čištění plováků byste měli porovnat clear s plovoucím: Pokud prvek je plovoucí doleva, pak byste měli vyčistit doleva. Váš plovoucí prvek bude i nadále plavat, ale vyčištěný prvek se na webu objeví pod ním strana.
Tento příklad vyčistí plovák doleva. Zde to znamená, že
div1 {
float: left;
}
div2 {
clear: left;
}
Zkuste to sami →
<!DOCTYPE html>
<html>
<head>
<style>
.div1 {
float: left;
padding: 10px;
border: 3px solid #73AD21;
}
.div2 {
padding: 10px;
border: 3px solid red;
}
.div3 {
float: left;
padding: 10px;
border: 3px solid #73AD21;
}
.div4 {
padding: 10px;
border: 3px solid red;
clear: left;
}
</style>
</head>
<body>
<h2>Without clear</h2>
<div class="div1">div1</div>
<div class="div2">div2 - Notice that div2 is after div1 in the HTML code. However, since div1 floats to the left, the text in div2 flows around div1.</div>
<br><br>
<h2>With clear</h2>
<div class="div3">div3</div>
<div class="div4">div4 - Here, clear: left; moves div4 down below the floating div3. The value "left" clears elements floated to the left. You can also clear "right" and "both".</div>
</body>
</html>
Pokud je plovoucí prvek vyšší než prvek, který jej obsahuje, je "přeteče" mimo svůj kontejner. Poté můžeme přidat hack clearfix vyřešit tento problém:
.clearfix {
overflow: auto;
}
Zkuste to sami →
<!DOCTYPE html>
<html>
<head>
<style>
div {
border: 3px solid #4CAF50;
padding: 5px;
}
.img1 {
float: right;
}
.img2 {
float: right;
}
.clearfix {
overflow: auto;
}
</style>
</head>
<body>
<h2>Without Clearfix</h2>
<p>This image is floated to the right. It is also taller than the element containing it, so it overflows outside of its container:</p>
<div>
<img class="img1" src="pineapple.jpg" alt="Pineapple" width="170" height="170">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus imperdiet...
</div>
<h2 style="clear:right">With Clearfix</h2>
<p>We can fix this by adding a clearfix class with overflow: auto; to the containing element:</p>
<div class="clearfix">
<img class="img2" src="pineapple.jpg" alt="Pineapple" width="170" height="170">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus imperdiet...
</div>
</body>
</html>
Clearfix overflow: auto
funguje dobře, pokud jste schopni mít kontrolu nad svými okraji a odsazením (jinak může vidět posuvníky). The nový, moderní hack clearfix je však bezpečnější a pro většinu webových stránek se používá následující kód:
.clearfix::after {
content: "";
clear: both;
display: table;
}
Zkuste to sami →
<!DOCTYPE html>
<html>
<head>
<style>
div {
border: 3px solid #4CAF50;
padding: 5px;
}
.img1 {
float: right;
}
.img2 {
float: right;
}
.clearfix::after {
content: "";
clear: both;
display: table;
}
</style>
</head>
<body>
<h2>Without Clearfix</h2>
<p>This image is floated to the right. It is also taller than the element containing it, so it overflows outside of its container:</p>
<div>
<img class="img1" src="pineapple.jpg" alt="Pineapple" width="170" height="170">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus imperdiet...
</div>
<h2 style="clear:right">With New Modern Clearfix</h2>
<p>Add the clearfix hack to the containing element, to fix this problem:</p>
<div class="clearfix">
<img class="img2" src="pineapple.jpg" alt="Pineapple" width="170" height="170">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus imperdiet...
</div>
</body>
</html>
Více o pseudoprvku ::after
se dozvíte v pozdější kapitole.