διαγράφει
Όταν χρησιμοποιούμε την ιδιότητα float
και θέλουμε το επόμενο στοιχείο παρακάτω (όχι δεξιά ή αριστερά), θα πρέπει να χρησιμοποιήσουμε το διαγραφή
ιδιοκτησία.
Η ιδιότητα clear
καθορίζει τι θα πρέπει να συμβεί με το στοιχείο που βρίσκεται δίπλα σε ένα αιωρούμενο στοιχείο.
Η ιδιότητα διαγραφή
μπορεί να έχει ένα από τα οι ακόλουθες τιμές:
none
- Το στοιχείο δεν πιέζεται κάτω από αριστερά ή δεξιά αιωρούμενα στοιχεία. Αυτό είναι προεπιλογή
left
- Το στοιχείο πιέζεται κάτω από τα αριστερά αιωρούμενα στοιχεία
right
- Το στοιχείο πιέζεται κάτω από τα δεξιά αιωρούμενα στοιχεία
both
- Το στοιχείο πιέζεται κάτω από τα αριστερά και τα δεξιά αιωρούμενα στοιχεία
inherit
- Το στοιχείο κληρονομεί τη σαφή τιμή από τον γονέα του
Κατά την εκκαθάριση float, θα πρέπει να ταιριάξετε το clear με το float: Εάν ένα στοιχείο επιπλέει προς τα αριστερά, τότε θα πρέπει να καθαρίσετε προς τα αριστερά. Το αιωρούμενο στοιχείο σας θα συνεχίσει να επιπλέει, αλλά το διαγραμμένο στοιχείο θα εμφανιστεί κάτω από αυτό στον ιστό σελίδα.
Αυτό το παράδειγμα διαγράφει το float προς τα αριστερά. Εδώ, σημαίνει ότι το
div1 {
float: left;
}
div2 {
clear: left;
}
Δοκιμάστε το μόνοι σας →
<!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>
Εάν ένα αιωρούμενο στοιχείο είναι ψηλότερο από το στοιχείο που περιέχει, αυτό θα «ξεχειλίσει» έξω από το δοχείο του. Μπορούμε στη συνέχεια να προσθέσουμε ένα clearfix hack σε λύσε αυτό το πρόβλημα:
.clearfix {
overflow: auto;
}
Δοκιμάστε το μόνοι σας →
<!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>
Η επιδιόρθωση overflow: auto
λειτουργεί καλά εφόσον μπορείτε να διατηρήσετε τον έλεγχο των περιθωρίων και των συμπληρωμάτων σας (αλλιώς μπορεί να δει γραμμές κύλισης). ο Ωστόσο, το νέο, μοντέρνο χάκ καθαρισμού επιδιόρθωσης είναι πιο ασφαλές στη χρήση και ο ακόλουθος κώδικας χρησιμοποιείται για τις περισσότερες ιστοσελίδες:
.clearfix::after {
content: "";
clear: both;
display: table;
}
Δοκιμάστε το μόνοι σας →
<!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>
Θα μάθετε περισσότερα για το ψευδοστοιχείο ::after
σε επόμενο κεφάλαιο.