Jak pionowo wyśrodkować wewnątrz div? [duplikat]

to pytanie ma już odpowiedzi tutaj : Jak wyśrodkować element w poziomie i pionie (23 odpowiedzi) Zamknięty 6 lat temu .

Kod:

<div 
  id="theMainDiv"
  style="
    border:solid 1px gray;
    cursor:text;
    width:400px;
    padding:0px;"
>
  <span 
    id="tag1_outer" 
    style="
      background:#e2e6f0;
      padding-right:4px;
      padding-left:4px;
      border:solid 1px #9daccc;
      font:normal 11px arial;
      color:#3c3c3c"
  >as</span>
</div>

Jak teraz renderuje, rozpiętość jest wyrównana w lewym dolnym rogu div.

Author: JGallardo, 2010-12-05

5 answers

Zobacz mój artykuł na temat zrozumienie wyrównania pionowego . Istnieje wiele technik, aby osiągnąć to, co chcesz na końcu dyskusji.

(Super-krótkie podsumowanie: albo ustaw wysokość linii dziecka równą wysokości kontenera, albo ustaw pozycję na kontenerze i ustaw absolutnie pozycję dziecka Na top:50% z margin-top:-YYYpx, YYY jest połowę znanego wzrostu dziecka.)

 203
Author: Phrogz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-05 04:18:47

At your parent div add

display:table;

I przy elemencie potomnym dodaj

 display:table-cell;
 vertical-align:middle;
 173
Author: Otto Kanellis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-12 09:08:34

Szybka Odpowiedź dla pojedynczej linii

Uczyń dziecko (w tym przypadku rozpiętość) takim samym line-height jak wzrost rodzica <div>

<div class="parent">
  <span class="child">Yes mom, I did my homework lol</span>
</div>

Następnie należy dodać reguły CSS

.parent { height: 20px; }
.child { line-height: 20px; vertical-align: middle; }



Lub możesz skierować go za pomocą selektora potomnego

.parent { height: 20px; }
.parent > span { line-height: 20px; vertical-align: middle; }

Tło na mój własny użytek z tego

Napotkałem podobny problem, w którym musiałem wyśrodkować pionowo elementy w mobilnym menu. Zrobiłem div I w tej samej linii wzrost. Zauważ, że jest to dla projektu meteor i dlatego nie używa inline css ;)

HTML

<div class="international">        
  <span class="intlFlag">
    {{flag}}        
  </span>

  <span class="intlCurrent">
    {{country}}
  </span>

  <span class="intlButton">
    <i class="fa fa-globe"></i>
  </span> 
</div>

CSS (opcja dla wielu zakresów w div)

.international {
  height: 42px;
}

.international > span {
  line-height: 42px;
}

W tym przypadku, gdybym miał tylko jeden zakres, mógłbym dodać regułę CSS bezpośrednio do tego zakresu.

CSS (opcja dla jednego określonego zakresu)

.intlFlag { line-height: 42px; }

Oto Jak to dla mnie wyświetla

Tutaj wpisz opis obrazka

 51
Author: JGallardo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-06 17:48:11

Podobnie jak w podobnym pytaniu , Użyj {[2] } z elementem zastępczym, aby wyśrodkować rozpiętość wewnątrz elementu blokowego:

html, body, #container, #placeholder { height: 100%; }

#content, #placeholder { display:inline-block; vertical-align: middle; }
<!doctype html>
<html lang="en">
  <head>
  </head>

  <body>
    <div id="container">
      <span id="content">
        Content
      </span>
      <span id="placeholder"></span>
    </div>
  </body>
</html>

Wyrównanie pionowe jest stosowane tylko do elementów liniowych lub komórek tabeli , więc używaj go razem z display:inline-block lub display:table-cell z rodzicem display:table podczas pionowego centrowania elementów bloku.

Referencje:

CSS Centrowanie poziome i pionowe

 39
Author: Paul Sweatte,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:55:05

Do nadrzędnego div dodaj wysokość 50px. W obszarze dziecięcym dodaj linię-height: 50px; Teraz tekst w zakresie będzie pionowo środkowy. To mi pomogło.

 0
Author: DTS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-09 22:18:45