Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: różnokolorowe tło body
Forum PHP.pl > Forum > Po stronie przeglądarki > CSS
demolka666
Witam,
potrzebuję zakodować layout, tak, że po dwóch różnych stronach głównego pojemnika będzie inny kolor tła.
Jak widać na złączonym obrazku: Zielony box to główny pojemnik. Ma zdefiniowany width: 1000px i zawsze jest po środku (margin: 0 auto). Tło po lewej stronie ma być szare, a po drugiej niebieskie. Jak to zrobićquestionmark.gif Bo ja niestety nie mam wogóle pomysłu


mat-bi
dwa divy?
demolka666
A jak je mam rozciągnąć?
Muszą zajmować cały ekran, nie? A ekran może mieć różne rozdzielczości
thek
Ja wiem jak to zrobić w normalnych przeglądarkach, ale oczywiście IE robi jak zwykle problem, ponieważ nie centruje głównego kontenera. Może jednak to co mam Ci pomoże...
  1. *{margin:0;padding:0;}
  2. </head>
  3. <div style="width:50%;position:absolute;top:0;left:0;background-color:gray;height:100%;">lewo</div>
  4. <div style="width:50%;position:absolute;top:0;left:50%;background-color:blue;height:100%;">prawo</div>
  5. <div style="margin:0 auto;width:1000px;background-color:green;position:relative;">Srodek</div>
  6. </body>
  7. </html>

Ogólnie myk polega na tym, by mieć dwa divy o szerokości 50% pod głównym kontenerem. By nie miały przeglądarki problemów, główny div MUSI mieć pozycjonowanie ustawione na relative, inaczej nie centruje. To właśnie moment gdzie IE się wywala. Rozwiązanie działa w Fx i operze na bank.
demolka666
@thek - centrowanie w IE to nie problem, wystarczy ustawić dla body text-align: center. Ale dzięki za Twój kod smile.gif.
Ale problem jest taki, ze zaproponowane przez Ciebie rozwiązanie nie sprawdzi się u mnie, gdyż różnokolorowe tło przypadnie tylko na sekcję headera (o zmiennej wysokości). Reszta strony, poniżej headera, będzie miała zwykły background. I jak to zrobić, żeby de absolutne divy rozciągały się na wysokość headera??
zegarek84
  1. *{margin:0;padding:0;}
  2. </head>
  3. <div id="header" style="position:relative;width:100%;height:200px">
  4. <div style="position:absolute;width:50%;top:0;left:0;right:200px;bottom:0;background-color:gray;height:100%;">lewa</div>
  5. <div style="position:absolute;width:50%;top:0;left:50%;right:0;bottom:0;background-color:blue;height:100%;">prawa</div>
  6. <div style="margin-left:50%;position:absolute;height:100%;">
  7. <div style="margin-left:-500px;width:1000px;background-color:green;position:absolute;height:100%;">Srodek</div>
  8. </div>
  9. </div>
  10.  
  11.  
  12. reszta strony
  13.  
  14. </body>
  15. </html>
thek
W takim wypadku chyba najprościej byłoby zastosować ciutkę wariacji do powyższego, a więc "rozbić" główny kontener na 2 części i ten drugi objąć jeszcze jednym divem. Minusem jest fakt, że ów dodatkowy div będzie rozepchnięty tylko na wysokość diva wycentrowanego i spod niego będzie widać te dwa kolorowe. Dlatego cały header też powinien wtedy być divem objęty i pozycjonowany relatywnie to się wtedy ograniczy idealnie jak trzeba, ale jeśli strona będzie za mała (mniejsza niż 100% wysokości strony), to pod spodem nie będzie tła i będzie pustka. raczej rzadki przypadek, ale jeśli już zajdzie, to dla pewności możesz ustawić tło identyczne z tym, które masz w divie będącym konternerem dla środka 2 smile.gif
Popatrz u mnie na kod ponownie i zobacz jakie kolory tła są gdzie a dojdziesz co i jak, bo specjalnie każdy div ma inny kolor ustawiony wink.gif
  1. *{margin:0;padding:0;}
  2. </head>
  3. <body style="background-color:brown;">
  4. <div id="header" style="position:relative;">
  5. <div id="lewe_tlo" style="width:50%;position:absolute;top:0;left:0;background-color:gray;height:100%;">lewo</div>
  6. <div id="prawe_tlo" style="width:50%;position:absolute;top:0;left:50%;background-color:green;height:100%;">prawo</div>
  7. <div id="zawartosc_headera" style="margin:0 auto;width:1000px;background-color:red;position:relative;">Srodek 1</div>
  8. </div>
  9. <div id="tlo_reszty_strony" style="background-color:blue;position:relative;z-index:10;">
  10. <div id="zawartosc_reszty_strony" style="margin:0 auto;width:1000px;background-color:orange;position:relative;">Srodek 2</div>
  11. </div>
  12. </body>
  13. </html>


@zegarek84: Twój kod wywalił mi doszczętnie Firefoxa na szerokość. Według niego obliczone wielkości sprawiają, że środkowy, centrowany div jest szerszy niż rozdzielczość przeglądarki, a mam 1280x800, więc jak byk powinienem mieć ze 140 luzu z obu stron...
everth
Trochę inne rozwiązanie oparte o z-indexy:
  1. <!DOCTYPE html>
  2. <meta charset="utf-8" />
  3. *{margin:0;padding:0;}
  4.  
  5. #header
  6. {
  7. height: 200px;
  8. }
  9.  
  10. #id1, #id2
  11. {
  12. position: absolute;
  13. width: 50%;
  14. top: 0;
  15. bottom: 0;
  16. background-color: green;
  17. z-index: -5;
  18. height: 200px;
  19. }
  20.  
  21. #id2
  22. {
  23. left: 50%;
  24. background-color: red;
  25. }
  26.  
  27. #id3
  28. {
  29. width: 1000px;
  30. height: 200px;
  31. margin: 0 auto;
  32. background-color: white;
  33. }
  34. </head>
  35. <body style="background-color:brown;">
  36. <div id="header" style="position:relative;">
  37. <div id="id1"></div>
  38. <div id="id2"></div>
  39. <div id="id3">Srodek 1</div>
  40. </div>
  41. <div id="tlo_reszty_strony" style="background-color:blue;position:relative;z-index:10;">
  42. <div id="zawartosc_reszty_strony" style="margin:0 auto;width:1000px;background-color:orange;position:relative;">Srodek 2</div>
  43. </div>
  44. </body>
  45. </html>
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.