W tym przykładzie obraz nie jest wyśrodkowany. Czemu? Moja przeglądarka to Google Chrome 10 w systemie Windows 7, a nie IE.
<img src="/img/logo.png" style="margin:0px auto;"/>
W tym przykładzie obraz nie jest wyśrodkowany. Czemu? Moja przeglądarka to Google Chrome 10 w systemie Windows 7, a nie IE.
<img src="/img/logo.png" style="margin:0px auto;"/>
Odpowiedzi:
dodaj display:block;
i zadziała. Obrazy są domyślnie wbudowane
Aby wyjaśnić, domyślna szerokość block
elementu to auto
, co oczywiście wypełnia całą dostępną szerokość elementu zawierającego.
Ustawiając margines na auto
, przeglądarka przypisuje połowę pozostałej przestrzeni do, margin-left
a drugą połowę do margin-right
.
margin:auto
aby wyśrodkować element w przepływie. ( display:block
lub display:table
, position:static
lub position:relative
, itp.)
0px auto
na zwykły auto
, nadal nie działa.
W pewnych okolicznościach (jak we wcześniejszych wersjach IE, Gecko, Webkit) i dziedziczenia, elementy z position:relative;
zapobiegnie margin:0 auto;
z pracy, nawet jeśli top
, right
, bottom
, i left
nie są ustawione.
Ustawienie elementu na position:static;
(domyślne) może to naprawić w tych okolicznościach. Ogólnie rzecz biorąc, elementy blokowe o określonej szerokości będą respektowane margin:0 auto;
przy użyciu pozycjonowania albo relative
lub static
.
margin: 0 auto
działa dobrze na względnie pozycjonowanych elementach, o ile są to elementy blokowe bez pływaka i określonej szerokości ...
float
i display
mogą zmienić to zachowanie.
Możesz wyśrodkować automatyczną szerokość div za pomocą display:table;
div{
margin: 0px auto;
float: none;
display: table;
}
W moim przypadku problem polegał na tym, że ustawiłem minimalną i maksymalną szerokość bez samej szerokości .
position:static
, mieć ustalony width:
zestaw i być display:block
elementem
Jeśli nie dodamy szerokości i nie dodamy margin:auto
, myślę, że to nie zadziała. To z mojego doświadczenia. Szerokość daje wyobrażenie, gdzie dokładnie musi zapewnić równe marginesy.
istnieje alternatywa dla margin-left:auto; margin-right: auto;
lub margin:0 auto;
dla tych, które używają w position:absolute;
ten sposób:
ustawiasz lewą pozycję elementu na 50% ( left:50%;
), ale to nie wyśrodkuje go poprawnie, aby element był prawidłowo wyśrodkowany, musisz nadać mu margines minus połowa jego szerokości, który idealnie wyśrodkuje Twój element
oto przykład: http://jsfiddle.net/35ERq/3/