Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [html/css] ustawienie szerokości diva
Forum PHP.pl > Forum > Po stronie przeglądarki
wolguy
Witam,
mój problem: mam 3 elementy div w jednej lini, chcę aby pierwszy zajmował 50% dostępnego miejsca, drugi np. 900px i trzeci również 50% dostępnej szerokości. Oczywiści wiem, jak to uzyskać "starym sposobem" za pomocą tabelek:

  1. <table border="1">
  2. <tr>
  3. <td width="50%"></td>
  4. <td width="900"></td>
  5. <td width="50%"></td>
  6. </tr>


A nowy nie działa:
  1. <div style="width:50%; border:1px solid #000; float:left;"></div>
  2. <div style="width:900; border:1px solid #000; float:left;"></div>
  3. <div style="width:50%; border:1px solid #000; float:left;"></div>


Proszę o pomoc.
xbigos
ustawianie szerokości DIV-a ma to do siebie, że suma szerokości elementów w jednej linii nie może być większa od szerokości okna przeglądarki. czyli jesli DIV1 ma szerokosc 50% czyli pół okna przeglądarki a div 3 ma tez 50 % wiec gdzie chcesz wcisnąć 900px? poza tym twój css jest niepoprawny. poniewaz gdy deklarujesz szerokosc w pikselach musisz napisac jednostkę czyli 3 div musi wygladac tak:
  1. <div style="width:900px; border:1px solid #000; float:left;"></div>
ale nie o to Ci chodzi w tym momencie wiec.
1. staraj sie uzywac jednej jednostki albo % albo px zwieksza to czytelnosc kodu
2. obramowanie liczy sie do szerokosci diva czyli jesli div ma 900 px a ty dasz obramowanie grubosci 1 px to twoj div ma 902px;
3. podam Ci przykładowy kod tylko nie pamietam teraz wszystkich wymiarów ale to sobie pododajesz tak zeby było dobrze.
  1. #lewy_div{
  2. float: left;
  3. width: 250px;
  4. border-left: 1px solid black;
  5. border-top: 1px solid black;
  6. border-bottom: 1px solid black;
  7. }
  8. #prawy_div{
  9. float: left;
  10. width: 250px;
  11. border-right: 1px solid black;
  12. border-top: 1px solid black;
  13. border-bottom: 1px solid black;
  14. }
  15.  
  16. #srodkowy_div{
  17. float: left;
  18. width: 450px;
  19. border-right: 1px solid black;
  20. border-top: 1px solid black;
  21. border-bottom: 1px solid black;
  22. border-left: 1px solid black}
  23. <div id="lewy_div">tekst</div>
  24. <div id="srodkowy_div">tekscik</div>
  25. <div id="prawy_div">tekscik</div>

---
Pozdrawiam
xbigos
wolguy
xbigos, dzięki za pomoc, ale nie jestem idiotą. Jeżeli mógłbym poustawiać szerokość dokładnie co do piksela, to bym tak zrobił. Chodzi u mnie o to, że jeden DIV ma szerokość 900px i pozostałą szerokość ekranu, która pozosta, chcę równo rozdzielić na dwie strony. Użytkownicy używają różnych rozdzielczości, dlatego użyłem procentów.
xbigos
<div>//ten 900px</div>
<div>//tego ustawiasz sobie tak zeby nie byl za wielki czyli to co CI zostalo w oknie

<div>// a ten dajesz po 50%</div>
<div>// a ten dajesz po 50%</div>
</div>
no i float:D
---
Pozdro
P.S nie twierdzilem ze jestes idiotą
wolguy
No tak, tylko ten DIV 900px-owy ma być w środku i tu jest ten gwóźdź. Zaczynam wątpić, czy da się to zrobić w CSS.
xbigos
Da sie:) w css-ie wszystko sie da:)
Kod
<STYLE>
div{
border-top: 1px solid black;
border-bottom: 1px solid black;
}
#lewy{
border-left: 1px solid black;
width: 4%;
float: left;
}
#srodek{
border-left: 1px solid black;
width: 900px;
float: left;
}
#prawy{
border-left: 1px solid black;
border-right: 1px solid black;
width: 4%;
float: left;
}
</style>
<div id="lewy">asd</div>
<div id="srodek">hfg</div>
<div id="prawy">546</div>


Innej opcji nie ma bo poprostu Ci sie to wszystko nie pomieści. Nie wiem czy dobrze zrozumiałem:)
Wydaje mi sie ze chodzi Ci o to ze chcesz miec na sztywno ustawione 900px dla srodkowego diva a lewy i prawy maja Ci sie automatycznie dopasowywać do reszty strony. Jesli nie to powiedz dokładnie co zamierzasz uzyskac to pomyslimy cos wiecej
wolguy
Dobrze zrozumiałeś, tylko dlaczego akurat 4% szerokości?
xbigos
bo wiecej sie nie zmiesci. patrz przylóżmy ze okno przegladarki ma 1000px chcesz miec na sztywno 900px dajesz do tego 1px obramowanie czyli
lewe obvramowanie + div srodkowy + prawe obramowanie = 1px + 900px + 1px = 902px;
i z okna przegladarki zostaje CI 98px bo 1000px - 902px = 98px
lewe okno chciales ustawic na 50% czyli 50% z 100px = 500px dodajac obramowanie lewe +1px == 501px
prawe okno chciales tak samo ustawic na 50% == 500px dodajac obramowanie np tylko prawe czyli + 1px == 501px;
a wiec
lewe okjno + prawe + srodek = 501px + 501px + 902px = 1904px;
gdzie chcesz to zmiescic?
4% ustawilem bo jesli podasz wymiar okna w procentach to dopasuje Ci sie automatycznie do rozdzielczosci ekranu.
a wiec
4 % z 1000px = 40px
teraz dodajesz obramowanie z jednej strony 1 px
40px + 1px = 41px;
41px * 2 (bo masz dwa okna po 4 %) = 81px
902px + 81px = 983px;
A wiec rozmiar strony masz 983px
Dlatego 4px bo jak dasz 5% to wtedy rozmiar strony mialby 1004px i nie zmiescil by Ci sie w przegladarce i float by nie zadzialal. mam nadzieje ze sie nigdzie nie pogubiłem.
Pewnie jest jakies inne rozwiazanie ale ja go nie znam, ja stosuje zupelnie inny sposob tworzenia stron.
---
pozdrawiam
xbigos
vokiel
Tutaj masz takie które są z podziałem na 3 kolumny, takie ze stałą szerokością, i z taką na %:
http://blog.html.it/layoutgala/
a tutaj jeszcze jeden:
faux-css-layouts
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.