Wyrównywanie elementów w pionie i poziomie można wykonać na różne sposoby. Wybór metody uzależniony jest od rodzaju elementu (blokowy lub śródliniowy), rodzaju jego pozycjonowania, rozmiaru itp.

1. Poziome wyrównanie do środka bloku/strony

1.1. Jeśli blok ma szerokość:

div ( width: 300px; margin: 0 auto; /*wyśrodkuj element poziomo w bloku nadrzędnym*/ )

Jeśli chcesz wyrównać element śródliniowy w ten sposób, musisz ustawić go tak, aby wyświetlał: block;

1.2. Jeśli blok jest zagnieżdżony w innym bloku i nie ma dla niego ustawionej szerokości/szerokości:

.wrapper(wyrównanie tekstu:środek;)

1.3. Jeśli blok ma szerokość i musi być zamocowany w środku bloku rodzica:

.wrapper (position: relative; /*ustaw pole nadrzędne na pozycję względną, abyśmy mogli później bezwzględnie umieścić pole wewnątrz niego*/) .box ( width: 400px; position: absolute; left: 50%; margin-left: - 200px; / *przesuń blok w lewo o odległość równą połowie jego szerokości*/ )

1.4. Jeśli nie ustawiono szerokości dla bloków, możesz wyśrodkować za pomocą nadrzędnego bloku otoki:

.wrapper (text-align: center; /*wyśrodkuj zawartość bloku*/) wcięcie między blokami*/ )

2. Wyrównanie w pionie

2.1. Jeśli tekst zajmuje jedną linię, na przykład dla przycisków i pozycji menu:

.button ( wysokość: 50px; wysokość linii: 50px; )

2.2. Aby wyrównać blok pionowo wewnątrz bloku nadrzędnego:

.wrapper (pozycja: względna;) .box (wysokość: 100px; pozycja: bezwzględna; góra: 50%; margines: -50px 0 0 0; )

2.3. Wyrównanie w pionie według typu tabeli:

.wrapper ( display: table; width: 100%; ) .box ( display: table-cell; height: 100px; text-align: center; vertical-align: middle; )

2.4. Jeśli pudełko ma ustawioną szerokość i wysokość i musi być wyśrodkowane na pudełku nadrzędnym:

.wrapper ( pozycja: względne; ) .box ( wysokość: 100px; szerokość: 100px; pozycja: bezwzględna; góra: 0; prawo: 0; dół: 0; lewy: 0; margines: auto; przepełnienie: auto; /*do treść nie rozprzestrzeniała się */ )

2.5. Pozycjonowanie bezwzględne na środku strony/bloku przy użyciu przekształcenia CSS3:

jeśli element ma wymiary

div ( width: 300px; /*ustaw szerokość pola*/ height:100px; /*ustaw wysokość pola*/ transform: translate(-50%, -50%); position: absolute; top: 50%; left: 50% ; )

jeśli element nie ma wymiarów i nie jest pusty

Trochę tekstu tutaj

h1 ( margin: 0; transform: translate(-50%, -50%); pozycja: bezwzględna; góra: 50%; lewa: 50%; )

Bardzo często zadaniem jest wyrównanie bloku do środka strony/ekranu, a nawet tak, aby bez skryptu java, bez ustawiania twardych rozmiarów czy ujemnych wcięć, tak aby paski przewijania działały na rodzica, jeśli blok przekroczy swój rozmiar. W sieci jest sporo monotonnych przykładów, jak wyrównać blok do środka ekranu. Z reguły większość z nich opiera się na tych samych zasadach.

Poniżej znajdują się główne sposoby rozwiązania problemu, ich zalety i wady. Aby zrozumieć istotę przykładów, zalecam zmniejszenie wysokości/szerokości okna Wynik w przykładach pod wskazanymi linkami.

Opcja 1. Dopełnienie ujemne.

Pozycjonowanie blok atrybuty górny i lewy o 50%, a znając z góry wysokość i szerokość bloku, ustaw margines ujemny, który jest równy połowie rozmiaru blok. Ogromny minus ta opcja jest to, że musisz liczyć ujemne wcięcia. Ta sama droga blok zachowuje się nie do końca poprawnie w środowisku scrollbarów - jest po prostu odcięty, ponieważ ma ujemne wcięcia.

Parent ( szerokość: 100%; wysokość: 100%; pozycja: bezwzględna; góra: 0; lewa: 0; przepełnienie: auto; ) .block ( szerokość: 250px; wysokość: 250px; pozycja: bezwzględna; góra: 50%; lewa : 50%; margines: -125px 0 0 -125px; img (max-szerokość: 100%; wysokość: auto; wyświetlanie: blok; margines: 0 auto; obramowanie: brak; ) )

