#menu {
position: fixed;
width: 800px;
background: rgb(255, 255, 255); /* The Fallback */
background: rgba(255, 255, 255, 0.8);
margin-top: 30px;
}
Wiem, że to pytanie jest milion razy, ale nie mogę znaleźć rozwiązania dla mojej sprawy. Mam div, który powinien zostać naprawiony na ekranie, nawet jeśli strona jest przewijana, zawsze powinna pozostać ŚRODKOWANA na środku ekranu!
Div powinien mieć 500px
szerokość, powinien znajdować 30px
się z dala od góry (margines-góra), powinien być wyśrodkowany poziomo na środku strony dla wszystkich rozmiarów przeglądarki i nie powinien się poruszać podczas przewijania pozostałej strony.
Czy to jest możliwe?
Odpowiedzi:
źródło
-400
wynika to z ustawionej szerokości div800
.Odpowiedzi tutaj są nieaktualne. Teraz możesz łatwo korzystać z transformacji CSS3 bez kodowania marginesu . Działa to na wszystkich elementach, w tym elementach bez szerokości lub szerokości dynamicznej.
Centrum poziome:
Centrum pionowe:
Zarówno poziomy, jak i pionowy:
Zgodność nie stanowi problemu: http://caniuse.com/#feat=transforms2d
źródło
Jeśli użycie bloków wbudowanych jest opcją, poleciłbym to podejście:
Napisałem krótki post na ten temat tutaj: http://salomvary.github.com/position-fixed-horizontally-centered.html
źródło
width
stałe dowolnych cyfr lub czegoś - w przeciwieństwie do odpowiedziEdytuj wrzesień 2016: Chociaż miło jest wciąż sporadycznie głosować za tym, ponieważ świat się zmienił, wybiorę teraz odpowiedź, która używa transformacji (i ma mnóstwo głosów pozytywnych). Nie zrobiłbym tego więcej w ten sposób.
Innym sposobem, aby nie musieć obliczać marginesu lub potrzebować sub-kontenera:
źródło
bottom:0
upewniłbym się, że menu jest zawsze wyśrodkowane pionowo, ale teraz widzę, że nie o to prosił PO. :)Istnieje możliwość poziomego wyśrodkowania div w ten sposób:
HTML:
css:
W ten sposób zawsze będziesz mieć wyśrodkowany blok wewnętrzny, a ponadto można go łatwo zmienić na prawdziwy responsywny (w tym przykładzie będzie on płynny na mniejszych ekranach), dlatego nie ma ograniczeń jak w przykładzie pytania i w wybranej odpowiedzi .
źródło
... lub możesz owinąć menu div innym:
źródło
Oto kolejne rozwiązanie dla dwóch dywizji. Próbowałem zachować zwięzłość i nie zakodować na stałe. Po pierwsze, oczekiwany HTML:
Zasadą stojącą za poniższym css jest umieszczenie pewnej strony „zewnętrznego”, a następnie użycie faktu, że przyjmuje ona rozmiar „wewnętrznego”, aby względnie przesunąć drugą stronę.
To podejście jest podobne do podejścia Quentina, ale wewnętrzna może mieć różną wielkość.
źródło
Oto rozwiązanie typu flexbox w przypadku korzystania z pełnowymiarowego opakowania div. justify-content centre to div div dziecka w poziomie, a align-items centruje go w pionie.
źródło