Widziałem, że podczas tworzenia stron internetowych, pionowe wycentrowanie kontenera (o ustalonej wysokości) wewnątrz kontenera o losowej wysokości zawsze jest koszmarem dla programisty stron internetowych (przynajmniej mnie), podczas gdy horyzontalne wyśrodkowanie kontenera (o stałej szerokości) w pojemniku o losowej szerokości, margin:0px auto;
ma tendencję do łatwego wyjścia w standardowym modelu.
Kiedy wszystko może być tak proste, dlaczego CSS nie pracuje z margin:auto 0px;
, jeśli chodzi o wyśrodkowanie kontenera o stałej wysokości wewnątrz pojemnika o losowej wysokości? Czy jest jakiś konkretny powód, aby to zrobić? Dzięki za twoje spostrzeżenia z góry.Dlaczego atrybut automatyczny dla marginesu nie działa pionowo, gdy działa on w poziomie?
Odpowiedz
To naprawdę mniej koszmar niż myślisz, po prostu nie używaj marginesów. vertical-align
jest naprawdę tym, na co powinieneś polegać w pionowym centrowaniu na wysokości cieczy. Rzuciłem razem szybki pokaz, aby zademonstrować swój punkt:
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, masz punkt. wyrównanie w pionie niekoniecznie jest koszmarem, IE7 jest, podobnie jak IE6. – ptriek
Użyłem funkcji wyrównania w pionie, ale w większości miejsc nie jest to satysfakcjonujące rozwiązanie. Powód: Problem z 'vertical-align' polega na tym, że nie jest on dobrze kompatybilny ze wszystkimi przeglądarkami. Dla odniesienia [sprawdź ten link] (http://reference.sitepoint.com/css/vertical-align#compatibilitysection). Brak punktów. :( – ikartik90
[Istnieją narzędzia, które mogą sprawdzić, czy coś działa w innych przeglądarkach] (https://browserlab.adobe.com/en-us/index.html), więc nie musisz polegać na wykresach, które dowolnie oznaczaj rzeczy jako błędne ... Jestem prawie pewien, że działa to we wszystkich głównych przeglądarkach, a jeśli szukasz rozszerzonej kompatybilności, powinieneś sprawdzić [ten artykuł] (http://blog.mozilla.com/webdev/2009/02/20/cross-browser-inline-block /). – Wex
Prawidłowa odpowiedź na Twoje pytanie jest to, że margin: auto 0
robi działa tak samo, jak margin: 0 auto
działa, ponieważ width: auto
nie działa w ten sam sposób, co height: auto
es.
Pionowy automatyczny margines działa dla elementów pozycjonowanych absolutnie o znanej wysokości.
.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>
uwaga ----------- ta klasa css działa z prawie wszystkimi przeglądarkami
- 1. dlaczego moje .on ("zmiana") nie działa?
- 2. Mouseup nie działa po mousemove on img
- 3. Import automatyczny nie działa dla klas Android w Androidzie studio
- 4. Atrybut XSD NILLABLE nie działa
- 5. Atrybut wiązania warunku nie działa?
- 6. jQuery działa w Firefoksie, gdy Firebug działa, nie działa, gdy Firebug NIE działa
- 7. Kompilacja Clang działa, gdy gcc nie działa dla dziedziczenia diamentów
- 8. Dlaczego atrybut minHeight nie działa w WebView Android?
- 9. Dlaczego isnumeric nie działa?
- 10. Atrybut noża SSH nie działa
- 11. Ograniczenie do marginesu nie działa poprawnie na Xcode 9
- 12. jQuery on() stopPropagation nie działa?
- 13. Atrybut indeksu C# EF6 nie działa
- 14. Atrybut pobierania nie działa w przeglądarce Firefox
- 15. Atrybut Routing nie działa w obszarach
- 16. Dlaczego LogonUser (...) nie działa dla kont domeny?
- 17. Dlaczego funkcja @JsonUnwrapped nie działa dla list?
- 18. Dlaczego sysout nie działa?
- 19. Jak działa atrybut StringLengthAttribute?
- 20. Dlaczego getTheme nie działa dobrze na zgłoszeniu
- 21. Dlaczego DataColumn.Caption nie działa?
- 22. niestandardowy atrybut działa tylko z element.getAttribute („atrybut”), ale nie „element.attribute”
- 23. dlaczego httphandler nie działa
- 24. Obiekt wyśrodkowany poziomo i pionowo nie działa w przeglądarce Firefox?
- 25. Atrybut ASP.NET Core MetaDataType nie działa
- 26. Dlaczego NIE DZIAŁA WSZYSTKIEGO DLA DZIECI?
- 27. Dlaczego sen nie działa?
- 28. Page.ClientScript.RegisterStartupScript nie działa - dlaczego?
- 29. jQuery - `on` wydarzenie nie działa po jQuery.replaceWith
- 30. Dlaczego String.replace nie działa?
http://phrogz.net/css/vertical-align/index.html oferuje kilka wglądów: "Układ HTML tradycyjnie nie został zaprojektowany do określenia zachowania pionowego. Ze swej natury przeskalowuje on szerokość, a zawartość przepływa do odpowiedniej wysokości w oparciu o dostępną szerokość. Tradycyjnie, poziomy rozmiar i układ jest łatwy; pionowy rozmiar i układ wywodzi się z tego. " – justis
prawda, ale nadal mam przeczucie, że można go znacznie poprawić, po prostu nie można użyć pionowego wyrównania: środkowego, chyba że pojemnik jest wyświetlany jako tabela komórka: – ptriek
@jblasco: Przeczytałem już stronę, o której wspomniałeś, ale wydaje mi się, że odpowiedź nie była zadowalająca. Powód: HTML był tradycyjnie przeznaczony tylko do pokazywania/udostępniania prostych danych tekstowych, kiedy został opracowany w CERN, ale to było tak wiele zmian, gdy porównasz tradycyjny HTML z HTML5, czy to nie najwyższy czas, aby dostosować to, co promuje łatwość dostępu? – ikartik90