Co robi Klasa clearfix w css? [duplikat]

To pytanie ma już odpowiedź tutaj:

Widziałem div znaczniki używają klasy clearfix, gdy jest potomkiem divs używają właściwości float. Klasa clearfix wygląda tak:

.clearfix:after {
    clear: both;
    content: ".";
    display: block;
    height: 0;
    visibility: hidden;
}
.clearfix {
    display: inline-block;
}
.clearfix {
    display: block;
}

Odkryłem, że jeśli nie użyję clearfix Kiedy użyję właściwości bottom-border, granica będzie widoczna nad potomkiem divs. Can niech ktoś wyjaśni co robi Klasa clearfix? Ponadto, dlaczego istnieją dwie właściwości display? To wydaje mi się bardzo dziwne. Jestem szczególnie ciekawa, co oznacza content:'.'.

Dzięki, G

Author: Thaddeus Albers, 2012-03-03

3 answers

Jak działają pływaki

Gdy elementy pływające istnieją na stronie, elementy nie pływające owijają się wokół elementy pływające, podobnie jak tekst krąży wokół obrazu w gazecie. Z perspektywy dokumentu (oryginalny cel HTML), tak działają pływaki.

float vs display:inline

Przed wynalezieniem display:inline-block, strony internetowe używają float do ustawiania elementów obok siebie. float jest preferowane od display:inline, ponieważ z tym ostatnim nie można ustawić wymiary elementu (szerokość i wysokość) oraz pionowe nakładki (góra i dół) - co mogą robić elementy pływające, ponieważ są traktowane jako elementy blokowe.

Problemy Float

Głównym problemem jest to, że używamy float wbrew jego zamierzonemu celowi.

Innym jest to, że o ile float pozwala elementom blokowym, pływaki nie nadają kształtu kontenerowi . To tak jak position:absolute, gdzie element jest "wyjęty z układu". Na przykład, gdy pusty kontener zawiera pływający 100px x 100px <div>, <div> nie nada mu wysokości 100px.

W przeciwieństwie do position:absolute, wpływa na otaczającą go treść. Zawartość po pływającym elemencie "zawija" się wokół elementu. Zaczyna się od renderowania obok niego, a następnie pod nim, jak to, jak tekst gazety przepływałby wokół obrazu.

Clearfix na ratunek

Co clearfix robi, aby wymusić zawartość po pływakach lub pojemniku zawiera pływaki do renderowania pod nim. Istnieje wiele wersji programu clear-fix, ale jego nazwa pochodzi od wersji, która jest powszechnie używana - tej, która używa właściwości CSS clear.

Przykłady

Oto kilka sposobów, aby zrobić clearfix , w zależności od przeglądarki i przypadku użycia. Wystarczy tylko wiedzieć, jak używać właściwości clear W CSS i jak pływaki renderują się w każdej przeglądarce,aby osiągnąć idealną poprawkę między przeglądarkami.

What you have

Twój podany styl jest formą clearfix z kompatybilnością wsteczną. znalazłem artykuł o tym clearfix. Okazuje się, że jest to stary clearfix - wciąż obsługujący stare przeglądarki. W artykule jest też nowsza, czystsza wersja. Oto podział:

  • Pierwsza poprawka clearfix dołącza niewidoczny pseudoelement, który jest stylizowany clear:both, pomiędzy elementem docelowym a następnym elementem. Zmusza to pseudo-element do Renderuj pod obiektem docelowym, a następny element pod pseudo-elementem.

  • Drugi dodaje styl display:inline-block, który nie jest obsługiwany przez wcześniejsze przeglądarki. inline-block jest podobny do inline, ale daje pewne właściwości blokujące elementy, takie jak szerokość, wysokość, a także pionowe wypełnienie. To było ukierunkowane na IE-MAC.

  • Było to ponowne zastosowanie display:block ze względu na powyższą regułę IE-MAC. Zasada ta była "ukryta" przed IE-MAC.

W sumie, te 3 Zasady utrzymują .clearfix działającą między przeglądarkami, z myślą o starych przeglądarkach.

 122
Author: Joseph,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-05 13:47:09

Gdy element, taki jak div jest floated, jego macierzysty kontener nie bierze już pod uwagę jego wysokości, tzn.

<div id="main">
  <div id="child" style="float:left;height:40px;"> Hi</div>
</div>

Kontener nadrzędny nie będzie miał domyślnie 40 pikseli wysokości. Powoduje to wiele dziwnych dziwactw, jeśli używasz tych kontenerów do tworzenia układu.

Tak więc klasa clearfix, której używają różne frameworki, rozwiązuje ten problem poprzez uczynienie kontenera nadrzędnego "potwierdzającym" zawarte w nim elementy.

Z dnia na dzień zwykle używam frameworków takich jak 960gs, Twitter Bootstrap do układania i nie zawracania sobie głowy dokładną mechaniką.

Możesz przeczytać więcej tutaj

Http://www.webtoolkit.info/css-clearfix.html

 18
Author: Damon Aw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-26 07:13:25

clearfix jest tym samym co overflow:hidden. Zarówno przezroczyste dzieci rodzica, ale clearfix nie odetnie elementu, który przepełnia się do niego parent. Działa również w IE8 i wyżej.

Nie ma potrzeby definiowania "." w treści&.clearfix. Po prostu napisz tak:

.clr:after {
    clear: both;
    content: "";
    display: block;
}

HTML

<div class="parent clr"></div>

Przeczytaj te linki, aby dowiedzieć się więcej

Http://css-tricks.com/snippets/css/clear-fix/,

Jakie metody "clearfix" mogę użyć?

 5
Author: sandeep,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-03 14:05:01