Obserwowanie nie działa. Jaki popełniam błąd. <html> <head> <style> #over img {display: block; margines lewy: auto; margines z prawej: auto; } </style> </head> <body> <div id = "over" style = "pozycja: bezwzględna; szerokość: 100%; wysokość: 100%"> <img src = " img8a.flixcart.com/image/ tablet / f / k / t /… "> </div> </body> </html>
nizam.sp
1
Jeśli nie użyjemy display: blockdomyślnej wartości, display: inlinezgodnie z w3schools.com/cssref/pr_class_display.asp . Dlaczego musimy korzystać z bloku? Pracowałem dla siebie, ale nie jestem pewien, dlaczego blok wyśrodkuje obraz, a wbudowany nie.
user3731622,
ponieważ inline nie porusza się w linii, tak naprawdę jest w linii. więc auto margines jest nieskuteczne.
Bardzo krótkie i łatwe rozwiązanie, ale wydaje się, że działa tylko ze stałą, nie procentową szerokością i wysokością. Działa z floatami, więc +1 za to. - jsfiddle.net/2s2nY/2
magnetronnie
1
ale robi to tylko wyrównanie w pionie, ale nie poziomo, prawda?
V-SHY,
1
Nie zadziała, jeśli szerokość obrazu będzie większa niż szerokość div.
Davuz
5
Jeśli usuniemy display: komórka tabeli; działa idealnie.
Ahesanali Suthar
103
Można to również zrobić za pomocą układu Flexbox:
ROZMIAR STATYCZNY
.parent {display: flex;height:300px;/* Or whatever */background-color:#000;}.child {width:100px;/* Or whatever */height:100px;/* Or whatever */margin: auto;/* Magic! */}
*{padding:0;margin:0;}#over
{position:absolute;width:100%;height:100%;text-align: center;/*handles the horizontal centering*/}/*handles the vertical centering*/.Centerer
{display: inline-block;height:100%;vertical-align: middle;}.Centered
{display: inline-block;vertical-align: middle;}
Uwaga: to rozwiązanie dobrze jest wyrównać dowolny element w dowolnym elemencie. w przypadku IE7, gdy zastosujesz .Centeredklasę do elementów blokowych, będziesz musiał użyć innej sztuczki, aby uzyskać inline-blockdziałanie. (ponieważ ponieważ IE6 / IE7 nie działa dobrze z wbudowanym blokiem na elementach bloku)
@deathlock to dobrze znane. ale celowałem w stare przeglądarki IE (które nie obsługiwały pseudo elementów).
avrahamcool
1
Nie jest, ale HTML powinien być używany tylko do struktury, a nie do prezentacji. Zadanie to pozostawiono CSS, stąd pseudoelement.
deathlock
1
Co masz na myśli mówiąc „Nie przerywanie przepływu dokumentów (brak pływaków lub pozycjonowanie bezwzględne)”? Co to jest #over { position:absolute; width:100%; height:100%;?
Rodrigo
1
@Rodrigo rzeczywiście, jeśli nie musisz celować w starsze przeglądarki, to Flexbox jest zalecanym podejściem.
Musiałem także dodać nadrzędny css, ale twój kod działał idealnie! pozycja: względna; szerokość: 100%; float: left; przelew: ukryty; min-wysokość: 189px;
user2593040,
10
Zasadniczo ustawienie prawego i lewego marginesu na auto spowoduje wyrównanie obrazu do środka.
naprawdę nie ma między nimi spacji (jak widać tutaj).
Po prostu podstawowe, aby uniknąć tych (nieodłącznych bloków) luk między nimi. Luki te można zobaczyć między każdymi dwoma słowami, które piszę teraz! :-) Więc .. mam nadzieję, że to pomoże niektórym z was.
Próbowałem wielu podejść, ale tylko ten działa dla wielu elementów śródliniowych wewnątrz div kontenera. Oto kod do wyrównania wszystkiego w div na środku.
CSS
.divContainer
{
vertical-align: middle;
text-align: center;<!--If you want horizontal center alignment -->}.divContainer >*{
vertical-align: middle;}
Uwielbiam css3! Dziękuję Ci. Warto jednak zauważyć, że będzie to działać tylko w nowoczesnych przeglądarkach (oprócz IE). Wszystkie inne przeglądarki nie będą działać.
Neel
2
wiele odpowiedzi sugeruje użycie, margin:0 autoale działa to tylko wtedy, gdy element, który próbujesz wyśrodkować, nie unosi się po lewej lub prawej stronie, to znaczy floatatrybut css nie jest ustawiony. Aby to zrobić, zastosuj displayatrybut do, table-cella następnie zastosuj margines lewy i prawy do auto, aby Twój styl wyglądałstyle="display:table-cell;margin:0 auto;"
Zaznaczona odpowiedź nie spowoduje wyrównania obrazu w pionie. Odpowiednim rozwiązaniem dla nowoczesnych przeglądarek jest Flexbox. Elastyczny pojemnik można skonfigurować tak, aby wyrównywał jego elementy zarówno w poziomie, jak i w pionie.
To rozwiązanie odpowiada na pytanie i działa inaczej niż zaznaczona odpowiedź. Być może głosujący na głosujący mógłby podać szczegóły swojej decyzji o przegłosowaniu?
WDuffy
6
Z kolejki recenzji : Czy mogę prosić o dodanie kontekstu wokół kodu źródłowego. Odpowiedzi zawierające tylko kod są trudne do zrozumienia. Pomoże zarówno pytającemu, jak i przyszłym czytelnikom, czy możesz dodać więcej informacji w swoim poście.
RBT
1
To nie usprawiedliwia przegłosowania. Odpowiedź jest technicznie poprawna i pomogłaby przyszłym czytelnikom. Zaktualizowałem treść odpowiedzi, aby uszanować zasady obowiązujące w domu, ale być może zespół podstawowy powinien wdrożyć bardziej bezpośrednie rozwiązanie, ponieważ identyfikacja odpowiedzi zawierających tylko kod jest trywialnym zadaniem.
Prostym sposobem byłoby utworzenie osobnych stylów dla div i obrazu, a następnie ich niezależne ustawienie. Powiedz, że jeśli chcę ustawić pozycję obrazu na 50%, to mam kod, który wygląda następująco ....
Po prostu powiedz mi, czy działa z wszystkimi rodzajami przeglądarek, mimo że jest to podstawowa rzecz, którą każda przeglądarka musi obsługiwać (w przeciwnym razie nie nazywaj jej przeglądarką)
Odpowiedzi:
JSFiddle
źródło
display: block;
była moja pułapka. TnXdisplay: block
domyślnej wartości,display: inline
zgodnie z w3schools.com/cssref/pr_class_display.asp . Dlaczego musimy korzystać z bloku? Pracowałem dla siebie, ale nie jestem pewien, dlaczego blok wyśrodkuje obraz, a wbudowany nie.źródło
Można to również zrobić za pomocą układu Flexbox:
ROZMIAR STATYCZNY
ROZMIAR DYNAMICZNY
Znalazłem przykład w tym artykule , który świetnie się spisuje, wyjaśniając, jak używać układu.
źródło
Wydaje mi się, że chciałeś również, aby ten obraz był wyśrodkowany pionowo w kontenerze. (Nie widziałem żadnej odpowiedzi, która to dałaby)
Working Fiddle:
HTML
CSS
Uwaga: to rozwiązanie dobrze jest wyrównać dowolny element w dowolnym elemencie. w przypadku IE7, gdy zastosujesz
.Centered
klasę do elementów blokowych, będziesz musiał użyć innej sztuczki, aby uzyskaćinline-block
działanie. (ponieważ ponieważ IE6 / IE7 nie działa dobrze z wbudowanym blokiem na elementach bloku)źródło
span
, możesz użyć pseudoelementu:before
: jsfiddle.net/xaliber/cj6zhtp0#over { position:absolute; width:100%; height:100%;
?źródło
Możesz to zrobić z łatwością za pomocą właściwości display: flex css
źródło
źródło
Nadal miałem problemy z innym rozwiązaniem przedstawionym tutaj. Wreszcie to działało najlepiej dla mnie:
css3:
Możesz przeczytać więcej o tym podejściu na tej stronie .
źródło
Zasadniczo ustawienie prawego i lewego marginesu na auto spowoduje wyrównanie obrazu do środka.
źródło
To byłoby prostsze podejście
źródło
Odpowiedź Daaawx działa, ale myślę, że byłoby czystsze, gdybyśmy wyeliminowali wbudowany css.
źródło
ustawienie img do display: inline-block podczas Po ustawieniu najwyższej div do text-align: center również wykona zadanie
EDYCJA: do tych, którzy bawią się z displayem: blok wbudowany >>> nie zapomnij, że np. Dwa divy lubią
naprawdę nie ma między nimi spacji (jak widać tutaj).
Po prostu podstawowe, aby uniknąć tych (nieodłącznych bloków) luk między nimi. Luki te można zobaczyć między każdymi dwoma słowami, które piszę teraz! :-) Więc .. mam nadzieję, że to pomoże niektórym z was.
źródło
PROSTY. 2018. FlexBox. Aby sprawdzić obsługę przeglądarki - czy mogę użyć
minimalnego rozwiązania:
Aby uzyskać możliwie najszerszą obsługę przeglądarki:
źródło
Próbowałem wielu podejść, ale tylko ten działa dla wielu elementów śródliniowych wewnątrz div kontenera. Oto kod do wyrównania wszystkiego w div na środku.
CSS
HTML
Przykładowy kod jest tutaj: https://jsfiddle.net/yogendrasinh/2vq0c68m/
źródło
Plik CSS
źródło
Wypróbuj ten minimalny kod:
I CSS:
źródło
Jesteśmy w 2016 roku ... dlaczego nie skorzystać z Flexboksa? Jest również responsywny. Cieszyć się.
źródło
wiele odpowiedzi sugeruje użycie,
margin:0 auto
ale działa to tylko wtedy, gdy element, który próbujesz wyśrodkować, nie unosi się po lewej lub prawej stronie, to znaczyfloat
atrybut css nie jest ustawiony. Aby to zrobić, zastosujdisplay
atrybut do,table-cell
a następnie zastosuj margines lewy i prawy do auto, aby Twój styl wyglądałstyle="display:table-cell;margin:0 auto;"
źródło
źródło
HTML:
CSS:
źródło
Do centrum poziomo Po prostu połóż
Inna metoda:
Dla środka w pionie Wystarczy umieścić:
źródło
To działało dla mnie:
źródło
to załatwiło sprawę.
„Uwaga: w tym przypadku nie należy przypisywać klasy css do„ BrandImage ”
CSS:
źródło
To zadziałało dla mnie, gdy musisz wyśrodkować wyrównywanie obrazu, a Twój div div do obrazu ma cały ekran. tj. wysokość: 100% i szerokość: 100%
źródło
Użyj pozycjonowania. Poniższe działało dla mnie ...
Przy powiększeniu do środka obrazu (obraz wypełnia div):
Bez powiększenia do środka obrazu (obraz nie wypełnia div):
źródło
Zaznaczona odpowiedź nie spowoduje wyrównania obrazu w pionie. Odpowiednim rozwiązaniem dla nowoczesnych przeglądarek jest Flexbox. Elastyczny pojemnik można skonfigurować tak, aby wyrównywał jego elementy zarówno w poziomie, jak i w pionie.
źródło
Możesz rzucić okiem na to rozwiązanie:
Centrowanie w poziomie i w pionie obrazu w pudełku
źródło
Prostym sposobem byłoby utworzenie osobnych stylów dla div i obrazu, a następnie ich niezależne ustawienie. Powiedz, że jeśli chcę ustawić pozycję obrazu na 50%, to mam kod, który wygląda następująco ....
źródło
Zmodyfikuj wartość wysokości do swoich potrzeb.
źródło
To powinno działać.
WAŻNE DO TESTU: Aby uruchomić fragment kodu, kliknij lewy przycisk URUCHOM fragment kodu , a następnie prawy link Pełna strona
źródło