Skip to content

Dlaczego frameworki CSS ssą?

by Piotrek Reinmar Koszuliński on Styczeń 29th, 2010 Blip Facebook Flaker Twitter Wykop

Sesja się już dla mnie skończyła, można więc coś napisać. Dzisiaj będzie jednak krótko, bo i temat prosty.

Cóż to takiego framework CSS?

No właśnie. Każdy wie co to są frameworki programistyczne, ale CSSowy? Według wiki:

A CSS framework, also known as a web design framework is a pre-prepared library that is meant to allow for easier, more standards-compliant styling of a webpage using the Cascading Style Sheets language. Just like programming and scripting language libraries, CSS frameworks (usually packaged as external .css sheets inserted into the header) package a number of ready-made options for designing and outlaying a webpage.

Czyli, tak jak w językach programowania, framework jest biblioteką (w tym wypadku grupą reguł CSS) która ułatwia implementowanie jakichś standardowych, często powtarzających się funkcjonalności (w tym wypadku pewnych schematów w layoutcie).

Co, według mnie, frameworkiem CSS nie jest? Pisałem w listopadzie o parserze/kompilatorze/procesorze CSS – LESS, który rozszerza składnię CSS o kilka świetnych rzeczy. Między innymi – zmienne, zagnieżdżone reguły, obliczenia, wielokrotne wykorzystywanie reguł. Jakby nie było – nie podchodzi to pod definicję z Wikipedii, ale niestety znajduje się w linkach do przykładowych frameworków. Dla ustalenia uwagi – LESS nie jest frameworkiem.

Czemuż ssie?

Pod mą lupę wziąłem pierwsze linki zwrócone przez Google. Przyjrzałem się chwilkę frameworkom: Blueprint, Elastic CSS, YUI 2 Grids. Prawdopodobnie są lepsze rozwiązania od tych i z chęcią się im przyjrzę jeśli linki pojawią się w komciach :).

Słówko o nieudanym porodzie

Wypada jeszcze wtrącić, dla niezorientowanych, co to za poroniony pomysł ten Grid system. Otóż wpadł ktoś na pomysł, że wygodnie będzie wszystkim (grafikom, programistom) jak ustalimy sobie, że strona składa się z X kolumn po Ypx szerokości każda, między którymi są marginesy po Zpx. Przyznam, że obaj z grafikiem byliśmy zachwyceni, aż do… pierwszego projektu. Życzę np. sporo zabawy z cieniami wychodzącymi poza granice kolumn, w przypadku kiedy nie możemy użyć box-shadow. Szlag trafia wszystkie piękne, okrągłe wartości.

Koniec wtrącenia

Najpierw kawałek kodu z YUI 2 Grids:

<div id="yui-main">
   <div class="yui-b">
      <div class="yui-g">
 
         <div class="yui-g first">
            <div class="yui-u first"></div>
            <div class="yui-u"></div>
         </div>
 
         <div class="yui-g">
            <div class="yui-u first"></div>
            <div class="yui-u"></div>
         </div>
 
      </div>
   </div>
</div>

Tyle się kiedyś mówiło o semantyce kodu i oddzieleniu wyglądu od treści. Ponad pięć lat temu, kiedy zaczynałem naukę HTMLa i CSSa, trwała walka o to aby programiści zaczęli pisać porządny kod. Wydawało mi się, że teraz już nie powinno być z tym problemów, a tu zonk. Patrzę na ten przykład i co widzę?

  • Prezentacja zbita razem z HTMLem – żeby zmienić układ strony zmieniamy HTMLa, a nie CSS,
  • Kompletnie bezznaczeniowe nazwy klas i identyfikatorów – jedno wielkie semantyczne szambo. Wybrałem akurat framework od YUI, bo jest w tym najgorszy (choć Blueprint mu nie ustępuje). Elastic CSS wygląda trochę lepiej,
  • Divitis. W przypadku YUI można chyba akurat dowolnie zmieniać użyte tagi, bo framework resetuje marginesy i paddingi dla wszystkich elementów (co też, tak na marginesie, uważam za kiepską praktykę). Kiedy jednak używając Blueprinta postanowimy zawrzeć którąś kolumnę w listę, to wszystko szlag trafia, bo uwaga… niektóre selektory zawierają nazwę tagu :O
  • Narzucona struktura i kolejność elementów w kodzie HTML. Ja akurat poświęcam sporo uwagi temu aby każdy element nawigacyjny był w sensownym miejscu, aby nie używać niepotrzebnych tagów, a wykorzystując framework nie mam tej elastyczności,
  • I wreszcie – przecież to wszystko co oferuje framework można w czasie, który jest bez znaczenia w stosunku do całego projektu, napisać ręcznie. To jest kilka reguł, które doświadczona osoba pisze na raz i to od razu z ewentualnym hackiem dla IE6. Tak, wiem, że nie wszyscy mają taką wiedzę, ale wykorzystując framework nigdy jej nie pogłębią.

Tak więc w żadnym wypadku nie widzę sensu w używaniu frameworków do budowy układu strony. Żeby jednak nie było, że w ogóle nie umiem wykorzystywać zewnętrznego kodu – uważam, że przydatne są frameworki poprawiające typografię, bądź też pod niektórymi względami formularze. Muszą jednak bazować na selektorach używających tagów, a nie klas, czy nie daj Boże identyfikatorów.

Podobne wpisy:

  1. Zen Coding – snippety do kosza

From → HTML + CSS

3 Comments
  1. Witam,
    Bardzo dobrze się składa że poruszyłeś ten temat. Ostatnio miałem do czynienia z czymś co wyglądało „ah to wszystko ma taki sam układ” po ostatnich kwikach etc. wokół YUI/Blueprinta itp, uznałem że to dobra okazja na sprawdzenie któregoś z nich. Skoro prosty i niezmienny grid jeden, wybrałem „na szybko” YUI. Wrażenia? „Nigdy więcej!!!” Gdy nagle musiałem zmieniać odrobinę układ strony, wprowadzanie było ich było istnym piekłem, a chwilami musiałem samego YUI !important’ami nadpisywać bo „resetował” rzeczy których w ogóle nie chciałem… Niesamowicie odradzam. Blueprinta mi ostatnio kolega polecał (trocheinaczej.pl) ale porządnie się zastanowię i obadam wszystkie idee kolejnego frameworka css zanim skorzystam.
    Nowością jest dla mnie wymieniony przez ciebie elasticss – wygląda całkiem dobrze, na pewno o wiele jaśniejsze są nazwy klas „unit on-3 columns” brzmi sensownie i samo-dokumentuje się.

    Ppozdrawiam, i chętnie wysłucham wrażeń dot innych frameworków css – o YUI już wiem że jest dnem ;-)

  2. Zapomniałem napisać pod koniec wpisu, że to tylko kopia oryginalnego wpisu z mojego prywatnego bloga: http://blog.koszulinski.pl/2010/01/29/dlaczego-frameworki-css-ssa/
    W komentarzach pojawił się link do prezentacji, której autor bardzo ładnie rozprawia się z frameworkami :) Polecam, choć długa.

    Mnie najbardziej we frameworkach dziwi to, że zrobiły się… trendy. Nie wiem jak to możliwe, bo zaprzeczają, tak jak to pisałem, wielu podstawowym zasadom. Czuję się teraz jak taki staruch, który nie potrafi iść z duchem czasu ;)

  3. Dzięki za odpowiedź i link – rzucę okiem na wspomnianą prezentację.
    Pozdrawiam :-)

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS

Notify me of followup comments via e-mail. You can also subscribe without commenting.