Języki programowania wysokiego poziomu CSS Wskazówki
CSS powinno się projektować hierarchicznie, zaczynając od elementów ogólniejszych, kończąc na szczegółowych - Źle: p.mid { text-align: center; p { color: navy; body { font-family: Arial, sans-serif; - Dobrze body { font-family: Arial, sans-serif; p { color: navy; p.mid { text-align: center;
CSS warto zacząć od elementów body oraz body * - margines body wyznaczy odstęp całej zawartości od krawędzi okna przeglądarki body { width: 80%; margin-left: auto; margin-right: auto; - formatowanie tekstu (czcionka, kolor, wyrównanie, ) będzie odziedziczone jako domyślne do wszystkich elementów tekstowych (p, h1..h6, td, li, ) body * { font-family: Arial, Tahoma, sans-serif; color: black;
Formatowanie rożnych elementów można dowolnie grupować, a każdy selektor można wymieniać wielokrotnie: h1, h2 { text-align: center; h3 { text-align: left; color: #xxxxxx; h1, h2, h3 { color: #yyyyyy; Jedynym ograniczeniem jest czytelność (zobacz kolor h3 wyżej; nie jest to błąd brany jest kolor podany jako ostatni)
Elementy mające kilka wariantów formatowania (np. <p> - akapit zwykły, podpis rysunku, cytat, ) - Należy wybrać wariant najczęściej występujący i zapisać format bez użycia klasy: p { font-family: Arial, Tahoma, sans-serif; font-style: normal; text-align: left; - Następnie należy zdefiniować klasy, podając tylko elementy różniące ten styl od bezklasowego p.rys { font-style: italic; text-align: center;
Aby ograniczyć liczbę klas i ułatwić zmiany struktury strony, można stosować relację zawierania selektorów, np. a { color: red; td.menu a { color: green; td.foot a { color: blue; <td class="menu"><a href="...">"a" w menu</a> <td> <a href="...">"a" podstawowe</a> <td class="foot"><a href="...">"a" w stopce</a>
Łącze w menu i w stopce strony będzie sformatowane inaczej, a klasę wystarczy przypisać komórce tabeli (zamiast każdemu łączu) Co więcej, łącze przeniesione lub skopiowane, np. z menu do stopki, automatycznie zmieni formatowanie <td class="menu"><a href="...">"a" w menu</a> <td> <a href="...">"a" podstawowe</a> <a href="...">"a" w menu</a> <td class="foot"><a href="...">"a" w stopce</a>
Kolory Powinny tworzyć harmonijną paletę zamiast kakofonii; można użyć gotowej palety lub utworzyć własną: (np. http://kuler.adobe.com/#themes/ ) Kolory z palety należy używać w różnych intensywnościach (można użyć programu do obróbki grafiki, np. Gimp) Obecnie dominuje pogląd, że strona powinna przyciągać użyteczną zawartością, a nie efekciarstwem.
Łącza Jeżeli zmienia się w CSS kolor tekstu, to łącze zawarte w tym tekście nie dziedziczy koloru jeżeli nie ma być niebieskofioletowe, to trzeba skorzystać z pseudoklas łączy Jeżeli strona w zasadniczej treści zawiera liczne łącza, zwłaszcza jeżeli występują pętle podstron, to kolory łączy nieodwiedzonych i odwiedzonych powinny być różne; Typowy przykład - Wikipedia Jeżeli jedyne łącza stanowi menu z kilkoma pozycjami, to ww. kolory mogą być jednakowe; Użytkownicy już przywykli, że łącze może nie mieć podkreślenia, ale zaleca się je nadal stosować. Jeżeli nie, to łącze powinno mieć kolor inny, niż otaczające tekst i zmieniać go "pod myszką"
Łącza Łącza tworzące menu można zmienić w elementy blokowe; w połączeniu ze zmienionym kolorem tła utworzą coś na kształt przycisków (jeden pod drugim, na całą dostępną szerokość zatem muszą być w czymś, np. w komórce tabeli) a { display: block; padding: 5px 5px; Margines wewnętrzny (padding) domyślnie jest minimalny; Jeżeli "przycisk" ma inny kolor tła, to bez zmiany marginesu źle wygląda Przykład: menu po lewej, na stronie upload-u http://ktm.am.gdynia.pl/~pik/upload/
Łącza Łącza zmienione w elementy blokowe, jeżeli mają być wyświetlane obok siebie, trzeba też zmienić w pływające: a { display: block; float: left; padding: 5px 5px; Przykład: menu górne, na stronie upload-u http://ktm.am.gdynia.pl/~pik/upload/
Marginesy Zalecana jest zasada wszystko albo (prawie) nic albo ustala się wielkość wszystkich marginesów (wewn. i zewn.), albo zostawia domyślne i tylko sporadycznie zmienia gdzie trzeba (np. łącza w menu, jak opisano na poprzednich slajdach) Elementy blokowe sąsiadujące w pionie (np. <h1><h2><p><p><h3><p><p> ) powinny mieć taki sam odstęp od lewej krawędzi (padding-left + margin-left) - tekst ze schodkami źle wygląda
Marginesy Trzeba pamiętać, że marginesy elementów umieszczanych po sobie (np. <h1><h2>,<p>) nie sumują się, ale umieszczane jedne w drugich (np. <table><tr><td><p>) owszem; Marginesy elementów użytych tylko celem uzyskania układu strony (np. tabela z czterema komórkami: banner, manu, treść, stopka) powinny mieć marginesy zewnętrzne i wewnętrzne równe 0 table.layout td { margin: 0; padding: 0;
Marginesy Do sprawdzenia jak sumują się marginesy, warto włączyć (tymczasowo) cienką ramkę wokół wszystkiego, ewentualnie z innym kolorem dla wybranego rodzaju elementów body * { border 1px dotted gray; p { border 1px dotted red;
Tło i ramka Wybrane elementy można łatwo wyróżnić, stosując kolorowe tło oraz obramowanie (przykład: menu zadań na stronie upload-u) h4.menu { padding: 2px 2px; border-top: 2px dotted #cccccc; border-bottom: 2px dotted #cccccc; background-color: #efefff;