Artykuły:

  • data publikacji: 05.01.2009

    960 Grid System

    kategoria: XHTML/CSS autor: palmiak

    960 Grid System

    Jako, że większość stron ma dość podobny układ, kilka osób wykombinowało sobie, że może warto zrobić "frameworka" (prześladuje mnie to słowo) by każdorazowe klepanie tego układu mieć z głowy. Jednym z tworów powstałym na tej fali jest 960 Grid System. Jako, że leniwy jestem to postanowiłem spróbować.

    demo

    Co to robi?

    Tak naprawdę to tylko jedną rzecz - ułatwia nam tworzenie stron wielokolumnowych o układach iście bardzo egzotycznych.Jeden wiersz dwie kolumny, drugi siedem... A wszystko to osiągamy przez podanie odpowiedniej klasy. Dodatkowo w pakiecie dostajemy jeden arkusz ładnie formatujący nam tekst oraz reset.css, który ustawi margin i padding na 0 tam gdzie trzeba.

    Zalety

    Kiedy już zapamiętamy wszystkie klasy, a liczenie do 16 nie będzie nam sprawiać kłopotów to uznamy 960 za bardzo pożyteczne narzędzie, dzięki któremu nie będziemy już musieli pamiętać o floatach i innych rzeczach, których zwykle używamy do stworzenia wielokolumnowych stron. Szkielet będziemy budować używając klas typu grid_4, grid_8, alpha, omega etc. W sumie do zapamiętania jest tylko kilka nazw.

    Ze swojego doświadczenia powiem, że o ile pierwsza próba nie była od razu sukcesem, o tyle za drugim razem stworzenie 4 kolumn zajeło mi dosłownie minutkę.

    Wady

    Po pierwsze należy pamiętać, że 960 (ani inny podobny system) nie nadaje się do wszystkich stron. Robiąc strony pod coś takiego musimy najpierw dość dokładnie sobie wszystko policzyć. A co liczyć? Ano wyobraźcie sobie, że Wasza strona musi mieć szerokość 960px i składa się z 12 lub 16 równych kolumienek, które oczywiście można łączyć we wszelakich konfiguracjach. Oczywiście nie wszędzie trzeba się trzymać grida, ale z drugiej strony jeśli już wczytaliśmy tego cssa od groma to głupio go nie stosować.

    Sama Agressiva mnie przeklęła, gdy po tym jak mi stworzyła szablon do tego tutka sobie przypomniałem, że sidebar musi mieć określoną szerokość... oczywiście nie miał. Wniosek z tego taki, że jeżeli współpracujecie z grafikami to będziecie musieli mu dokładnie wytłumaczyć całą sprawę.

    Instalacja

    Wchodzimy na 960.gs i pobieramy to co trzeba. Następnie wypakowywujemy z niej 3 pliki: 960.css, text.css oraz reset.css. Ostatnim krokiem jest zamieścić je w naszym (x)htmlu:

    <link rel="stylesheet" type="text/css" media="all" href="css/reset.css" />
    <link rel="stylesheet" type="text/css" media="all" href="css/text.css" />
    <link rel="stylesheet" type="text/css" media="all" href="css/960.css" />

    Troszkę teorii

    Nim się zabierzemy za konkrety drobny wstępik teoretyczny. Pierwszym naszym krokiem jest zdecydowanie się czy chcemy korzystać z siatki 12-kolumnowej czy 16. W zależności od tego głównemu divowi nadajemy klasę container_12 lub container_16.

    Najważniejszymi klasami w 960grid_1, grid_2 itd do maksymalnej liczby kolumn, którą zdefiniowaliśmy. Te klasy oznaczają z ilu małych kolumienek ma się składać nasz obiekt.

    Przydatne są też suffix_xx i prefix_xx (pod xx należy wstawić liczbę). Prefix wstawia pustą kolumnę (lub więcej, w zależności od tego ile wpisaliśmy) przed obiektem, a suffix za.

    W naszym arsenale dysponujemy jeszcze klasami alpha i omega. Alpha ustawia lewy magines na 0, zaś omega prawy. Najczęściej alphę stosuje się dla pierwszej kolumny, a omegę dla ostatniej.

    Na koniec zostaje nam jeszcze klasa clear. Nadaje to divowi clear:both.

    Warto spojrzeć sobie na demo ze strony 960. Dzięki temu możecie zobaczyć jak wyglądają te kolumienki w praktyce.

    Czas na drobną praktykę

    W ramach praktyki zrobimy sobie taką oto stronkę (nałożyłem już siatkę, żeby łatwiej nam było widać jak będą wyglądać kolumny):

    960 grid system

    960 przyda nam się na tej stronie do:

    • podzielenia strony na dwie kolumny
    • podziału #main na dwie kolumny
    • podziału stopki na cztery kolumny

    I tylko tym się w tym tutorialu zajmiemy. Reszta już została opisana w tutorialu Agnieszki.

    Pierwszą rzeczą jaką trzeba zrobić jest zdecydowanie się czy korzystamy z 12 czy 16 kolumn. Ja potrzebowałem ich 16, więc <div id="container"> otrzymał klasę container_16.

    Teraz zajmijmy się podziałem na dwie kolumny:

    <div id="main" class="grid_11">[...]</div>
    <div id="sidebar" class="grid_5 omega">[...]</div>
     

    Żeby wszystko było ok musimy sumować sobie liczby znajdujące się grid, suffix oraz prefix. Ich suma nie może być większa niż liczba przy elemencie nadrzędnym. W tym przypadku się zgadza: 11+5 = 16, czyli tyle ile zadeklarowalismy na początku. Sidebarowi daliśmy jeszcze prawy margin na 0.

    Czas zająć się #main. Tutaj najpierw będziemy mieć jeden wiersz na całą szerokość #main a wiersz niżej dwie kolumny o równej szerokości:

    <div class="alpha">
          <h1 class="title">Lorem ipsum dolor sit amet</h1>
          <small>Kategoria: xhtml / Dodane przez: palmiak</small>
            <img src="obrazki/vivee.jpg" alt="vivee" />
          <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus mauris purus, vehicula id, dapibus ut, molestie quis, lacus. Etiam neque. Phasellus hendrerit, libero sed cursus dignissim, libero urna porttitor ipsum, eget sagittis ipsum tortor ut nisi. Phasellus eleifend facilisis quam. Pellentesque nec odio.</p>
          <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus mauris purus, vehicula id, dapibus ut, molestie quis, lacus. Etiam neque. Phasellus hendrerit, libero sed cursus dignissim, libero urna porttitor ipsum, eget sagittis ipsum tortor ut nisi. Phasellus eleifend facilisis quam. Pellentesque nec odio.</p>
        </div>
       
        <div class="grid_5 suffix_1 alpha">
          <h2 class="title">Lorem ipsum dolor sit amet</h2>
          <small>Kategoria: xhtml / Dodane przez: palmiak</small>
            <img src="obrazki/train.jpg" alt="pociąg" />
            <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus mauris purus, vehicula id, dapibus ut, molestie quis, lacus. Etiam neque. Phasellus hendrerit, libero sed cursus dignissim, libero urna porttitor ipsum, eget sagittis ipsum tortor ut nisi. Phasellus eleifend facilisis quam. Pellentesque nec odio.</p>
        </div>
       
        <div class="grid_5 omega">
          <h2 class="title">Lorem ipsum dolor sit amet</h2>
          <small>Kategoria: xhtml / Dodane przez: palmiak</small>
            <img src="obrazki/train.jpg" alt="pociąg" />
            <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus mauris purus, vehicula id, dapibus ut, molestie quis, lacus. Etiam neque. Phasellus hendrerit, libero sed cursus dignissim, libero urna porttitor ipsum, eget sagittis ipsum tortor ut nisi. Phasellus eleifend facilisis quam. Pellentesque nec odio.</p>
        </div>
     

    Pierwszy wiersz dostał tylko klasę alpha (czyli lewy magrin ustawiamy na 0). Nie musimy tu pisać grid_11, gdyż szerokość została odzieciczona.

    W drugim wierszu pierwszy div otrzymał klasy grid_5, suffix_1 oraz alpha, czyli div ten zajmuje 5 kolumienek, ma lewy margines ustawiony na 0, a na prawo od tego diva znajduje się pusta kolumienka. Drugi div też zajmuje 5 kolumienek (grid_5). Dodatkowo posiada klasę omega, czyli prawy margines ustalony na 0. Sprawdźmy czy jest dobrze: 5 + 1 + 5 = 11, czyli dobrze bo #main ma klasę grid_11, czyli składa się z 11 kolumienek.

    No pozostaje nam stopka. Tutaj prosta sprawa. Stopka ma zajmować całą szerokość, czyli dostaje klasę grid_16. Mamy więc 16 kolumienek do dyspozycji, a chcemy mieć 4 kolumny. W związku z tym każdy div otrzymuje klasę grid_4. Poza tym pierwszemu divowi musimy nadać klasę alpha, a ostatniemu klasę omega. W naszym szablonie wygląda to następująco:

    <div id="footer" class="grid_16">
            <div class="alpha grid_4">
          <h2>Lorem ipsum dolor sit amet</h2>
          <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus mauris purus, vehicula id, dapibus ut, molestie quis, lacus. Etiam neque. Phasellus hendrerit, libero sed cursus dignissim, libero urna porttitor ipsum, eget sagittis ipsum tortor ut nisi. Phasellus eleifend facilisis quam. Pellentesque nec odio.</p>
        </div>
        <div class="grid_4">
          <h2>Lorem ipsum dolor sit amet</h2>
          <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus mauris purus, vehicula id, dapibus ut, molestie quis, lacus. Etiam neque. Phasellus hendrerit, libero sed cursus dignissim, libero urna porttitor ipsum, eget sagittis ipsum tortor ut nisi. Phasellus eleifend facilisis quam. Pellentesque nec odio.</p>
        </div>
        <div class="grid_4">
          <h2>Lorem ipsum dolor sit amet</h2>
          <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus mauris purus, vehicula id, dapibus ut, molestie quis, lacus. Etiam neque. Phasellus hendrerit, libero sed cursus dignissim, libero urna porttitor ipsum, eget sagittis ipsum tortor ut nisi. Phasellus eleifend facilisis quam. Pellentesque nec odio.</p>
        </div>
        <div class="omega grid_4">
          <h2>Lorem ipsum dolor sit amet</h2>
          <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus mauris purus, vehicula id, dapibus ut, molestie quis, lacus. Etiam neque. Phasellus hendrerit, libero sed cursus dignissim, libero urna porttitor ipsum, eget sagittis ipsum tortor ut nisi. Phasellus eleifend facilisis quam. Pellentesque nec odio.</p>
        </div>
      </div>
     

    Podsumowanie

    Dzięki 960 udało mi się zakododować stronkę testową w iście ekspressowym tempie, a moim głównym zajęciem było wybieranie kolorków, zmian tła tu i ówdzie oraz ostylowanie menu na górze. Większość spraw z układem załatwił za mnie 960. Jednak jak już wspominałem na początku - nie przy wszystkich rodzaj stron to zadziała. A szkoda, bo fajnie by było zawsze tak szybko i przyjemnie kodować.

    Warto też wspomnieć, że istnieją jeszcze dwie odmiany 960:

    Udostępnij ten artykuł:
    • Print
    • Digg
    • del.icio.us
    • Facebook
    • Mixx
    • Google Bookmarks
    • Gwar
    • RSS
    • Technorati
    • Twitter
    • Wykop

  • This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

    18 Responses to “960 Grid System”

    1. marx pisze:

      Bardzo miło się zapowiada, jak tylko wróce do domu to sprawdze, ciekawe jak wyjdzie,
      dzieki za informacje.

    2. agressiva pisze:

      Ostrzegam, że szablon graficzny trzeba koniecznie opierac na siatkach gridowych, które są dołączone do zipa z całością i trzeba pamiętac o szerokości 960px czesci glownej w layoucie. Czasami wychodzą dziwne kwiatki, ale myślę, że kazdy sobie z tym poradzi, najwazniejsze, że ułatwia to pracę przy budowaniu kolumn.

      Przy stosowaniu układu 16-kolumnowego czesc wlasciwa z trscia ma tak naprawde szerokosc netto 940px bo po bokach calego containera tworza sie marginesy o szerokosc 10px.

      Ja na początku mialam z tym problem, zresztą teraz też czasami coś dziwnego potrafi wyskoczyc. Trzeba sie do tego po prostu przyzwyczaic. I mocno przecwiczyc.
      Szkoda jedynie, że na stronie 960.gs nie ma solidnej dokumentacji, dlatego też najpewniej my ją sobie stworzymy bawiąc się tym systemem.

    3. bzee.bzee pisze:

      Wspaniały tutek. Składam gratulację dla redakcji. Oczywiście skorzystam z tego systemu :]
      Odwiedzam to forum od bardzo dawna i uważam, że na podstawie waszych pozostałych tutorialii, muszę wreszcie coś stworzyć.
      Jeszcze raz dziękuje redakcji za wsparcie jakim obdarowujecie nas zielonych i niezielonych. Na pewno pomogliście wielu ludziom.
      Pozdrawiam

    4. agressiva pisze:

      Dzięki wielkie bzee bzee za miłe słowa (notabene kojarze twój nick z jakiegoś forum…) i zapraszamy do ciągłych odiwedzian Vivee :) Pozdr.

    5. PioB pisze:

      Polecam zapoznać się także z blueprintcss http://www.blueprintcss.org/ . Też całkiem ciekawy “framework” ;) . A tutek bardzo dobrze napisany. Jak to mawia G. Halama: Oklasky!

    6. palmiak pisze:

      Znam blueprinta i też się nim bawiłem. Osobiście jednak 960 bardziej mi przypadł do gustu. Sprawia on wrażenie, że ma robić to co ma robić i już. W Blueprint jak pamiętam nawet są klasy do komunikatów przy formularzach, co uważam osobiście za zbędne.

      Mimo to pomyślę czy nie napisać czegoś o Blueprint. Zdrowo jest, żeby było porównanie.

    7. lokator pisze:

      witam, za każdym razem jak ustawiam szer kolumny np na 9 pojawia mi sie jedna pusta kolumna na końcu, nie jestem w stanie ustawic kolumn o szer. 9 i 7 obok siebie, z gory dziękuję za pomoc w rozwiazaniu tego problemu

    8. agressiva pisze:

      Wszystkie kolumny jakie ustawiasz kolo siebie zawsze po zsumowaniu muszą wynieść 12 lub 16 w zaleznosci jaki container wybrales.
      Jezeli jest to 16 to wiersz z dwoma kolumnami powinien wygladac nastepująco:

      <div class="grid_9">tresc</div>
      <div class="grid_7">tresc</div>

      <div class="clear"></div>
       

      Pamietajac wczesniej aby nadac class=”container_16″ divowi w ktorym znajduje się cała strona.

      Jezeli wybrales container 12 to oczywiscie kolumny 9 i 7 są szersze i tym samym nie mieszcza się.

    9. lokator pisze:

      teoretycznie do grid 9 moge upchnąć 3 x grid_3 i wypełnić je treścią ale jak zrobie blok grid_9 to powstają jakieś marginesy i grid_3 mogę upchnąć tylko w grid_10 , czy to naturalne

    10. lokator pisze:

      chyba znalazlem rozwiazanie , uzylem w 1 bloku alfa a w ostatnim omega
      dziękuję, pozdrawiam

    11. bujak pisze:

      Trochę stary ten wpis, ale może komuś się przyda ten link – http://www.gridsystemgenerator.com/

    12. agressiva pisze:

      Nie jest to zadna sztuka wrzucic siatke gridową i wg jej pasków układac elementy ;P

    13. majareq pisze:

      Ale po to one są, pani mądra :]

    14. luke pisze:

      Teraz grid został udoskonalony, można ustawić dowolną szerokość strony, kolumn, odstępów a nawet jest dodatek fluid grid .

    15. marszu pisze:

      Witam.

      Mam pytanko – otóż uczę się stosować 960gs jednak mam problem bo nie wiem jak wstawić do strony diva (np, nagłówek lub stopkę) który będzie zajmował całą szerokość ekranu z tłem powtarzanym w skali x. Proszę mi powiedzieć czy w tym systemie można to jakoś obejść?
      pozdrawiam

    16. Kamil pisze:

      @marszu, tak. możesz:

      1) dodać tło do elementu body dla całej strony,

      2) stworzyć nadrzędnego diva, w którym osadzisz div[id="container_X"],

      3) stworzyć kilka divów i dla ogólnego dać jakieś tło (dla header, logo, content), a w środku zagnieżdżać container, choć to już trochę bardziej skomplikowane.

      ale dać się da, wszystko :-)

    Leave a Reply