Opcja 2: wcięcie automatyczne.

Mniej powszechne, ale podobne do pierwszego. Do blok ustaw szerokość i wysokość, ustaw prawy górny dolny lewy atrybut na 0 i ustaw margines automatyczny. Zaletą tej opcji są działające paski przewijania rodzic, jeśli ta ostatnia ma 100% szerokości i wysokości. Minusem tej metody jest sztywne zaklejanie.

Parent ( szerokość: 100%; wysokość: 100%; pozycja: bezwzględna; góra: 0; lewa: 0; przepełnienie: auto; ) .block ( szerokość: 250px; wysokość: 250px; pozycja: bezwzględna; góra: 0; prawo: 0; dół: 0; lewy: 0; margines: auto; img ( maksymalna szerokość: 100%; wysokość: auto; wyświetlacz: blok; margines: 0 auto; obramowanie: brak; ) )

Opcja 3. Tabela.

Pytamy rodzic style tabeli, komórka rodzic Ustaw wyrównanie tekstu do środka. ALE blok ustawić wbudowany model blokowy. Wadą są nie działające paski przewijania, aw ogóle nie estetyka „emulowania” tabeli.

Parent ( szerokość: 100%; wysokość: 100%; display: table; position: bezwzględna; top: 0; left: 0; > .inner ( display: table-cell; text-align: center; vertical-align: middle; ) ) .block (wyświetlanie: inline-block; img (wyświetlanie: blok; obramowanie: brak; ) )

Aby dodać zwój do tego przykładu, będziesz musiał dodać jeszcze jeden element do struktury.
Przykład: jsfiddle.net/serdidg/fk5nqh52/3 .

Opcja 4. Pseudoelement.

Ta opcja jest pozbawiona wszystkich problemów wymienionych w poprzednich metodach, a także rozwiązuje oryginalne zadania. Chodzi o to, aby mieć rodzic ustawić style pseudoelement wcześniej, a mianowicie 100% wysokości, wyrównania do środka i modelu prostopadłościennego. Tak samo z blok umieść model bloku inline, wyrównanie środka. Do blok nie spadła pseudoelement gdy wymiary pierwszego są większe niż rodzic, określ rodzic white-space: nowrap i font-size: 0 po czym y blok anuluj te style za pomocą następującego - spacja: normalna. W ten przykład font-size: 0 jest potrzebne, aby usunąć wynikową spację między rodzic oraz blok w związku z formatowaniem kodu. Lukę można usunąć na inne sposoby, ale uważa się, że najlepiej po prostu na to nie pozwalać.

Parent ( szerokość: 100%; wysokość: 100%; pozycja: bezwzględna; góra: 0; lewa: 0; przepełnienie: auto; białe znaki: nowrap; text-align: center; font-size: 0; &:before ( wysokość: 100%; display: inline-block; vertical-align: middle; content: ""; ) ) .block ( display: inline-block; white-space: normal; vertical-align: middle; text-align: left ; img ( wyświetlacz: blok; obramowanie: brak; ) )

Lub, jeśli chcesz, aby rodzic zajmował tylko wysokość i szerokość okna, a nie całą stronę:

Rodzic ( pozycja: ustalona; góra: 0; prawo: 0; dół: 0; lewy: 0; przepełnienie: auto; białe znaki: nowrap; text-align: center; font-size: 0; &:before ( wysokość: 100%; display: inline-block; vertical-align: middle; content: ""; ) ) .block ( display: inline-block; white-space: normal; vertical-align: middle; text-align: left; img (wyświetlanie: blok; obramowanie: brak; ) )

Opcja 5. Flexbox.

Jednym z najprostszych i najbardziej eleganckich sposobów jest użycie flexboxa. Nie wymaga zbędnych ruchów ciałem, dość wyraźnie opisuje istotę tego, co się dzieje i ma dużą elastyczność. Jedyna rzecz do zapamiętania przy wyborze Ta metoda- wsparcie dla IE od wersji 10 włącznie. caniuse.com/#feat=flexbox

