Chcę umieścić element <div>
(lub <table>
) na środku ekranu, niezależnie od rozmiaru ekranu. Innymi słowy, przestrzeń po lewej stronie „na górze” i „na dole” powinna być równa, a przestrzeń po lewej stronie po stronie „prawej” i „lewej” powinna być równa. Chciałbym to osiągnąć tylko za pomocą CSS.
Próbowałem wykonać następujące czynności, ale nie działa:
<body>
<div style="top:0px; border:1px solid red;">
<table border="1" align="center">
<tr height="100%">
<td height="100%" width="100%" valign="middle" align="center">
We are launching soon!
</td>
</tr>
</table>
</div>
</body>
Uwaga:
tak czy inaczej jest w porządku, jeśli <div>
element (lub <table>
) przewija się wraz ze stroną internetową, czy nie. Po prostu chcę, aby był wyśrodkowany podczas ładowania strony.
javascript
css
html
sumit
źródło
źródło
Odpowiedzi:
Prosty sposób, jeśli masz stałą szerokość i wysokość:
#divElement{ position: absolute; top: 50%; left: 50%; margin-top: -50px; margin-left: -50px; width: 100px; height: 100px; }
Nie używaj stylów wbudowanych! Oto działający przykład http://jsfiddle.net/S5bKq/ .
źródło
Ponieważ transformacje są obecnie bardziej wszechobecne, możesz to zrobić bez znajomości szerokości / wysokości wyskakującego okienka
.popup { position: fixed; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); }
Łatwy! JSFiddle tutaj: http://jsfiddle.net/LgSZV/
Aktualizacja: Odwiedź https://css-tricks.com/centering-css-complete-guide/, aby uzyskać dość wyczerpujący przewodnik po centrowaniu CSS. Dodając to do tej odpowiedzi, wydaje się, że ma dużo gałek ocznych.
źródło
overflow:auto
, przewijanie jest schrzanione w IE9. :(Ustaw szerokość i wysokość i jesteś dobry.
div { position: absolute; margin: auto; top: 0; right: 0; bottom: 0; left: 0; width: 200px; height: 200px; }
Jeśli chcesz, aby wymiary elementu były elastyczne (i nie przejmujesz się starszymi przeglądarkami), skorzystaj z odpowiedzi XwipeoutX .
źródło
Będzie działać na każdym obiekcie. Nawet jeśli nie znasz rozmiaru:
.centered { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); }
źródło
Teraz jest łatwiej z HTML 5 i CSS 3:
źródło
Jeśli masz stałą,
div
tylko bezwzględną pozycję, to na 50% od góry i 50% z lewej i ujemny margines odpowiednio na górze i na lewo od połowy wysokości i szerokości. Dostosuj się do swoich potrzeb:div { position: absolute; top: 50%; left: 50%; width: 500px; height: 300px; margin-left: -250px; margin-top: -150px; }
źródło
Użyj flex . Dużo prostsze i będzie działać niezależnie od Twojego
div
rozmiaru:.center-screen { display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; min-height: 100vh; }
<html> <head> </head> <body> <div class="center-screen"> I'm in the center </div> </body> </html>
źródło
Zrobiłbym to w CSS:
div.centered { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); }
następnie w HTML:
<div class="centered"></div>
źródło
Spróbuj tego
<table style="height: 100%; left: 0; position: absolute; text-align: center; width: 100%;"> <tr> <td> <div style="text-align: left; display: inline-block;"> Your Html code Here </div> </td> </tr> </table>
Albo to
<div style="height: 100%; left: 0; position: absolute; text-align: center; width: 100%; display: table"> <div style="display: table-row"> <div style="display: table-cell; vertical-align:middle;"> <div style="text-align: left; display: inline-block;"> Your Html code here </div> </div> </div> </div>
źródło
Jeśli jest ktoś, kto szuka rozwiązania,
Znalazłem to,
To najlepsze rozwiązanie, jakie znalazłem!
div { width: 100px; height: 100px; background-color: red; position: absolute; top:0; bottom: 0; left: 0; right: 0; margin: auto; }
http://dabblet.com/gist/2872671
Mam nadzieję, że ci się podoba!
źródło
Kolejne łatwe i elastyczne podejście do wyświetlania bloku na środku: użycie natywnego wyrównania tekstu z
line-height
itext-align
.Rozwiązanie:
.parent { line-height: 100vh; text-align: center; } .child { display: inline-block; vertical-align: middle; line-height: 100%; }
I próbka html:
<div class="parent"> <div class="child">My center block</div> </div>
Robimy
div.parent
pełny ekran, a jego jedno dziecko jestdiv.child
wyrównywane jako tekstdisplay: inline-block
.Zalety:
Prosty przykład na JSFiddle: https://jsfiddle.net/k9u6ma8g
źródło
Alternatywne rozwiązanie, które nie używa pozycji bezwzględnej:
widzę wiele odpowiedzi bezwzględnych dotyczących pozycji. Nie mogłem użyć pozycji absolutnej bez zepsucia czegoś innego. Więc dla tych, którzy również nie mogli, oto co zrobiłem:
https://stackoverflow.com/a/58622840/6546317 (opublikowane w odpowiedzi na inne pytanie).
Rozwiązanie skupia się tylko na wyśrodkowaniu w pionie, ponieważ moje elementy dzieci były już wyśrodkowane w poziomie, ale to samo można zastosować, jeśli nie można ich wyśrodkować w poziomie w inny sposób.
źródło
Spróbuj tego:
width:360px; height:360px; top: 50%; left: 50%; margin-top: -160px; /* ( ( width / 2 ) * -1 ) */ margin-left: -160px; /* ( ( height / 2 ) * -1 ) */ position:absolute;
źródło