Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dostosowanie szablonu pod 1024x768, lub dowolnej rozdzielczości + techniki 3 kolumny
WebCM
post
Post #1





Grupa: Zarejestrowani
Postów: 375
Pomógł: 20
Dołączył: 28.07.2006

Ostrzeżenie: (0%)
-----


Kiedyś stosowałem technikę One True Layout. Tym razem nie ma potrzeby, bo tło dla wszystkich 3 kolumn jest jednakowe.

Szablon, który podpinam, ma ściśle określone szerokości. Strona wyświetla się w całości pod wyższą rozdzielczością. Na rynku dominują panoramiczne monitory LCD i OLED, ale w netbookach, laptopach i tabletach 1024x768 pewnie wciąż jest standardem.

Układ jest taki:
  1. <div id="top"></div>
  2. <div id="poziomyPasekMenu"></div>
  3. <div id="lewyPanel"></div>
  4. <div id="srodkowyPanel"></div>
  5. <div id="prawyPanel"></div>
  6. <div id="stopka">

Wszystko działa. Style CSS:
Kod
#top {
  float: left;
  width: 1100px;
  height: 117px;
  overflow: hidden;
}

#poziomyPasekMenu {
  float: left;
  width: 1080px;
  height: 28px;
  padding: 12px 10px 0;
  margin-bottom: 10px;
}

#lewyPanel {
  float: left;
  width: 230px;
}

#prawyPanel {
  float: right;
  width: 230px;
}

#srodkowyPanel {
  float: left;
  width: 620px;
  margin: 0 10px
}

Jak widać, każdy panel ma swoje miejsce i nic nie powinno "wypłynąć" albo przesunąć się.

Załóżmy, że szablon ma wyświetlać się w całości na 1024x768. Powiecie, że nie opłaca się, bo technika się szybko rozwija. Mimo wszystko prawie wszystkie strony biorą tę rozdzielczość pod uwagę.

W czym problem?

Załóżmy, że szerokość strony zależy od szerokości okna przeglądarki. Może to wyglądać tak:

Lewy panel: wartość stała
Środkowy panel: wartość procentowa (!)
Prawy panel: wartość stała

Jeżeli boczne panele będą miały stałą szerokość, a środkowy - procentową, strona może się rozjechać przy zbyt małej rozdzielczości ekranu albo szerokości okna przeglądarki. Po prostu środkowy panel będzie zbyt duży, dlatego prawy wyleci na dół.

Jakie rozwiązanie?

Mogę zapożyczyć rozwiązanie z One True Layout, czyli pozycjonowanie relatywne, marginesy i prawdopodobnie float. Raczej nie ma problemu z wyświetlaniem w IE, ale ma kilka wad:

1) Edycja jest trudna - dla mniej wprawionych webmasterów
2) Środkowy i prawy panel mają (prawie) ściśle ustawione marginesy - nie wiem, czy to nie utrudnia życia użytkownikom mobilnych rozwiązań

Są też zalety:

1) Środkowy panel może być ładowany na początku, a potem boczne
2) Można określić minimalną i maksymalną szerokość strony

Co o tym wszystkim myślicie?

A tak w ogóle jaki układ doradzacie? Strona o stałej czy zmiennej szerokości? Wydaje mi się, że szkoda marnować połowę miejsca na marginesy (byle nie przesadzić), z drugiej strony ewentualne obrazki na stronie trzeba skalować (max-width: 100%). Może zastosować inną technikę albo pozostać przy tej, która już jest (czyli float i stałe szerokości)?

Zależy mi na tym, by przeglądarka wyświetlała (renderowała) stronę tak szybko, jak to możliwe.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Damonsson
post
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Według mnie optymalnie to: Stała szerokość 1024x768

Obalam Twój argument o tym, że strona się będzie rozjeżdżać przy mniejszych rozdzielczościach...aktualnie mniej niż 1024px szerokości posiada 0,7% rynku

Przy stałej szerokości strona będzie wyglądać tak samo, czy na małym monitorze, czy na wielkim panoramicznym LCD, czy też na laptopie. Bez zbędnego martwienia się.

Wszystkie nowe strony są dopasowywane do 1024px, ba Nasza Klasa jakieś dopiero pół roku temu przeszła bodajże z 800px, dopiero na 1024px

Myślę, że przez najbliższe 2 lata procentowy udział 1024px w rynku nie spadnie poniżej 20%, a to jest już sporo.
Go to the top of the page
+Quote Post
everth
post
Post #3





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

Ostrzeżenie: (0%)
-----


Hm, nie znam się co prawda dobrze na layoutach ale dlaczego ustalasz % szerokość środka? A takie coś:
  1. body {min-width:800px;}
  2. #lewyPanel {
  3. float: left;
  4. width: 230px;
  5. }
  6. #prawyPanel {
  7. float: right;
  8. width: 230px;
  9. }
  10. #srodkowyPanel {
  11. padding: 0 240px;
  12. width:100%;
  13. }

Według tego środek skaluje się wraz z szerokością - ogranicznik dolnej szerokości w body wprowadzam po to że można było sensownie zaprojektować grafikę. Oczywiście układ ten może być bez sensu z jakiegoś (nieznanego mi) powodu, ale na pierwszy rzut oka powinno działać.
Go to the top of the page
+Quote Post
WebCM
post
Post #4





Grupa: Zarejestrowani
Postów: 375
Pomógł: 20
Dołączył: 28.07.2006

Ostrzeżenie: (0%)
-----


