Muszę umieścić element div
(z position:absolute;
) na środku mojego okna. Mam jednak problemy, ponieważ szerokość jest nieznana .
Próbowałem tego. Ale należy go dostosować, ponieważ szerokość reaguje.
.center {
left: 50%;
bottom:5px;
}
Jakieś pomysły?
Odpowiedzi:
źródło
position: fixed
ale co jeśli wysokość nie jest znana z nakładki, należy wprowadzić paski przewijania dla nakładki<html>
. Ale<html>
element nie maheight
określonego, więc przyjmuje wysokość całej zawartości dokumentu, co jest niczym, ponieważ jedyna zawartość jest pozycjonowana bezwzględnie (usuwana z przepływu treści). Dodanieheight: 100%
do<html>
elementu robi różnicę.To działa dla mnie:
źródło
width
należy ustawić na określoną wartość, aby działało.auto
i100%
nie będzie centrować elementu.display: block;
jest koniecznością.position: absolute;
NIE jest koniecznością. Wszystkie wartości będą działać. Element macierzystyposition
powinien być ustawiony na coś innego niżstatic
. Ustawienieleft
iright
do0
jest niepotrzebne.margin-left: auto; margin-right: auto;
wykona pracę.Elastyczne rozwiązanie
Oto dobre rozwiązanie dla responsywnego projektu lub ogólnie nieznanych wymiarów, jeśli nie potrzebujesz obsługiwać IE8 i niższych wersji.
Pokaż fragment kodu
Oto skrzypce JS
Wskazówką jest, że
left: 50%
jest to relacja względem rodzica, podczas gdytranslate
transformacja jest relatywna do szerokości / wysokości elementów.W ten sposób masz idealnie wyśrodkowany element o elastycznej szerokości zarówno dla dziecka, jak i rodzica. Bonus: działa, nawet jeśli dziecko jest większe niż rodzic.
Możesz również wyśrodkować go w pionie (i ponownie, szerokość i wysokość rodzica i dziecka mogą być całkowicie elastyczne (i / lub nieznane)):
Pamiętaj, że może być także potrzebny
transform
prefiks dostawcy. Na przykład-webkit-transform: translate(-50%,-50%);
źródło
webkit-
prefiksem, jak zasugerowałem.transform: translate
wydaje się byćposition: fixed
niezdatny do użytku u dzieci. Akceptowana odpowiedź działa lepiej w tym przypadku.Naprawdę fajny post .. Chciałem tylko dodać, jeśli ktoś chce to zrobić za pomocą pojedynczego tagu div, a następnie wyjście:
Biorąc
width
jako900px
.W takim przypadku należy wiedzieć
width
wcześniej.źródło
"because the width is unknown"
... to nie odpowiada na pytanieAbsolutne centrum
HTML:
CSS:
Demo: http://jsbin.com/rexuk/2/
Testowane w Google Chrome, Firefox i IE8
Mam nadzieję że to pomoże :)
źródło
ta praca dla pionowego i poziomego
a jeśli chcesz ustawić element na środek rodzica, ustaw pozycję rodzica względnego
edytować:
aby wyśrodkować środek, wyrównaj wysokość do swojego elementu. dzięki @Raul
jeśli chcesz ustawić element na środek rodzica, ustaw pozycję rodzica na względną
źródło
W poszukiwaniu rozwiązania otrzymałem odpowiedzi powyżej i mogłem skoncentrować treść na odpowiedzi Matthiasa Weilera, ale stosując wyrównywanie tekstu.
Pracował z Chrome i Firefox.
źródło
Jeśli chcesz wyśrodkować także poziomo i pionowo:
źródło
** ODPOWIEDNIE ROZWIĄZANIE **
Zakładając, że element w div, jest kolejnym div ...
to rozwiązanie działa dobrze
pojemnik może być dowolnej wielkości (musi być położenie względne)
Element ( div ) może mieć również dowolny rozmiar (musi być mniejszy niż pojemnik )
Wynik będzie wyglądał następująco. Uruchom fragment kodu
Uważam, że to bardzo pomocne
źródło
Oto mieszanka innych odpowiedzi, które działały dla nas:
źródło
Rozumiem, że to pytanie ma już kilka odpowiedzi, ale nigdy nie znalazłem rozwiązania, które zadziałałoby w prawie wszystkich klasach, które ma sens i jest eleganckie, więc oto moje zdanie po poprawieniu kilku:
To oznacza, że daj mi
top: 50%
aleft: 50%
, a następnie przekształć (utwórz przestrzeń) na osi X / Y do-50%
wartości, w pewnym sensie „stwórz przestrzeń lustrzaną”.Jako taki, tworzy to równe miejsce na wszystkich 4 punktach div, które zawsze są pudełkiem (ma 4 boki).
Spowoduje to:
źródło
translate(-50%,-50%);
?Działa na dowolnej losowej nieznanej szerokości elementu pozycjonowanego absolutnie, który chcesz mieć w środku elementu kontenera.
Próbny
źródło
Flex może być użyty do wyśrodkowania div pozycjonowanego absolutnie.
Pokaż fragment kodu
źródło
display: -webkit-flex;
?O ile mi wiadomo, nie można tego osiągnąć dla nieznanej szerokości.
Mógłbyś - jeśli to działa w twoim scenariuszu - absolutnie ustawić niewidoczny element o 100% szerokości i wysokości, i ustawić element w środku za pomocą marginesu: auto i ewentualnie wyrównanie w pionie. W przeciwnym razie będziesz potrzebować Javascript.
źródło
Chciałbym dodać do odpowiedzi @ bobince:
Ulepszony: /// sprawia, że poziomy pasek przewijania nie pojawia się przy dużych elementach w wyśrodkowanym div.
źródło
Oto przydatna wtyczka jQuery do zrobienia tego. Znaleziono tutaj . Nie sądzę, że jest to możliwe wyłącznie dzięki CSS
źródło
sass / kompas wersja Responsive Solution powyżej:
źródło
transform: translate(-50%, -50%)
sprawia, że tekst i wszystkie inne treści są rozmyte w systemie OS X za pomocą przeglądarek internetowych. keithclark.co.uk/articles/gpu-text-rendering-in-webkit-webkit-font-smoothing: antialiased;
Zebrałem go z artykułu opublikowanego przez btw!Moja preferowana metoda centrowania:
JSFiddle tutaj
źródło
To działało dla mnie:
źródło
Wiem, że już dostałem odpowiedź, a moja poprzednia odpowiedź, wraz z innymi podanymi, działa dobrze. Ale korzystałem z tego w przeszłości i działa lepiej w niektórych przeglądarkach i w niektórych sytuacjach. Pomyślałem więc, że również dam tę odpowiedź. Nie „edytowałem” mojej poprzedniej odpowiedzi i nie dodałem jej, ponieważ uważam, że jest to całkowicie osobna odpowiedź, a dwie podane przeze mnie odpowiedzi nie są powiązane.
HTML:
CSS:
źródło
źródło
HTML
CSS
http://jsfiddle.net/f51rptfy/
źródło
To rozwiązanie działa, jeśli element ma
width
iheight
źródło
rozwiązanie tego pytania nie zadziałało w moim przypadku. Robię podpisy dla niektórych zdjęć i rozwiązałem to za pomocą
źródło
HTML:
CSS:
Ten i więcej przykładów tutaj
źródło
To jest sztuczka, którą wymyśliłem, żeby DIV unosił się dokładnie na środku strony. Oczywiście bardzo brzydka, ale działa we wszystkich
Kropki i kreski
Odkurzacz
Wow, że minęło pięć lat, prawda?
źródło
źródło
Możesz umieścić obraz w div i dodać identyfikator div i mieć CSS dla tego diva
text-align:center
HTML:
CSS:
źródło
źródło
Proste podejście, które pomogło mi wyśrodkować poziomo blok o nieznanej szerokości:
Do zestawu reguł #block można dodać właściwość wyrównania tekstu, aby wyrównać jej zawartość niezależnie od wyrównania bloku.
Działa to w najnowszych wersjach Firefox, Chrome, IE, Edge i Safari.
źródło