Mam div z dwoma obrazkami i h1
. Wszystkie z nich muszą być wyrównane pionowo w div, obok siebie.
Jeden z obrazów musi być absolute
umieszczony w div.
Czego potrzebuje CSS, aby działał we wszystkich popularnych przeglądarkach?
<div id="header">
<img src=".." ></img>
<h1>testing...</h1>
<img src="..."></img>
</div>
html
css
vertical-alignment
Abdu
źródło
źródło
Odpowiedzi:
Wow, ten problem jest popularny. Opiera się na nieporozumieniu w
vertical-align
nieruchomości. Ten doskonały artykuł wyjaśnia to:Zrozumienie
vertical-align
lub „Jak (nie) wyśrodkować zawartość w pionie” Gavina Kistnera.„Jak wyśrodkować w CSS” to świetne narzędzie internetowe, które pomaga znaleźć niezbędne atrybuty centrowania CSS w różnych sytuacjach.
W skrócie (i aby zapobiec gniciu linków) :
vertical-align: middle
. Jednak „kontekst” nie jest całą wysokością kontenera nadrzędnego, lecz wysokością linii tekstu, w której się znajdują. Przykład jsfiddleabsolute
i określić jegoheight
,margin-top
itop
pozycję. przykład jsfiddleline-height
aby wypełnił jego wysokość. Ta metoda jest dość wszechstronna z mojego doświadczenia. przykład jsfiddleźródło
vertical-align: middle
) polega na tym, że musisz określić stałą wysokość. Niezbyt możliwe w przypadku elastycznego projektowania stron internetowych .inline-block
itable-cell
. Jeśli masz z tym problemy, spróbuj dostosowaćline-height
element kontenera (tj. Kontekst), ponieważ jest on używany wvertical-align
obliczeniach pola liniowego.Teraz, gdy rośnie obsługa Flexbox, ten CSS zastosowany do elementu zawierającego wyśrodkowałby pionowo zawarty element:
Użyj prefiksowanej wersji, jeśli chcesz kierować reklamy na Eksploratora 10 i stare (<4.4) przeglądarki Androida:
źródło
align-items
sekcjiUżyłem tego bardzo prostego kodu:
HTML:
CSS:
Oczywiście, niezależnie od tego, czy używasz a,
.class
czy an#id
, wynik się nie zmieni.źródło
To działało dla mnie:
źródło
margin : 0 auto
, nie zadziała z powodudisplay: table-cell
źródło
justify-content: center
naprawiło mój brak poziomego centrowaniaTechnika mojego przyjaciela:
HTML:
CSS:
DEMO tutaj
źródło
Aby ustawić elementy bloku na środku (działa w IE9 i nowszych), potrzebujesz otoki
div
:źródło
Wyrównany jak ? Wierzchołki obrazów wyrównane do góry tekstu?
Absolutnie ustawiony względem DIV? Być może mógłbyś naszkicować to, czego szukasz ...?
fd opisał kroki dla bezwzględnego pozycjonowania, a także dostosowania wyświetlania
H1
elementu tak, aby obrazy pojawiały się razem z nim. Do tego dodam, że możesz wyrównać obrazy za pomocąvertical-align
stylu:... to połączyłoby nagłówek i obrazy, wyrównując górne krawędzie. Istnieją inne opcje wyrównania; zobacz dokumentację . Korzystne może być również upuszczenie DIV i przeniesienie obrazów wewnątrz
H1
elementu - zapewnia to wartość semantyczną kontenerowi i eliminuje potrzebę dostosowania wyświetlaniaH1
:źródło
Użyj tej formuły i zawsze będzie działać bez pęknięć:
źródło
Prawie wszystkie metody muszą określać wysokość, ale często nie mamy żadnych wysokości.
Oto sztuczka CSS3 3-liniowa, która nie wymaga znajomości wysokości.
Jest obsługiwany nawet w IE9.
z prefiksami dostawcy:
Źródło: http://zerosixthree.se/vertical-align-anything-with-just-3-lines-of-css/
źródło
Na dwa sposoby można wyrównywać elementy w pionie i poziomie
1. Bootstrap 4.3.X
do wyrównania w pionie:
d-flex align-items-center
dla wyrównania w poziomie:
d-flex justify-content-center
2. CSS3
źródło
Moją sztuczką jest wstawienie do div tabeli z 1 rzędem i 1 kolumną, ustawienie 100% szerokości i wysokości oraz właściwości vertical-align: middle.
Fiddle: http://jsfiddle.net/joan16v/sbqjnn9q/
źródło
# 3 sposoby na uczynienie div centrum dziecka w div rodzica
Metoda przekształcania / tłumaczenia
Próbny
źródło
Używając CSS do pionowego wyśrodkowania, możesz pozwolić zewnętrznym kontenerom zachowywać się jak tabela, a zawartość jako komórka tabeli. W tym formacie twoje obiekty pozostaną wyśrodkowane. :)
Na przykład zagnieździłem wiele obiektów w JSFiddle, ale podstawowa idea jest taka:
HTML
CSS
Przykład wielu obiektów:
HTML
CSS
Wynik
https://jsfiddle.net/martjemeyer/ybs032uc/1/
źródło
Domyślnie h1 jest elementem blokowym i będzie renderował się w linii po pierwszym obrazku i spowoduje, że drugi obraz pojawi się w linii po bloku.
Aby temu zapobiec, możesz ustawić h1 tak, aby zachowywał się podczas przepływu:
Jeśli chodzi o absolutne pozycjonowanie obrazu wewnątrz div , musisz ustawić zawierający div, aby miał „znany rozmiar”, zanim to zadziała poprawnie. Z mojego doświadczenia wynika, że musisz także zmienić atrybut position na domyślny - position: relative działa dla mnie:
Jeśli możesz to zrobić, możesz spróbować stopniowo usuwać atrybuty wysokości, szerokości i pozycji z div.header, aby uzyskać minimalne wymagane atrybuty, aby uzyskać pożądany efekt.
AKTUALIZACJA:
Oto kompletny przykład, który działa w przeglądarce Firefox 3:
źródło
Możemy użyć obliczenia funkcji CSS, aby obliczyć rozmiar elementu, a następnie odpowiednio ustawić element potomny.
Przykładowy HTML:
I CSS:
Demo utworzone tutaj: https://jsfiddle.net/xnjq1t22/
To rozwiązanie działa dobrze z responsywnym
div
height
iwidth
jak dobrze.Uwaga: Funkcja calc nie jest testowana pod kątem zgodności ze starymi przeglądarkami.
źródło
Na dzień dzisiejszy znalazłem nowe obejście polegające na wyrównywaniu w pionie wielu linii tekstowych w div przy użyciu CSS3 (i używam również systemu siatki bootstrap v3 do upiększania interfejsu użytkownika), który jest następujący:
Według mojego zrozumienia bezpośredni rodzic tekstu zawierającego element musi mieć pewną wysokość. Mam nadzieję, że ci to pomoże. Dzięki!
źródło
Mój nowy ulubiony sposób na zrobienie tego to siatka CSS:
źródło
Wystarczy użyć tabeli jednokomórkowej w div! Wystarczy ustawić wysokość komórki i tabeli oraz za pomocą do 100% i można użyć wyrównania pionowego.
Stół jednokomórkowy wewnątrz div obsługuje wyrównanie w pionie i jest kompatybilny wstecz z powrotem do epoki kamienia!
źródło
Używam następującego rozwiązania (bez pozycjonowania i wysokości linii) od ponad roku, działa również z IE 7 i 8.
źródło
To jest moje osobiste rozwiązanie dla elementu i wewnątrz div
Przykład JSFiddle
HTML
CSS
źródło
Dla mnie działało to w ten sposób:
Element „a” przekonwertowany na przycisk za pomocą klas Bootstrap i jest teraz wyśrodkowany pionowo w zewnętrznym „div”.
źródło
źródło
Tylko to:
Stół jednokomórkowy wewnątrz div obsługuje wyrównanie w pionie i jest kompatybilny wstecz z powrotem do epoki kamienia!
źródło
źródło
Oto kolejne (responsywne) podejście:
http://jsfiddle.net/herrfischerhamburg/JcVxz/
źródło
Jestem facetem .NET, który właśnie zajął się programowaniem internetowym. Nie używałem CSS (cóż, trochę). Użyłem małego kodu JavaScript, aby uzyskać centrowanie pionowe wraz z funkcją .css jQuery.
Po prostu publikuję wszystko z mojego testu. Prawdopodobnie nie jest zbyt elegancki, ale działa do tej pory.
źródło
...
lub CSS
Pokrycie przeglądarki
źródło
table-cell
, co sprawia, żevertical-align: middle;
działa. Co więcej, działa bez potrzeby zagnieżdżonego div otoki / bufora i działa zarówno dla tekstu, jak i obrazów (lub obu) i nie trzeba zmieniać właściwości pozycji.