Ho visto che durante lo sviluppo di siti Web, centrare verticalmente un container (di altezza fissa) all'interno di un contenitore di altezza casuale rappresenta sempre un incubo per lo sviluppatore web (almeno io) mentre quando si tratta di centrare orizzontalmente un container (di larghezza fissa) all'interno di un contenitore di larghezza casuale, il margin:0px auto;
tende a servire una facile via d'uscita nel modello standard.
Quando le cose possono essere così semplici perché il CSS non risolve il problema con lo margin:auto 0px;
quando si tratta di centrare un contenitore di altezza fissa all'interno di un contenitore di altezza casuale? C'è qualche ragione specifica per farlo? Grazie per le tue informazioni in anticipo.Perché l'attributo automatico per margine non funziona in verticale mentre funziona in orizzontale?
Perché l'attributo automatico per margine non funziona in verticale mentre funziona in orizzontale?
risposta
È davvero meno di un incubo di quanto si pensi, basta non usare i margini. vertical-align
è davvero quello su cui devi fare affidamento per il centraggio verticale dell'altezza del fluido. Ho gettato insieme un demo veloce per dimostrare il mio punto:
HTML:
<span></span><div id="any-height"></div>
CSS:
* { margin: 0; padding: 0; }
html, body {
height: 100%;
text-align: center; }
span {
height: 100%;
vertical-align: middle;
display: inline-block; }
#any-height {
background: #000;
text-align: left;
width: 200px;
height: 200px;
vertical-align: middle;
display: inline-block; }
ok, hai un punto. allineamento verticale non è necessariamente l'incubo, IE7 è, come era IE6. – ptriek
Ho usato l'allineamento verticale, ma non serve una soluzione soddisfacente nella maggior parte dei posti. Motivo: il problema con 'vertical-align' è che non è ben compatibile con tutti i browser. Per riferimento [controllare questo collegamento] (http://reference.sitepoint.com/css/vertical-align#compatibilitysection). Quindi niente punti. :( – ikartik90
[Ci sono strumenti là fuori che possono verificare se qualcosa funziona su altri browser] (https://browserlab.adobe.com/en-us/index.html), quindi non devi fare affidamento su grafici che etichettare arbitrariamente le cose come buggy ... Sono abbastanza sicuro che funzioni in tutti i principali browser e, se stai cercando compatibilità estesa, dovresti controllare [questo articolo] (http://blog.mozilla.com/webdev/2009/02/20/cross-browser-inline-block /). – Wex
La risposta giusta per la tua domanda è che margin: auto 0
doesn funziona allo stesso modo di margin: 0 auto
perché width: auto
non funziona nello stesso modo height: auto
do es.
Il margine automatico verticale funziona per elementi posizionati in modo assoluto con un'altezza nota.
.parent {
position: relative;
}
.child {
position: absolute;
top: 0; right: 0; bottom: 0; left: 0;
width: 150px;
height: 150px;
margin: auto;
}
css ----------------
.aligncenter{
display: -webkit-box;
display: -moz-box;
display: box;
-webkit-box-align: center;
-moz-box-align: center;
flex-align: center;
-webkit-box-pack: center;
-moz-box-pack: center;
flex-pack: center;
}
html ------------------ -------
<div class="aligncenter">
---your content appear at the middle of the parent div----
</div>
note ----------- questa classe CSS funziona con quasi tutti i browser
- 1. Perché il margine negativo non funziona?
- 2. Perché il margine destro negativo non funziona?
- 3. UIView ha dimensioni verticale mentre è in orizzontale?
- 4. Margine: Auto non funziona in IE
- 5. Perché ConfigureAwait (false) non funziona mentre Task.Run() funziona?
- 6. Layout automatico non funziona?
- 7. Int64 non funziona mentre Int funziona
- 8. basale verticale-allineamento non funziona
- 9. Ottieni UINavigationBar altezza orizzontale mentre il dispositivo è in verticale
- 10. GWT allineamento orizzontale non funziona
- 11. Perché il mio margine non funziona con la posizione: riparato?
- 12. incremento automatico SQLite non funziona
- 13. Margine automatico non riesce IE11
- 14. Scorrimento orizzontale automatico in TextView
- 15. Il margine negativo Android non funziona
- 16. L'orologio automatico Karma non funziona
- 17. Lavorare con AutoLayout in verticale e orizzontale
- 18. JTextField margine non funziona con il bordo
- 19. Il margine predefinito FloatingActionButton non funziona in lollipop
- 20. Perché KeyboardInterrupt non funziona in python?
- 21. Perché non funziona? Dinamica in una Select
- 22. Perché ListView.ScrollIntoView non funziona mai?
- 23. Perché getProjection() non funziona in V3
- 24. ScrollViewer WPF: la scollatura orizzontale non funziona
- 25. JLabel allineamento verticale non funziona come previsto
- 26. Allineamento verticale - IE10 Flex box non funziona
- 27. jquery triggerHandler non funziona mentre trigger fa
- 28. listView orizzontale all'interno verticale Listview in QML
- 29. Perché Type.GetType() funziona e Assembly.GetType() non funziona?
- 30. Perché Oracle.ManagedDataAccess non funziona quando Oracle.DataAccess funziona?
http://phrogz.net/css/vertical-align/index.html offre alcune informazioni: "Layout HTML tradizionalmente non era progettato per specificare il comportamento verticale. Per sua natura, scala in larghezza e il contenuto scorre all'altezza appropriata in base alla larghezza disponibile. Tradizionalmente, il dimensionamento orizzontale e il layout sono facili; il dimensionamento verticale e il layout sono stati ricavati da quello. " – justis
true, ma comunque, ho l'impressione che potrebbe essere molto migliorato, ma è semplicemente imbarazzante che non puoi usare vertical-align: middle, a meno che il container non venga visualizzato come table- cell – ptriek
@jblasco: avevo già letto la pagina a cui mi riferivi, ma sembra che la risposta non sia stata soddisfacente Motivo: l'HTML era tradizionalmente inteso solo a mostrare/condividere semplici dati testuali quando è stato ideato al CERN, ma poi ci sono stati così tanti cambiamenti quando si confronta il tradizionale HTML in HTML5. Allora non è il momento di adattare ciò che promuove la facilità di accesso? – ikartik90