2013-03-19 13 views
7

mam ten kod:Jak umieścić przycisk na środku div dynamicznych wielkości

<div class="outer"> 
    <ul class="list"> 
     <li class="inner"> 
      <div class="line">information1</div> 
      <div class="line">hyperlink1</div> 
     </li> 
     <li> 
      <div class="line">information2</div> 
      <div class="line">hyperlink2</div> 
     </li> 
     <li> 
      <div class="line">information3</div> 
      <div class="line">hyperlink3</div> 
     </li> 
     <li> 
      <div class="line">information4</div> 
      <div class="line">hyperlink4</div> 
     </li> 
    </ul> 
    <input type="submit" id="send" value="send" class="button"/> 
</div> 

i CSS:

.outer 
{ 
    display: table; 
    border: 1px solid; 
    padding: 5px; 
}  
.list 
{ 
    list-style: none; 
    padding: 5px; 
}  
.inner 
{ 
    display: table-row; 
    padding: 5px; 
}  
.line 
{ 
    display: table-cell; 
    border: 1px solid; 
    border-radius: 5px; 
}  
.button 
{ 
    top:50%; 
    left:50%; 
} 

wyjście jest: this

Teraz ja chcesz umieścić przycisk w środku "zewnętrznego" elementu div bez względu na szerokość.

przykład: chcę, aby przycisk był w centrum, nawet dla: this. bez konieczności zmiany css za każdym razem, gdy zmienia się rozmiar div. Nawet jeśli "zewnętrzny" div jest dynamiczny, przycisk powinien znajdować się pośrodku.

dziękuję.

Odpowiedz

14

ten osiąga to, czego szukasz w prosty, zwięzły sposób:

.button { 
    display:block; 
    margin: 0 auto; 
} 

http://fiddle.jshell.net/mDHBX/2/

+0

doskonały. wielkie dzięki. –

+0

To nie działa dla mnie, moja szerokość przycisku wynosi 100%. – lily

1

Jest więcej niż jeden sposób, aby to zrobić. Wolę za pomocą procentów tak:

input[type="submit"]{ 
    min-width:20%; 
    max-width:20%; 
    margin:0% 39% 0% 40%; //margin-right = 39% to stop errors 
} 

Inni ludzie wolą podejście margin:auto ale osobiście nigdy nie znaleźć to zadziałało. Inne metody obejmują używanie floats, ale nie zgadzam się z tą właściwością, ponieważ źle wyrównuje ona inne elementy w niektórych przeglądarkach.

Użycie górnej i lewej strony spowoduje błędy, ponieważ nie określono typu pozycji innego niż domyślny (statyczny).

+0

ya. to działa dobrze. dzięki. –

3

Trzeba dać przycisk specyficzną szerokość, a następnie można wykorzystać automatyczne marginesy

.button { 
    display: block; 
    margin: 0 auto; 
} 

http://fiddle.jshell.net/CrHyd/

+0

to pęknie, jeśli tekst wewnątrz przycisku jest zbyt długi, aby zmieścił się wewnątrz 100px –

+0

ya. jeśli słowo jest bardzo długie. nie pokazuje części końcowej. –

+0

Nie potrzebujesz szerokości, to prawda. 100px było tylko przykładem opartym na kodzie, który podał. Kiedy ostatni raz "Wyślij" potrzebował więcej niż 100px? – Raffael

0

To powinno działać

.outer { 
display: inline-block; 
text-align: center; 
} 

fiddle

+0

Chciałem, aby był w formacie tabeli i chciałem przycisk w środku div. powyższe css umieszcza go na środku strony. –

+0

następnie zawiń przycisk submit w innym div i zastosuj do niego styl o szerokości: 100%; skrzypce: http://fiddle.jshell.net/mDHBX/9/ –

0

Wystarczy zmienić .button do tego , używając właściwości margin. (1 linia fix)

.button 
{ 
    margin:0 auto; 
} 

Oto Fiddle gdzie zrobiłem .outer stałą szerokość od 500px żeby pokazać przykład co margin robi:

DEMO

+0

dzięki. To proste. –

Powiązane problemy