Powiedz, że masz div
, nadaj temu określony width
i umieść w nim elementy, w moim przypadku jeszcze img
jedno div
.
Chodzi o to, że zawartość pojemnika div
spowoduje jego div
rozciągnięcie i będzie tłem dla zawartości. Ale kiedy to robię, zawierające się div
kurczą się, aby dopasować się do obiektów nie pływających, a obiekty pływające będą albo całkowicie wysunięte, albo w połowie wysunięte, w połowie, i nie będą miały żadnego wpływu na wielkość dużego div
.
Dlaczego to? Czy brakuje mi czegoś i jak mogę uzyskać pływające przedmioty, aby wyciągnęły się height
z zawartości div
?
overflow:hidden
Zmusza przeglądarkę do najlepszego, aby zawierał elementy potomne rodzica. Właśnie dlatego to naprawia.overflow: hidden
jest tutaj: link . I dzięki bardzo, to zadziałało dla mnieoverflow: hidden
po prostu ukryje każdą część elementu wypływającą z kontenera nadrzędnego. Dla mnie spowodowało to, że niektóre fragmenty tekstu stały się nieczytelne.Powód
Problem polega na tym, że elementy pływające są poza przepływem :
Dlatego nie wpływają one na otaczające elementy, jak miałby to wpływ element dopływowy .
Jest to wyjaśnione w 9.5 Floats :
Pokaż fragment kodu
Jest to również określone w 10.6 Obliczanie wysokości i marginesów . Dla „normalnych” klocków ,
Pokaż fragment kodu
Hacky rozwiązanie: rozliczenie
Sposobem na rozwiązanie tego problemu jest wymuszenie umieszczenia elementu przepływowego pod wszystkimi pływakami. Następnie wysokość rodzica wzrośnie, aby owinąć ten element (a tym samym również elementy pływające).
Można to osiągnąć za pomocą
clear
właściwości :Pokaż fragment kodu
Rozwiązaniem jest więc dodanie pustego elementu
clear: both
jako ostatniego rodzeństwa elementów pływającychNie jest to jednak semantyczne. Lepiej więc wygeneruj pseudoelement na końcu elementu nadrzędnego:
Istnieje wiele wariantów tego podejścia, np. Użycie przestarzałej składni pojedynczego dwukropka
:after
do obsługi starych przeglądarek lub użycie innych wyświetlaczy na poziomie bloku, takich jakdisplay: table
.Rozwiązanie: Korzenie BFC
Istnieje wyjątek od problematycznego zachowania zdefiniowanego na początku: jeśli element bloku ustanawia kontekst formatowania bloku (jest katalogiem głównym BFC), wówczas również zawinie swoją swobodną zawartość.
Zgodnie z 10.6.7 wysokości „Auto” dla kontekstowych katalogów formatowania bloku ,
Pokaż fragment kodu
Dodatkowo, jak wyjaśniono 9.5 Floats , korzenie BFC są również przydatne z następujących powodów:
Pokaż fragment kodu
Kontekst formatowania bloku jest tworzony przez
Blokuj skrzynki
overflow
innymi niżvisible
, nphidden
Blokuj kontenery, które nie są blokami: kiedy
display
jest ustawiony nainline-block
,table-cell
lubtable-caption
.Elementy pływające: kiedy
float
jest ustawiony naleft
lubright
.Elementy absolutnie pozycjonowane: kiedy
position
jest ustawiony naabsolute
lubfixed
.Należy pamiętać, że mogą one mieć niepożądane efekty uboczne, takie jak wycinanie przepełnionej zawartości, obliczanie automatycznych szerokości za pomocą algorytmu zmniejszania lub dopasowywanie lub wypływanie. Problem polega na tym, że nie można mieć elementu na poziomie bloku z widocznym przepełnieniem, który ustanawia BFC.
Wyświetlacz L3 rozwiązuje te problemy:
Niestety, nie ma jeszcze obsługi przeglądarki. W końcu możemy być w stanie korzystać
źródło
Umieść swój zmiennoprzecinkowy
div(s)
w,div
a w CSS daj mu,overflow:hidden;
że będzie działał dobrze.
źródło
Rekomendacja W3Schools:
umieścić
overflow: auto
na elementu nadrzędnego i będzie „kolor” całe tło z uwzględnieniem elementów marże. Również elementy pływające pozostaną wewnątrz granicy.http://www.w3schools.com/css/tryit.asp?filename=trycss_layout_clearfix
źródło
Nic nie brakuje. Float został zaprojektowany dla przypadków, w których obraz (na przykład) ma być umieszczony obok kilku akapitów tekstu, dzięki czemu tekst przepływa wokół obrazu. Nie zdarzyłoby się to, gdyby tekst „rozciągnął” pojemnik. Twój pierwszy akapit skończy się, a następnie następny akapit zacznie się pod obrazem (być może kilkaset pikseli poniżej).
I właśnie dlatego otrzymujesz wynik, którym jesteś.
źródło
W niektórych przypadkach, np. Gdy (jeśli) używasz tylko
float
elementów do przepływu w tej samej „linii”, możesz użyćzamiast
W przeciwnym razie użycie
clear
elementu na końcu działa, nawet jeśli może być sprzeczne z ziarnem, aby potrzebować elementu do tego, co powinno działać CSS.źródło
Oto bardziej nowoczesne podejście:
Nigdy więcej wyraźnych poprawek.
ps Korzystanie z przelewu: ukryty; ukrywa cień pudełka, więc ...
źródło
Dziękuję LSerni , rozwiązałeś to dla mnie.
Osiągnąć to :
Musisz to zrobić :
źródło
Jak mówi Lucas, opisujesz zamierzone zachowanie właściwości float. Tym, co dezorientuje wiele osób, jest fakt, że float został znacznie przesunięty poza pierwotne zamierzone użycie w celu uzupełnienia braków w modelu układu CSS.
Zajrzyj do Floatutoriala, jeśli chcesz lepiej zrozumieć, jak działa ta właściwość.
źródło
Możesz łatwo zrobić to po pierwsze, możesz ustawić div div i zastosować justowanie zawartości w prawo lub w lewo, a problem zostanie rozwiązany.
źródło