Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [css] Centrowanie DIVa w pionie
Forum PHP.pl > Forum > Po stronie przeglądarki > CSS
kamiseq
centrowanie w poziomie jest proste text-align: center w body{} i margin: 0 auto;w glownym divie.

a jak zrobic zeby ten div wycentrowalo w pionie, gdy np dajemy pelny ekran.
margin: auto auto; nie dziala:|


i podobne pytanko jak wycentrowac zawartosc takiego diva w pionie, bo valign mi jkaos nie dzialal i chyba nie jest to zgdne ze sztuka.

dzieki za rady, bo nigdzie nic nie moge znalesc: guitar.gif ]
mariuszn3
Jedyny uniwersalny sposób to emulowanie tablicy poprzez css:

html:
Kod
<div id="jeden" class="valign-wrapper">
   <div id="dwa" class="valign">
   </div>
</div>

Css:
Kod
.valign-wrapper {
   height:100%;
   width:100%;
   display:table;
}
.valign {
   margin:0 auto;    
   display:table-cell;
   vertical-align:middle;
}


W powyższym przypadku wycentrujemy div#dwa w div#jeden
TomASS
Autorowi chyba chodziło o wycentrowanie w pionie. A kod:
  1. </head>
  2. html, body {
  3. height:100%
  4. }
  5. .valign-wrapper {
  6. height:100%;
  7. width:100%;
  8. display:table;
  9. background: Maroon;
  10. }
  11. .valign {
  12. margin:0 auto;
  13. display:table-cell;
  14. vertical-align:middle;
  15. background: Yellow;
  16. }
  17. <div id="jeden" class="valign-wrapper">
  18. zewnatrz
  19. <div id="dwa" class="valign">
  20. srodek
  21. </div>
  22. </div>
  23. </body>
  24. </html>

Niestety tego nie robi :/ Może coś źle wpisuje?

Jedyny pomysł jaki mi przychodzi to wycentrwanie tego za pomocą JS:
  1. <script type="text/javascript">
  2. function $(id) {
  3. return document.getElementById(id);
  4. }
  5.  
  6. function InitLoading(){
  7. l = $("Loading");
  8. l.style.width="180";
  9. l.style.height="60";
  10. l.style.top = ((screen.height-parseInt(l.style.height))/2)-160;
  11. l.style.left = (screen.width-parseInt(l.style.width))/2;
  12. }
  13.  
  14.  
  15. <style type="text/css">
  16. #Loading{
  17. background: White;
  18. font-size: 34px;
  19. border: 1px solid #C1C8D0;
  20. position: absolute;
  21. }
  22.  
  23. <body onLoad="InitLoading()">
  24. <div id="Loading">Loading...</div>
  25. </body>
  26. </html>

Mam nadzieję, że da się zrobić to za pomocą styli, ponieważ moje rozwiązanie nie będzie działać przy wyłączonym JS :/
dr_bonzo
Przenioslem topic do Po stronie przegladarki > CSS, gdzie jego miejsce
mariuszn3
Cytat(TomASS @ 2006-03-05 13:05:48)
Autorowi chyba chodziło o wycentrowanie w pionie. A kod:
  1. </head>
  2. html, body {
  3.   height:100%
  4. }
  5. .valign-wrapper {
  6.   height:100%;
  7.   width:100%;
  8.   display:table;
  9.   background: Maroon;
  10. }
  11. .valign {
  12.   margin:0 auto;
  13.   display:table-cell;
  14.   vertical-align:middle;
  15.   background: Yellow;
  16. }
  17. <div id="jeden" class="valign-wrapper">
  18.   zewnatrz
  19.   <div id="dwa" class="valign">
  20.   srodek
  21.   </div>
  22. </div>
  23. </body>
  24. </html>

Niestety tego nie robi :/ Może coś źle wpisuje?

To działa.. ale tylko w jedynych słusznych przeglądarkach ;-)
Aby zadziałało w internet explorerze faktycznie trzeba użyć javascriptu..
ale można go wsadzić poprzez expression do css'a:
Kod
.valign {
  margin:0 auto;    
  display:table-cell;
  vertical-align:middle;
  margin-top:expression((x=document.documentElement.clientHeight-this.scrollHeight)>0?x/2+'px':0);

}


Działający przykład (wzięty z posta na webesteem forum) można znaleźć tutaj.
gekon
Było: http://forum.php.pl/index.php?showtopic=29143
TomASS
Cytat
To działa.. ale tylko w jedynych słusznych przeglądarkach ;-)
Aby zadziałało w internet explorerze faktycznie trzeba użyć javascriptu..


smile.gif czyli akurat większość użytkowników miała by z tym problem, ponieważ ok 71% ludzi używa IE (zobacz).
Pewnie troszkę lepiej sprawa ma się z JS.

Cytat
Kod
.valign {
margin:0 auto;
display:table-cell;
vertical-align:middle;
margin-top:expression((x=document.documentElement.clientHeight-this.scrollHeight)>0?x/2+'px':0);

}

Walidatorowi CSS nie za bardzo się to podoba (popatrz)

Cytat
Działający przykład (wzięty z posta na webesteem forum) można znaleźć tutaj.

Na prawde świetny link! Działa pod IE, Operą i FF, czyli u ponad 93% ludzi. Dzięki party.gif
kamiseq
dzieki:]
gekon
Nie rozumiem dlaczego stosujecie JS tam gdzie wystarczy użyć CSSa. Link podałem wyżej, a w nim rozwiąznie podał revyag.
TomASS
Cytat(gekon @ 2006-03-05 17:08:31)
Nie rozumiem dlaczego stosujecie JS tam gdzie wystarczy użyć CSSa. Link podałem wyżej, a w nim rozwiąznie podał revyag.

Bo wydaje mi się, że kod Revyaga:
Kod
<style type="text/css">
#middle{
   position:absolute;
   width:400px;
   height:300px;
   margin-left:-200px;
   margin-top:-150px;
   left:50%;
   top:50%;
}
</style>

Nie zadziała tak jak kamiseq chciał:
Cytat
a jak zrobic zeby ten div wycentrowalo w pionie, gdy np dajemy pelny ekran.


Rozwiązanie Pana Revyaga jest poprawne, ale pod warunkiem niezmieniania wielkości okienka. Odpal stronę podaną przezmariuszn3, i zmień wielkość okienka. I czy to co napisał Rev będzie tak działać?
mariuszn3
Cytat
czyli akurat większość użytkowników miała by z tym problem, ponieważ ok 71% ludzi używa IE (zobacz).
Pewnie troszkę lepiej sprawa ma się z JS.

Na szczęśćie ok. 99.5% użytkowników IE ma włączoną obsługę javascript (to z moich statystyk) ;-)

Cytat
Walidatorowi CSS nie za bardzo się to podoba (popatrz)

Myślę, że walidowanie w w3c css'a pisanego pod IE trąci absurdem.

Cytat
Nie rozumiem dlaczego stosujecie JS tam gdzie wystarczy użyć CSSa. Link podałem wyżej, a w nim rozwiąznie podał revyag.

Rozwiązanie Revyaga jest bardzo ograniczone, chociażby poprzez narzucenie konkretnych wymiarów elementowi.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.