@everth: nie działa, jak trzeba, chyba że źle coś robię. Wypróbowałeś ten sposób?

Chyba pozostanę przy Holy Grail, tyle że bez kombinowania z tłem. Jeżeli macie inne sposoby, chętnie przetestuję.

Wadą tej techniki jest trudna modyfikacja, przez co zniechęcę część osób do jakichkolwiek zmian.

Ten post edytował WebCM 12.08.2010, 19:21:31
Go to the top of the page
+Quote Post
maverick22
post
Post #5





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 27.05.2010
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


ja zawsze ustawiam stałe wartości,

załóżmy mam top,menupoziome,lewybox,content,prawybox,stopka wszystko to wrzucam w kontener



<div id="container">reszta divów</div>


container { width: 960px;
margin-left: auto;
margin-right: auto;
}






top { width: stała wartość np 960px;
height: 100px;
float:left;
}

menupoziome { width: 960px;
height: 20px;
float: left;
}

lewybox { width: 200px;
height: 200px;
float: left;

content { width: 560px;
height: 200px;
float: left;
}

prawybox { width: 200px;
height: 200px;
float: left;
}

stopka { width: 960px;
height: 20px;
clear: both;
}


obecnie BARDZO mało osób ma rozdzielczość mniejszą niż 1024 więc ja preferuje stałe. i mam pewnosc że strona mi się nie rozjedzie.

no chyba że robisz stronę pod telefon (IMG:style_emoticons/default/smile.gif)






Go to the top of the page
+Quote Post
everth
post
Post #6





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

Ostrzeżenie: (0%)
-----


Tak działa, wymaga tylko pewnego przetasowania elementów w drzewku html -> tutaj masz prototypowy szablon.

Ten post edytował everth 12.08.2010, 20:16:12
Go to the top of the page
+Quote Post
WebCM
post
Post #7





Grupa: Zarejestrowani
Postów: 375
Pomógł: 20
Dołączył: 28.07.2006

Ostrzeżenie: (0%)
-----


Cytat
Tak działa, wymaga tylko pewnego przetasowania elementów w drzewku html
Wymaga, by najważniejsza część dokumentu (środek) znajdowała się w kodzie na samym końcu (po bocznych panelach). Wolę, by znalazł się na początku (zaraz po nagłówku i pasku menu) albo ostatecznie w środku. Wciąż kombinuję, ale może uda mi się znaleźć optymalne rozwiązanie.

W tej chwili udało mi się uzyskać taki efekt, że wymiary poszczególnych paneli są poprawne, ale prawy i lewy znajdują się pod środkowym (ale po obu stronach).

Ten post edytował WebCM 12.08.2010, 20:42:56
Go to the top of the page
+Quote Post
darophp
post
Post #8





Grupa: Zarejestrowani
Postów: 309
Pomógł: 20
Dołączył: 13.02.2010
Skąd: Kęty

Ostrzeżenie: (0%)
-----


A ja zapraszam na eduweb.pl --> http://blog.eduweb.pl/rozmiar-strony-www/
Go to the top of the page
+Quote Post
WebCM
post
Post #9





Grupa: Zarejestrowani
Postów: 375
Pomógł: 20
Dołączył: 28.07.2006

Ostrzeżenie: (0%)
-----


Tam są już nieaktualne dane. Odsetek 1024x768 zmniejszył się do ~25%, ale może utrzymywać się na tym samym poziomie. Większość korzysta jednak z wyższych rozdzielczości, dlatego to będzie główny target.

Możecie jeszcze przekonać mnie do stałej szerokości ~1024px, a duże marginesy przy wyższych nie są stratą przestrzeni.

Z tego wszystkiego wynika, że pozostaje One True Layout. Pobawiłem się trochę w CSS.
  1. <div id="top"></div>
  2. <div id="pasekMenu"></div>
  3. <div id="kontenerNaSmieci">
  4. <div id="srodkowyPanel"></div>
  5. <div id="lewyPanel"></div>
  6. <div id="prawyPanel"></div>
  7. </div>
  8. <div id="stopka"></div>
  9. </body>

  1. #srodkowyPanel {
  2. float: left;
  3. width: 100%; /* nie wiem, ile % szerokości zajmie panel przy danej szerokości !! */
  4. }
  5.  
  6. #lewyPanel {
  7. float: left;
  8. margin-left: -100%; /* chyba to ma związek z ustawieniem 100% dla środkowego */
  9. position: relative;
  10. right: 240px; /* chyba to samo to left: -240px, uwzględniamy margines 10px */
  11. width: 230px;
  12. }
  13.  
  14. #prawyPanel {
  15. float: left; /* ostatecznie można ustawić right */
  16. margin-right: -240px;
  17. width: 230px;
  18. position: relative;
  19. }
  20.  
  21. #kontenerNaSmieci {
  22. min-width: 400px; /* minimalna szerokość środka */
  23. padding-left: 240px;
  24. padding-right: 230px;
  25. position: relative;
  26. }

Coś może pomotałem, ale efekt powinien wyjść. Czy da się wyrzucić nadmiarowy element #kontenerNaSmieci? Jeżeli wrzuciłbym jego CSS-y do znacznika <body>, wtedy marginesy wpłyną na nagłówek, pasek menu i stopkę.

Pewnie istnieją lepsze sposoby na uzyskanie efektu (3 kolumny, boczne o stałej szerokości, środkowa o zmiennej). Najlepiej, by środkowa kolumna pojawiła się w kodzie jako pierwsza, a potem boczne - rozwiązanie ma swoje zalety.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 08:52