Chcę mieć 3 div wyrównane wewnątrz div kontenera, coś takiego:
[[LEFT] [CENTER] [RIGHT]]
Div kontenera ma szerokość 100% (bez ustawionej szerokości), a div div powinien pozostać w środku po zmianie rozmiaru kontenera.
Więc ustawiłem:
#container{width:100%;}
#left{float:left;width:100px;}
#right{float:right;width:100px;}
#center{margin:0 auto;width:100px;}
Ale staje się:
[[LEFT] [CENTER] ]
[RIGHT]
Jakieś wskazówki?
overflow: hidden;
nacenter
kolumnie. Następnie w zapytaniu o media dla małych urządzeń, gdy wszystkie 3 kolumny były wyśrodkowane na stronie jedna nad drugą, potrzebowałemoverflow: hidden;
w środkowym rzędzie (która była odpowiednią kolumną na dużych urządzeniach), inaczej nie miałaby wysokości i nie byłaby wyśrodkowana w pionie między górnym i dolnym rzędem.Odpowiedzi:
Za pomocą tego CSS umieść div tak (najpierw):
PS Możesz także unosić się w prawo, potem w lewo, a następnie wyśrodkować. Ważne jest, aby pływaki znajdowały się przed „główną” sekcją środkową.
PPS Często chcesz ostatni w
#container
tym fragmencie:<div style="clear:both;"></div>
który będzie rozciągał się#container
pionowo, aby zawierał obie boczne pływaki zamiast brać jego wysokość tylko#center
i prawdopodobnie pozwalając bokom wystawać z dna.źródło
border:solid
. Jeśli jest w 100%, umieść go w innym div, aby umieścić go na swojej stronie.Jeśli nie chcesz zmieniać struktury HTML, możesz to zrobić, dodając
text-align: center;
element otoki idisplay: inline-block;
element środkowy.Prezentacja na żywo: http://jsfiddle.net/CH9K8/
źródło
Wyrównanie Three Divs w poziomie za pomocą Flexbox
Oto metoda CSS3 służąca do wyrównywania elementów div w poziomie wewnątrz innego elementu div.
jsFiddle
justify-content
Nieruchomość zajmuje pięć wartości:flex-start
(domyślna)flex-end
center
space-between
space-around
We wszystkich przypadkach trzy div są w tej samej linii. Opis każdej wartości można znaleźć na stronie : https://stackoverflow.com/a/33856609/3597276
Korzyści z Flexbox:
Aby dowiedzieć się więcej o Flexbox, odwiedź:
Obsługa przeglądarek: Flexbox jest obsługiwany przez wszystkie główne przeglądarki, z wyjątkiem IE <10 . Niektóre najnowsze wersje przeglądarek, takie jak Safari 8 i IE10, wymagają prefiksów dostawców . Aby szybko dodać prefiksy, skorzystaj z Autoprefixera . Więcej szczegółów w tej odpowiedzi .
źródło
Właściwość Float w rzeczywistości nie jest używana do wyrównywania tekstu.
Ta właściwość służy do dodawania elementu do prawej lub lewej lub do środka.
na
float:left
wyjście będzie[First][second][Third]
na
float:right
wyjście będzie[Third][Second][First]
Oznacza to, że właściwość float => left doda następny element na lewo od poprzedniego, podobnie jak w przypadku prawa
Musisz również wziąć pod uwagę szerokość elementu nadrzędnego, jeśli suma szerokości elementów podrzędnych przekroczy szerokość elementu nadrzędnego, to następny element zostanie dodany w następnym wierszu
[Pierwsza sekunda]
[Trzeci]
Musisz więc wziąć pod uwagę wszystkie te aspekty, aby uzyskać idealny wynik
źródło
Lubię moje paski mocno i dynamicznie. Dotyczy to CSS 3 i HTML 5
Po pierwsze, ustawienie opcji Szerokość na 100 pikseli jest ograniczające. Nie rób tego
Po drugie, ustawienie szerokości kontenera na 100% będzie działać dobrze, dopóki nie mówimy o tym, że jest to pasek nagłówka / stopki dla całej aplikacji, np. Pasek nawigacji lub pasek kredytów / praw autorskich. Użyj
right: 0;
zamiast tego dla tego scenariusza.Używasz id przez (hash
#container
,#left
itp) zamiast klas (.container
,.left
itp), które jest w porządku, jeśli nie chcesz, aby powtórzyć swój wzorzec stylu gdzie indziej w kodzie. Zastanowiłbym się zamiast tego użyć klas.W przypadku HTML nie trzeba zamieniać kolejności dla: lewej, środkowej i prawej.
display: inline-block;
naprawia to, zwracając kod do czegoś czystszego i logiczniejszego w kolejności.Na koniec musisz wyczyścić wszystkie pływaki, aby nie zadzierały z przyszłością
<div>
. Robisz to za pomocąclear: both;
Podsumowując:
HTML:
CSS:
Punkt bonusowy, jeśli używasz HAML i SASS;)
HAML:
SASS:
źródło
Dostępnych jest kilka sztuczek do wyrównania elementów.
01. Korzystanie ze sztuczki stołowej
Pokaż fragment kodu
02. Korzystanie z Flex Trick
Pokaż fragment kodu
03. Korzystanie z Float Trick
Pokaż fragment kodu
źródło
Można to łatwo zrobić za pomocą CSS3 Flexbox, funkcji, która będzie używana w przyszłości (Kiedy
<IE9
jest całkowicie martwy) przez prawie każdą przeglądarkę.Sprawdź tabelę kompatybilności przeglądarki
HTML
CSS
Wynik:
Pokaż fragment kodu
źródło
Z twitterowym ładowaniem:
źródło
możliwa odpowiedź, jeśli chcesz zachować kolejność HTML i nie używać Flex.
HTML
CSS
Link do pióra kodowego
źródło
HTML:
CSS:
text-align:center;
zapewnia idealne wyrównanie środka.JSFiddle Demo
źródło
Zrobiłem kolejną próbę uproszczenia tego i osiągnięcia tego bez konieczności posiadania kontenera.
HTML
CSS
Możesz to zobaczyć na żywo w JSFiddle
źródło
Za pomocą Bootstrap 3 tworzę 3 divy o równej szerokości (w układzie 12 kolumn 4 kolumny dla każdego diva). W ten sposób możesz utrzymać centralną strefę w środku, nawet jeśli lewa / prawa sekcja mają różne szerokości (jeśli nie przepełniają przestrzeni kolumn).
HTML:
CSS:
CodePen
Aby stworzyć tę strukturę bez bibliotek, skopiowałem niektóre reguły z Bootstrap CSS.
HTML:
CSS:
CopePen
źródło
Oto zmiany, które musiałem wprowadzić w zaakceptowanej odpowiedzi, gdy zrobiłem to z obrazem jako środkowym elementem:
#center
w tym przypadku). Jeśli tak nie jest, to trzeba ustawićdisplay
nablock
, i wydaje się, że jest wyśrodkowany względem przestrzeni między pływającymi elementami.Upewnij się, że ustawiłeś rozmiar obrazu i jego kontenera:
źródło
Możesz spróbować:
Twój kod HTML taki jak ten:
i twój kod css taki jak ten:
więc wynik powinien wyglądać następująco:
źródło
źródło
Zrobiłeś to poprawnie, wystarczy wyczyścić pływaki. Po prostu dodaj
do twojej klasy kontenera.
źródło
Najłatwiejszym rozwiązaniem jest utworzenie skrzynki z 3 kolumnami i wyśrodkowanie tej tabeli.
HTML:
css:
źródło
źródło