Komentarze

Kategorie

Top 10

  • CMSy Artykuły dotyczące różnego rodzaju systemów zarządzania treścią CMS.
  • Flash Podstawowe informacje pomocne przy tworzeniu animacji w Adobe Flash.
  • Fotografia Samouczki dotyczące nie tylko robienia zdjęć ale też ich cyfrowej obróbki.
  • Grafika Ogólnie pojęta grafika komputerowa, od inspiracji, po tworzenie layoutów oraz mniejszych form graficznych.
  • Inne tutoriale wordpressowe Wszystkie inne zagadnienia dotyczące WordPressa.
  • Inspiracje Inspirujące materiały graficzne z dziedziny projektowania stron www, projektów DTP, digital painting, itp.
  • Obróbka zdjęć Techniki retuszu fotografii cyfrowych.
  • Rysunek Tworzenie rysowanych ilustracji w Adobe Photoshop.
  • Skóry do Wordpressa Darmowe oraz płatne – najlepsze skóry do WordPressa.
  • Skrypty client-side
  • Skrypty server-side
  • Tutoriale
  • Webdesign Tutoriale z zakresu projektowania stron www i grafiki użytkowej na rzecz internetu.
  • Wieczór z Open Source
  • Wordpress Ulubieniec naszej publiczności CMS WordPress: nowości, tricki, wtyczki, skóry i wszystko to co może przydać się przy korzystaniu z tego systemu.
  • Wtyczki do Wordpressa Recenzje oraz instrukcje najbardziej popularnych i najbardziej niezbędnych pluginów do WordPressa.
  • XHTML/CSS Ciekawostki z dziedziny kodowania stron www: XHTML, CSS, jQuery.

Najnowsze newsy

Wieczór z Open Source 2010

Jak co roku WSINF organizuje konferencję Wieczór z Open Source.
Chciałbym zaprosić was na tegoroczna konferencję Wieczór z Open Source 2010! Czytaj dalej

Grafart.org i WACOM zapraszają na konkursy!

Witam!

Myślę, że czas najwyższy nadmienić, że za niedługi czas zostanie zorganizowany pierwszy z trzech konkursów, w których główną nagrodą będą tablety firmy WACOM!
Za miejsca drugie oraz trzecie nagrodami będą kubki i koszulki firmy WACOM oraz magazyny graficzne PSD PHOTOSHOP oraz COMPUTERARTS.
Czytaj dalej

Zapraszamy na forum graficzne Graffika.pl

Każda osoba interesująca się grafiką komputerową ma czasami ochotę porozmawiać o swoich pracach, posłuchać rad, krytyki i pochwał innych osób. Idealnym miejscem na realizowanie takich potrzeb jest forum graficzne Graffika.pl.
Czytaj dalej