Parent ( szerokość: 100%; wysokość: 100%; pozycja: stała; góra: 0; lewa: 0; display: flex; align-items: center; align-content: center; justify-content: center; overflow: auto; ) .block ( tło: #60a839; img ( wyświetlanie: blok; obramowanie: brak; ) )

Opcja 6. Przekształć.

Nadaje się, jeśli jesteśmy ograniczeni strukturą i nie ma możliwości manipulowania element nadrzędny, a blok musi być jakoś wyrównany. Z pomocą przyjdzie funkcja translate() css. O wartości 50% pozycjonowanie bezwzględne ustawi lewy górny róg pudełka dokładnie wyśrodkowany, a ujemna wartość translacji przesunie pudełko względem jego własnych wymiarów. Należy pamiętać, że negatywne efekty mogą pojawić się w postaci rozmytych krawędzi lub stylu czcionki. Również podobna metoda może prowadzić do problemów z obliczeniem położenia bloku za pomocą java-scriptu "a. Czasami, aby zrekompensować utratę 50% szerokości z powodu użycie css lewej właściwości może pomóc reguła ustawiona dla bloku: margin-right: -50%; .

Parent ( szerokość: 100%; wysokość: 100%; pozycja: ustalona; góra: 0; lewa: 0; przepełnienie: auto; ) .block ( pozycja: bezwzględna; góra: 50%; lewa: 50%; transform: translate( -50%, -50%); img (wyświetlanie: blok;) )

Opcja 7. Przycisk.

Opcja użytkownika gdzie blok zawinięty w metkę z guzikiem. Przycisk ma możliwość wyśrodkowania wszystkiego, co się w nim znajduje, czyli elementów modelu inline i block-line (inline-block). W praktyce nie polecam.

Parent ( szerokość: 100%; wysokość: 100%; pozycja: bezwzględna; góra: 0; lewa: 0; przepełnienie: auto; tło: brak; obramowanie: brak; kontur: brak; ) .block ( display: inline-block; img ( wyświetlacz: blok;; obramowanie: brak; ) )

Premia

Korzystając z idei czwartej opcji można ustawić marginesy dla blok, a jednocześnie te ostatnie będą odpowiednio wyświetlane w środowisku suwaków.
Przykład: jsfiddle.net/serdidg/nfqg9rza/2 .

Możesz również wyrównać obrazek do środka, a jeśli obrazek jest większy rodzic, skaluj go do rozmiaru rodzic.
Przykład: jsfiddle.net/serdidg/nfqg9rza/3 .
Przykład dużego obrazu:

Vlad Merzhevich

Dzięki temu, że zawartość komórek tabeli może być jednocześnie wyrównywana w poziomie i w pionie, rozszerzane są możliwości kontrolowania położenia elementów względem siebie. Tabele umożliwiają ustawienie wyrównania obrazów, tekstu, pól formularzy i innych elementów względem siebie i strony internetowej jako całości. Ogólnie rzecz biorąc, wyrównanie jest niezbędne głównie do ustanowienia wizualnego połączenia między różnymi elementami, a także do ich pogrupowania.

Centrowanie w pionie

Jednym ze sposobów, aby pokazać odwiedzającym, na czym skupia się i jaki jest tytuł witryny, jest użycie strony powitalnej. To pierwsza strona, na której z reguły znajduje się flash-intro lub obrazek wyrażający główną ideę serwisu. Obraz jest również linkiem do innych sekcji serwisu. Wymagane jest umieszczenie tego obrazu na środku okna przeglądarki, niezależnie od rozdzielczości monitora. W tym celu możesz użyć tabeli o szerokości i wysokości równej 100% (przykład 1).

Przykład 1: Centrowanie obrazu

wyrównanie

W tym przykładzie wyrównanie w poziomie jest ustawiane za pomocą parametru znacznika align="center" , a zawartość komórki nie musi być wyśrodkowana w pionie, ponieważ ta pozycja jest ustawiona domyślnie.

Aby ustawić wysokość stołu na 100%, usuń, kod nie jest już ważny.

Wykorzystanie szerokości i wysokości dla całego dostępnego obszaru strony gwarantuje, że zawartość tabeli będzie wyrównana ściśle na środku okna przeglądarki, niezależnie od jej wielkości.

Wyrównanie w poziomie

Łącząc atrybuty align (poziome wyrównanie) i valign ( wyrównanie w pionie) tag , dopuszczalne jest ustawienie kilku typów pozycji elementów względem siebie. Na ryc. 1 pokazuje, jak wyrównać elementy w poziomie.

Spójrzmy na kilka przykładów wyrównania tekstu zgodnie z poniższym rysunkiem.

Wyrównanie do góry

Aby określić wyrównanie zawartości komórki do góry, dla znacznika wymagane jest ustawienie atrybutu valign z wartością top (przykład 2).

Przykład 2: Używanie valign

wyrównanie

Kolumna 1 Kolumna 2

W tym przykładzie charakterystyka komórki jest kontrolowana za pomocą parametrów znacznika , ale wygodniej jest też zmieniać style. W szczególności wyrównanie komórek jest określone przez właściwości vertical-align i text-align (przykład 3).

Przykład 3: Zastosuj style do wyrównania

wyrównanie

Kolumna 1 Kolumna 2

Aby skrócić kod, w tym przykładzie zastosowano grupowanie selektorów, ponieważ właściwości wyrównania w pionie i dopełnienia są stosowane do dwóch komórek jednocześnie.

Wyrównanie do dołu odbywa się w ten sam sposób, ale zamiast góry używane jest dolne.

Wyśrodkowanie

Domyślnie zawartość komórki jest wyrównana do środka jej pionu, więc w przypadku różnych wysokości kolumn wymagane jest ustawienie wyrównania do góry. Czasami nadal trzeba pozostawić pierwotną metodę wyrównania, na przykład podczas umieszczania formuł, jak pokazano na rys. 2.

W tym przypadku formuła znajduje się dokładnie na środku okna przeglądarki, a jej numer znajduje się na prawej krawędzi. Do takiego rozmieszczenia elementów potrzebny jest stół z trzema komórkami. Zewnętrzne komórki powinny mieć ten sam rozmiar, w środkowej komórce wyrównanie odbywa się w środku, a w prawej komórce - na prawej krawędzi (przykład 4). Ta liczba komórek jest wymagana, aby zapewnić wyśrodkowanie formuły.

Przykład 4: Wyrównanie wzoru

wyrównanie

(18.6)

W tym przykładzie pierwsza komórka tabeli pozostaje pusta, służy ona jedynie do utworzenia wcięcia, które notabene można również ustawić za pomocą stylów.

Wyrównywanie elementów formularza

Tabele są przydatne do pozycjonowania pól formularzy, zwłaszcza gdy są przeplatane tekstem. Jedną z opcji projektowania formularza, która ma na celu wprowadzenie komentarza, pokazano na ryc. 3.

Aby tekst w pobliżu pól formularza był wyrównany do prawej, a same elementy formularza do lewej, potrzebna jest tabela z niewidocznym obramowaniem i dwiema kolumnami. Lewa kolumna będzie zawierała sam tekst, a prawa kolumna będzie zawierała pola tekstowe (przykład 5).

Przykład 5 Wyrównywanie pól formularza

wyrównanie

Nazwa
E-mail
Komentarz

W tym przykładzie atrybut align="right" został dodany dla komórek, które wymagają wyrównania do prawej. Aby etykieta „Komentarz” znajdowała się na górnej krawędzi tekstu wielowierszowego, odpowiednia komórka jest ustawiona jako wyrównana do góry za pomocą atrybutu valign.

Bardzo często zadaniem jest wyrównanie bloku do środka strony/ekranu, a nawet tak, aby bez skryptu java, bez ustawiania twardych rozmiarów czy ujemnych wcięć, tak aby paski przewijania działały na rodzica, jeśli blok przekroczy swój rozmiar. W sieci jest sporo monotonnych przykładów, jak wyrównać blok do środka ekranu. Z reguły większość z nich opiera się na tych samych zasadach.

Poniżej znajdują się główne sposoby rozwiązania problemu, ich zalety i wady. Aby zrozumieć istotę przykładów, zalecam zmniejszenie wysokości/szerokości okna Wynik w przykładach pod wskazanymi linkami.

Opcja 1. Dopełnienie ujemne.

Pozycjonowanie blok atrybuty górny i lewy o 50%, a znając z góry wysokość i szerokość bloku, ustaw margines ujemny, który jest równy połowie rozmiaru blok. Ogromną wadą tej opcji jest konieczność liczenia wcięć ujemnych. Ta sama droga blok zachowuje się nie do końca poprawnie w środowisku scrollbarów - jest po prostu odcięty, ponieważ ma ujemne wcięcia.

Parent ( szerokość: 100%; wysokość: 100%; pozycja: bezwzględna; góra: 0; lewa: 0; przepełnienie: auto; ) .block ( szerokość: 250px; wysokość: 250px; pozycja: bezwzględna; góra: 50%; lewa : 50%; margines: -125px 0 0 -125px; img (max-szerokość: 100%; wysokość: auto; wyświetlanie: blok; margines: 0 auto; obramowanie: brak; ) )

Opcja 2: wcięcie automatyczne.

Mniej powszechne, ale podobne do pierwszego. Do blok ustaw szerokość i wysokość, ustaw prawy górny dolny lewy atrybut na 0 i ustaw margines automatyczny. Zaletą tej opcji są działające paski przewijania rodzic, jeśli ta ostatnia ma 100% szerokości i wysokości. Minusem tej metody jest sztywne zaklejanie.

Parent ( szerokość: 100%; wysokość: 100%; pozycja: bezwzględna; góra: 0; lewa: 0; przepełnienie: auto; ) .block ( szerokość: 250px; wysokość: 250px; pozycja: bezwzględna; góra: 0; prawo: 0; dół: 0; lewy: 0; margines: auto; img ( maksymalna szerokość: 100%; wysokość: auto; wyświetlacz: blok; margines: 0 auto; obramowanie: brak; ) )

Opcja 3. Tabela.

Pytamy rodzic style tabeli, komórka rodzic Ustaw wyrównanie tekstu do środka. ALE blok ustawić wbudowany model blokowy. Wadą są nie działające paski przewijania, aw ogóle nie estetyka „emulowania” tabeli.

Parent ( szerokość: 100%; wysokość: 100%; display: table; position: bezwzględna; top: 0; left: 0; > .inner ( display: table-cell; text-align: center; vertical-align: middle; ) ) .block (wyświetlanie: inline-block; img (wyświetlanie: blok; obramowanie: brak; ) )

Aby dodać zwój do tego przykładu, będziesz musiał dodać jeszcze jeden element do struktury.
Przykład: jsfiddle.net/serdidg/fk5nqh52/3 .

Opcja 4. Pseudoelement.

Ta opcja jest pozbawiona wszystkich problemów wymienionych w poprzednich metodach, a także rozwiązuje oryginalne zadania. Chodzi o to, aby mieć rodzic ustawić style pseudoelement wcześniej, a mianowicie 100% wysokości, wyrównania do środka i modelu prostopadłościennego. Tak samo z blok umieść model bloku inline, wyrównanie środka. Do blok nie spadła pseudoelement gdy wymiary pierwszego są większe niż rodzic, określ rodzic white-space: nowrap i font-size: 0 po czym y blok anuluj te style za pomocą następującego - spacja: normalna. W tym przykładzie, font-size: 0 jest potrzebne, aby usunąć wynikową spację między rodzic oraz blok w związku z formatowaniem kodu. Lukę można usunąć na inne sposoby, ale uważa się, że najlepiej po prostu na to nie pozwalać.

Parent ( szerokość: 100%; wysokość: 100%; pozycja: bezwzględna; góra: 0; lewa: 0; przepełnienie: auto; białe znaki: nowrap; text-align: center; font-size: 0; &:before ( wysokość: 100%; display: inline-block; vertical-align: middle; content: ""; ) ) .block ( display: inline-block; white-space: normal; vertical-align: middle; text-align: left ; img ( wyświetlacz: blok; obramowanie: brak; ) )

Lub, jeśli chcesz, aby rodzic zajmował tylko wysokość i szerokość okna, a nie całą stronę:

Rodzic ( pozycja: ustalona; góra: 0; prawo: 0; dół: 0; lewy: 0; przepełnienie: auto; białe znaki: nowrap; text-align: center; font-size: 0; &:before ( wysokość: 100%; display: inline-block; vertical-align: middle; content: ""; ) ) .block ( display: inline-block; white-space: normal; vertical-align: middle; text-align: left; img (wyświetlanie: blok; obramowanie: brak; ) )

Opcja 5. Flexbox.

Jednym z najprostszych i najbardziej eleganckich sposobów jest użycie flexboxa. Nie wymaga zbędnych ruchów ciałem, dość wyraźnie opisuje istotę tego, co się dzieje i ma dużą elastyczność. Jedyną rzeczą do zapamiętania przy wyborze tej metody jest wsparcie dla IE od wersji 10 włącznie. caniuse.com/#feat=flexbox

Parent ( szerokość: 100%; wysokość: 100%; pozycja: stała; góra: 0; lewa: 0; display: flex; align-items: center; align-content: center; justify-content: center; overflow: auto; ) .block ( tło: #60a839; img ( wyświetlanie: blok; obramowanie: brak; ) )

Opcja 6. Przekształć.

Nadaje się, jeśli jesteśmy ograniczeni strukturą i nie ma możliwości manipulowania elementem nadrzędnym, ale trzeba jakoś wyrównać blok. Z pomocą przyjdzie funkcja translate() css. Wartość 50% pozycji bezwzględnej ustawi lewy górny róg pudełka dokładnie na środku, a ujemna wartość przełożenia przesunie pudełko względem jego własnych wymiarów. Należy pamiętać, że negatywne efekty mogą pojawić się w postaci rozmytych krawędzi lub stylu czcionki. Również podobna metoda może prowadzić do problemów z obliczeniem położenia bloku za pomocą java-scriptu "a. Czasami, aby zrekompensować utratę 50% szerokości z powodu użycia właściwości CSS left może pomóc w regule ustawionej w bloku: margines-prawy: -50%; .

Parent ( szerokość: 100%; wysokość: 100%; pozycja: ustalona; góra: 0; lewa: 0; przepełnienie: auto; ) .block ( pozycja: bezwzględna; góra: 50%; lewa: 50%; transform: translate( -50%, -50%); img (wyświetlanie: blok;) )

Opcja 7. Przycisk.

Opcja azproduction użytkownika, gdzie blok zawinięty w metkę z guzikiem. Przycisk ma możliwość wyśrodkowania wszystkiego, co się w nim znajduje, czyli elementów modelu inline i block-line (inline-block). W praktyce nie polecam.

Parent ( szerokość: 100%; wysokość: 100%; pozycja: bezwzględna; góra: 0; lewa: 0; przepełnienie: auto; tło: brak; obramowanie: brak; kontur: brak; ) .block ( display: inline-block; img ( wyświetlacz: blok;; obramowanie: brak; ) )

Premia

Korzystając z idei czwartej opcji można ustawić marginesy dla blok, a jednocześnie te ostatnie będą odpowiednio wyświetlane w środowisku suwaków.
Przykład: jsfiddle.net/serdidg/nfqg9rza/2 .

Możesz również wyrównać obrazek do środka, a jeśli obrazek jest większy rodzic, skaluj go do rozmiaru rodzic.
Przykład: jsfiddle.net/serdidg/nfqg9rza/3 .
Przykład dużego obrazu:

Istnieje kilka zasadniczo różnych sposobów wyśrodkowania obiektu w pionie za pomocą za pomocą CSS, jednak trudność może być w wyborze właściwego. Przyjrzymy się niektórym z nich, a także stworzymy małą stronę internetową wykorzystując zdobytą wiedzę.

Pionowe wyrównanie środka z CSS nie jest tak łatwe do osiągnięcia. Istnieje wiele sposobów i nie wszystkie działają we wszystkich przeglądarkach. Spójrzmy na 5 różne metody, a także „za” i „przeciw” każdemu z nich. Przykład.

Pierwsza droga

Ta metoda zakłada, że ​​ustawiamy jakiś element

sposób wyświetlania jako tabeli, po czym możemy użyć w nim właściwości vertical-align (która działa inaczej na różnych elementach).

Niektóre przydatna informacja, który powinien być wyśrodkowany.
#wrapper( wyświetlanie: tabela; ) #komórka( wyświetlanie: komórka tabeli; wyrównanie w pionie: środek; )

plusy

  • Treść może dynamicznie zmieniać wysokość (wysokość nie jest zdefiniowana w CSS).
  • Treść nie jest obcinana, jeśli nie ma na nią wystarczająco dużo miejsca.

Minusy

  • Nie działa w IE 7 i niższych
  • Wiele zagnieżdżonych tagów

Druga metoda

Ta metoda wykorzystuje pozycjonowanie bezwzględne elementu div , którego góra jest ustawiona na 50%, a jej górny margines (margin-top) minus połowa wysokości zawartości. Oznacza to, że obiekt musi mieć stałą wysokość, która jest zdefiniowana w stylach CSS.

Ponieważ wysokość jest stała, możesz ustawić overflow:auto; dla elementu div zawierającego zawartość, więc jeśli zawartość nie pasuje, pojawią się paski przewijania.

Treść tutaj
#content ( pozycja: bezwzględna; góra: 50%; wysokość: 240px; margines-górny: -120px; /* minus połowa wysokości */ )

plusy

  • Działa we wszystkich przeglądarkach.
  • Bez dodatkowych inwestycji.

Minusy

  • Gdy nie ma wystarczającej ilości miejsca, zawartość znika (np. div znajduje się w ciele, a użytkownik zmniejsza okna, w którym to przypadku paski przewijania się nie pojawią.

Trzecia metoda

W tej metodzie owiniemy div zawartości innym div. Ustaw jego wysokość na 50% (height: 50%;), a dolny margines na połowę jego wysokości (margin-bottom:-contentheight;). Zawartość wyczyści pływak i zostanie wyśrodkowana.

tutaj treść
#floater( float: left; height: 50%; margin-bottom: -120px; ) #content( clear: oba; wysokość: 240px; pozycja: względna; )

plusy

  • Działa we wszystkich przeglądarkach.
  • Gdy nie ma wystarczającej ilości miejsca (na przykład, gdy okno jest zmniejszone) zawartość nie jest odcięta, pojawią się paski przewijania.

Minusy

  • Myślę, że tylko jeden: że używany jest dodatkowy pusty element.

Czwarta metoda.

Ta metoda wykorzystuje właściwość position:absolute; dla divów o stałych wymiarach (szerokość i wysokość). Następnie ustalamy jego współrzędne top:0; dół:0; , ale ponieważ ma stałą wysokość, nie może się rozciągać i jest wyśrodkowany. Jest to bardzo podobne do znanej metody wyrównanie w poziomie wyśrodkowany na elemencie blokowym o stałej szerokości (margines: 0 auto;).

Ważna informacja.
#content( pozycja: bezwzględna; góra: 0; dół: 0; lewy: 0; prawy: 0; margines: auto; wysokość: 240px; szerokość: 70%; )

plusy

  • Bardzo prosta.

Minusy

  • Nie działa w Internet Explorer
  • Zawartość zostanie przycięta bez pasków przewijania, jeśli w kontenerze nie będzie wystarczającej ilości miejsca.

5. metoda

Możesz użyć tej metody do wyśrodkowania pojedynczego wiersza tekstu. Wystarczy ustawić wysokość tekstu (linia-height) na wysokość elementu (height). Następnie linia zostanie wyświetlona pośrodku.

Jakiś wiersz tekstu
#treść( wysokość: 100px; wysokość linii: 100px; )

plusy

  • Działa we wszystkich przeglądarkach.
  • Nie wycina tekstu, jeśli nie pasuje.

Minusy

  • Działa tylko z tekstem (nie działa z elementami blokowymi).
  • Jeśli jest więcej niż jedna linia tekstu, wygląda to bardzo źle.

Ta metoda jest bardzo przydatna w przypadku małych elementów, takich jak wyśrodkowanie tekstu w przycisku lub polu tekstowym.

Teraz, gdy już wiesz, jak osiągnąć wyrównanie do środka w pionie, stwórzmy prostą witrynę, która ostatecznie będzie wyglądać tak:

Krok 1

Zawsze dobrze jest zacząć od znaczników semantycznych. Nasza strona będzie miała następującą strukturę:

  • #floater (aby wyśrodkować treść)
  • #centrowany (element środkowy)
    • #bok
      • #logo
      • #nav (lista
      • #zawartość
    • #dolny (dla praw autorskich i wszystkich)

    Napiszmy następujący znacznik HTML:

    Firma skoncentrowana

    Tytuł strony

    Holistycznie przeprojektuj outsourcing z wartością dodaną po współpracy zorientowanej na procesy i dzieleniu się pomysłami. Energicznie uprość wpływowe rynki niszowe dzięki włączonym imperatywom. Holistycznie dominuj innowacje premium po przekonujących scenariuszach. Bezproblemowo odzyskaj wysokie standardy w zakresie kapitału ludzkiego dzięki najnowocześniejszym wytwarzanym produktom. Wyraźnie syndykuj schematy zgodne ze standardami przed rozbudowanymi vortalami. W wyjątkowy sposób uchwyć wykorzystaną gotowość do korzystania z Internetu w porównaniu z gotowymi informacjami.

    Nagłówek 2

    Efektywnie wykorzystuj spersonalizowaną gotowość do korzystania z Internetu, a nie procesy ukierunkowane na klienta. Asertywnie rozwijaj międzyplatformowe imperatywy w stosunku do proaktywnych technologii. Wygodnie usprawnij multidyscyplinarne metausługi bez interfejsów dla całego przedsiębiorstwa. Wygodnie usprawnij konkurencyjne strategiczne obszary tematyczne dzięki ukierunkowanym rynkom elektronicznym. Fosfluorescencyjny syndykat społeczności światowej klasy w porównaniu z rynkami o wartości dodanej. Odpowiednio przedefiniuj całościowe usługi przed solidnymi e-usługami.

    Informacja o prawach autorskich znajduje się tutaj

    Krok 2

    Teraz napiszemy prosty CSS, aby pozycjonować elementy na stronie. Powinieneś zapisać ten kod w pliku style.css. To na nim jest zapisany link w pliku html.

    Html, body ( margines: 0; padding: 0; wysokość: 100%; ) body ( background: url("page_bg.jpg") 50% 50% bez powtórzeń #FC3; rodzina czcionek: Georgia, Times, serifs; ) #floater ( pozycja: względna; float: lewa; wysokość: 50%; margin-bottom: -200px; szerokość: 1px; ) #centered ( pozycja: względna; clear: lewa; wysokość: 400px; szerokość: 80%; max -width: 800px; min-width: 400px; margin: 0 auto; background: #fff; border: 4px solid #666; ) #bottom ( pozycja: bezwzględna; dół: 0; right: 0; ) #nav ( pozycja: bezwzględna; lewa: 0; góra: 0; dół: 0; prawa: 70%; dopełnienie: 20 pikseli; margines: 10 pikseli; ) #content ( pozycja: bezwzględna; lewa: 30%; prawa: 0; góra: 0; dół: 0; przepełnienie: auto; wysokość: 340px; dopełnienie: 20px; margines: 10px; )

    Zanim będziemy mogli wyrównać nasze treści do centrum, musimy ustawić wysokość treści i kodu HTML na 100%. Ponieważ wysokość jest traktowana bez dopełnienia wewnętrznego i zewnętrznego (dopełnienie i margines), ustawiamy je (dopełnienie) na 0, aby nie było pasków przewijania.

    Dolna część elementu „floater” to minus połowa wysokości treści (400px), czyli -200px ;

    Twoja strona powinna teraz wyglądać mniej więcej tak:

    Szerokość elementu #centered wynosi 80%. To sprawia, że ​​nasza strona jest węższa na małych ekranach i szersza na większych. większość witryn wygląda brzydko na nowych szerokich monitorach w lewym górnym rogu. Właściwości min-width i max-width ograniczają również naszą stronę, aby nie wyglądała na zbyt szeroką lub zbyt wąską. Internet Explorer nie obsługuje tych właściwości. Musi być ustawiony na stałą szerokość.

    Ponieważ element #centered jest ustawiony na position:relative , możemy użyć bezwzględnego pozycjonowania elementów w nim zawartych. Następnie ustaw overflow:auto; dla elementu #content, aby paski przewijania pojawiały się, gdy nie ma treści do dopasowania.

    Krok 3

    I ostatnią rzeczą, jaką zrobimy, to dodać trochę stylu, aby strona wyglądała trochę bardziej atrakcyjnie. Zacznijmy od menu.

    #nav ul ( styl listy: brak; dopełnienie: 0; margines: 20px 0 0 0; wcięcie tekstu: 0; ) #nav li ( dopełnienie: 0; margines: 3px; ) #nav li a ( wyświetlanie: blok; background-color: #e8e8e8; padding: 7px; margin: 0; text-decoration: none; color: #000; border-bottom: 1px solid #bbb; text-align: right; ) #nav li a::after ( content: """; kolor: #aaa; font-weight: pogrubiony; display: inline; float: right; margin: 0 2px 0 5px; ) #nav li a:hover, #nav li a:focus ( background: # f8f8f8; border-bottom-color: #777; ) #nav li a:hover::after ( margines: 0 0 0 7px; color: #f93; ) #nav li a:active ( padding: 8px 7px 6px 7px; )

    Pierwszą rzeczą, którą zrobiliśmy, aby menu wyglądało lepiej, było usunięcie punktorów poprzez ustawienie atrybutu list-style:none, a także ustawienie dopełnienia i dopełnienia, ponieważ wartości domyślne różnią się znacznie w zależności od przeglądarki.

    Zauważ, że następnie określiliśmy, że łącza powinny być renderowane jako elementy blokowe. Teraz, gdy są wyświetlane, są rozciągnięte na całą szerokość elementu, w którym się znajdują.

    Inną interesującą rzeczą, której użyliśmy w menu, są pseudoklasy :before i :after. Pozwalają dodać coś przed i po elemencie. to dobry sposób dodaj ikony lub symbole, takie jak strzałka na końcu każdego łącza. Ta sztuczka nie działa w przeglądarce Internet Explorer 7 i starszych.

    Krok 4

    I wreszcie, dodamy do naszego projektu kilka zasłon, aby uzyskać jeszcze więcej piękna.

    #centered ( -webkit-border-radius: 8px; -moz-border-radius: 8px; border-radius: 8px; ) h1, h2, h3, h4, h5, h6 ( rodzina czcionek: Helvetica, Arial, sans- serif; font-weight: normal; color: #666; ) h1 ( color: #f93; border-bottom: 1px solid #ddd; letter-spacing: -0.05em; font-weight: bold; margin-top: 0; padding-top: 0; ) #bottom ( padding: 10px; font-size: 0.7em; color: #f03; ) #logo ( font-size: 2em; text-align: center; color: #999; ) #logo strong ( font-weight: normal; ) #logo span ( display: block; font-size: 4em; line-height: 0.7em; color: #666; ) p, h2, h3 ( line-height: 1.6em; ) a ( kolor: #f03; )

    W tych stylach ustawiliśmy zaokrąglone rogi dla elementu #centered. W CSS3 będzie to odpowiedzialne nieruchomość o promieniu granicy. Nie jest to jeszcze zaimplementowane w niektórych przeglądarkach, chyba że używasz przedrostków -moz i -webkit do Mozilla Firefox i Safari/Webkit.

    Zgodność

    Jak można się domyślić, głównym źródłem problemów ze zgodnością jest Internet Explorer:

    • Element #floater musi być ustawiony na szerokość
    • Dodatkowe wypełnienie wokół menu w IE 6

    237152 wyświetleń