Per rispondere alla tua domanda perché top: 50%
non funziona, quando si utilizza la proprietà top
su un elemento, il genitore di quell'elemento deve avere un'altezza statica impostata. Questo dovrebbe essere in px
o un'unità diversa da percentuale. Se hai davvero bisogno di usare la percentuale anche nei tuoi genitori, allora puoi passare al genitore successivo (che è il genitore di quel genitore) e avere quell'altezza statica fissa.
Centrare verticalmente nulla. I prefer to use this method
L'uso di CSS transform
poiché non è necessario conoscere la larghezza dell'altezza del proprio elemento.
position: relative;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
Non dimenticare di aggiungere prefissi del browser/vendor.
You can refer here for vendor prefixes.
Se non si conosce l'altezza del vostro genitore. Sono disponibili due opzioni:
- utilizzando Javascript prendere l'altezza naturale dell'elemento genitore e quindi impostare la proprietà altezza di tale elemento genitore al valore appena scattata. Puoi usare questo metodo quando l'altezza dell'elemento genitore è causata da un altro elemento figlio che è fratello dell'elemento che stai centrando.
$('.parent').height($(this).height());
.parent {
/* Unkown height */
}
.child {
/* Create columns */
width: 50%;
float: left;
}
.child-1 {
position: relative;
top: 50%;
text-align: center;
-webkit-transform: translateY(-50%);
-moz-transform: translateY(-50%);
-ms-transform: translateY(-50%);
-o-transform: translateY(-50%);
transform: translateY(-50%);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- Example Start -->
<div class="parent">
<div class="child child-1">
Lorem ipsum
</div>
<div class="child child-2">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
</div>
Suggerimento: se si sta assumendo reattivo in preoccupazione, basta impostare l'altezza di nuovo in JavaScript nel browser di ridimensionamento. Puoi ottenere la nuova altezza naturale impostando l'altezza su Auto in JavaScript e ripetere la procedura.
- È possibile graffiare le idee sopra e utilizzare invece il centraggio con
display: table
. CSS-Tricks has a very good example here.
fonte
2016-09-10 22:02:52
Fare 'left: 50%;' e quindi 'margin-left: -600px;' non ha molto senso, dal momento che stai solo cancellando l'uno con l'altro. –
swenflea: ho modificato la mia domanda con informazioni sull'effetto 'position' dell'elemento genitore. –
In realtà, puoi essere più specifico con la domanda? Vuoi che il tuo DIV sia al centro della pagina. Intendo il centro esatto ....? –