SlideShare a Scribd company logo
1 of 26
Download to read offline
IDZ DO
         PRZYK£ADOWY ROZDZIA£
                                         Zwiêksz szybko æ!
                           SPIS TRE CI
                                         Optymalizacja serwisów
           KATALOG KSI¥¯EK               internetowych
                                         Autor: Andrew B. King
                      KATALOG ONLINE     T³umaczenie: Marek Suczyk (rozdz. 1 – 11),
                                         Jacek Smycz (rozdz. 12 – 19)
       ZAMÓW DRUKOWANY KATALOG           ISBN: 83-7361-134-7
                                         Tytu³ orygina³u: Speed Up Your Site – Web Site Optimization
                                         Format: B5, stron: 416
              TWÓJ KOSZYK                Przyk³ady na ftp: 80 kB

                    DODAJ DO KOSZYKA     Cierpliwo æ u¿ytkownika jest jak bomba zegarowa. Ka¿de wej cie na Twoj¹ stronê
                                         WWW uruchamia odliczanie. Masz zaledwie kilka sekund, by dostarczyæ
                                         odwiedzaj¹cemu tre ci, których poszukuje. Je li nie zd¹¿ysz, mo¿esz siê po¿egnaæ
         CENNIK I INFORMACJE             ze swoim go ciem (i z ewentualnymi zyskami, które osi¹gn¹³by dziêki jego wizycie).
                                         Nie mo¿esz liczyæ na szybkie ³¹cza. W dalszym ci¹gu wielu go ci Twojej witryny u¿ywa
                   ZAMÓW INFORMACJE      sieci telefonicznej i zwyk³ych modemów. Albo zd¹¿ysz, nim skoñczy siê ich cierpliwo æ,
                     O NOWO CIACH        albo przegrasz. Dlatego powiniene siêgn¹æ po tê ksi¹¿k¹. Dowiesz siê z niej, jak
                                         skróciæ o po³owê czas wczytywania strony. Zmniejszysz rozmiary plików HTML,
                       ZAMÓW CENNIK      XHTML, CSS, ilustracji i skryptów JavaScript oszczêdzaj¹c dodatkowo na kosztach
                                         ³¹czy. Przyk³ady wziête z praktyki przedstawiaj¹ techniki przynosz¹ce rzeczywiste
                                         rezultaty. Po przeczytaniu tej ksi¹¿ki bêdziesz ju¿ wiedzia³, jak tworzyæ strony
                 CZYTELNIA               pojawiaj¹ce siê na ekranie w mgnieniu oka.
                                         Nauczysz siê:
          FRAGMENTY KSI¥¯EK ONLINE
                                            • Przyspieszaæ ³adowanie siê stron WWW
                                            • Anga¿owaæ u¿ytkowników w proces przegl¹dania strony
                                            • Analizowaæ efekty psychologiczne wywo³ywane wolnym ³adowaniem siê stron
                                            • Zmniejszaæ rozmiary i stopieñ skomplikowania plików HTML
                                            • Stosowaæ skróty w CSS
                                            • Przyspieszaæ i odchudzaæ JavaScript
                                            • Zmniejszaæ rozmiary plików graficznych i multimedialnych
                                            • Oszczêdzaæ przepustowo æ ³¹czy (a¿ do 60%!) stosuj¹c kompresjê HTTP
                                         Andrew B. King (Andy) jest za³o¿ycielem WebReference.com oraz JavaScript.com
                                         (obie witryny zosta³y nagrodzone w klasyfikacji stron przeznaczonych dla
                                         programistów). WebReference.com – utworzona w 1995 roku, a nastêpnie w 1997 r.
Wydawnictwo Helion                       zaadoptowana przez Macklermedia (obecnie Jupitermedia) – uros³a do rangi jednej
ul. Chopina 6                            z najpopularniejszych stron internetowych dla programistów.
44-100 Gliwice
tel. (32)230-98-63                       Kto wszed³ na Twoj¹ stronê? Nie ka¿ mu czekaæ!
e-mail: helion@helion.pl                    • Praktyczne sposoby przyspieszania stron WWW
                                            • Psychologia cierpliwo ci – co powodujê, ¿e u¿ytkownicy uciekaj¹ ze strony
                                            • Oszczêdzanie czasu i oszczêdzanie przepustowo ci: kompresja HTTP
                                            • Zmniejszanie rozmiarów plików graficznych i multimedialnych.
Spis treści
               O Autorze .......................................................................................... 9
               Przedmowa...................................................................................... 13
               Wstęp ............................................................................................. 15

Część I        Psychologia wydajności..................................................21
Rozdział 1. Czas odpowiedzi: osiem +/– dwie sekundy ....................................... 23
               Szybkość — główny składnik wpływający na wygodę u ywania systemu......................25
               Krótka historia o wydajności sieci ....................................................................................27
               Czas reakcji a zadowolenie u ytkownika..........................................................................29
               Wskaźnik rezygnacji i granica uwagi................................................................................34
               Zdolność dostosowania .....................................................................................................37
               Podsumowanie ..................................................................................................................40
Rozdział 2. Przepływ w projektowaniu stron internetowych ................................. 43
               Mihaly Csikszentmihalyi i przepływ.................................................................................44
               Co powoduje uczucie przepływu w sieci internetowej? ...................................................46
               Uczucie przepływu i projektowanie stron internetowych .................................................50
               Podsumowanie ..................................................................................................................52

Część II       Optymalizacja kodu HTML i XHTML.................................53
Rozdział 3. Optymalizacja HTML ........................................................................ 55
               Co to jest optymalizacja kodu HTML? .............................................................................56
               Zło oność kodu a przepustowość łącza ............................................................................56
               Jak nowoczesne przeglądarki współpracują z HTML?.....................................................59
               W jaki sposób optymalizować HTML? ............................................................................61
               Podsumowanie ..................................................................................................................76
Rozdział 4. Zaawansowane metody optymalizacji ............................................... 77
               Wskazówki do projektowania tabel ..................................................................................77
               Optymalizacja formularzy.................................................................................................92
               Skróty URL .......................................................................................................................98
               HTML i kompresja..........................................................................................................100
               Podsumowanie ................................................................................................................101
6                                                 Zwiększ szybkość! Optymalizacja serwisów internetowych


Rozdział 5. Ekstremalny XHTML ...................................................................... 103
               Korzyści płynące z XHTML ...........................................................................................104
               XHTML kontra HTML ...................................................................................................106
               Anatomia dokumentu XHTML.......................................................................................106
               Zasady składni XML.......................................................................................................110
               Konwersja z HTML do XHTML ....................................................................................116
               Optymalizacja kodu XHTML .........................................................................................117
               Podsumowanie ................................................................................................................120
Rozdział 6. Studium przypadku: PopularMechanics.com.................................... 123
               Automatyczna optymalizacja ..........................................................................................126
               Optymalizacja ręczna ......................................................................................................127
               Podsumowanie ................................................................................................................132

Część III Optymalizacja DHTML: CSS i JavaScript ........................135
Rozdział 7. Optymalizacja CSS......................................................................... 137
               Mądre stosowanie stylów ................................................................................................138
               Usuwanie wolnych przestrzeni........................................................................................139
               Wycinanie komentarzy....................................................................................................139
               Minimalizacja ądań HTTP ............................................................................................140
               U ywanie prostych selektorów i podstawień ..................................................................140
               Grupowanie .....................................................................................................................143
               Dziedziczenie ..................................................................................................................145
               Warstwy stylów a szybkość ............................................................................................146
               Skracanie właściwości.....................................................................................................146
               Optymalizacja kolorów CSS ...........................................................................................154
               Jednostki długości: wszystko jest względne ...................................................................156
               Podsumowanie ................................................................................................................158
Rozdział 8. Zaawansowana optymalizacja kodu CSS......................................... 161
               Zasady optymalizacji arkuszy CSS .................................................................................161
               Elementy zastępcze .........................................................................................................164
               Tabele i CSS....................................................................................................................176
               Kontrolowanie układu za pomocą arkuszy CSS .............................................................177
               Podsumowanie ................................................................................................................180
Rozdział 9. Optymalizacja kodu JavaScript pod kątem szybkości ładowania....... 183
               Kiedy zdecydować się na optymalizację?.......................................................................184
               Zrzucenie zbędnych kalorii .............................................................................................184
               Mądre stosowanie JavaScriptu ........................................................................................187
               Minimalizacja ądań HTTP ............................................................................................188
               Skróty i odwzorowanie....................................................................................................191
               Zagęszczanie i zaciemnianie ...........................................................................................192
               JavaScript i kompresja ....................................................................................................196
               Podsumowanie ................................................................................................................197
Rozdział 10. Optymalizacja kodu JavaScript pod kątem szybkości działania......... 199
               Poziomy projektowania...................................................................................................200
               Sprawdzanie zmian .........................................................................................................201
               Algorytmy i struktury danych .........................................................................................201
               Upraszczanie kodu ..........................................................................................................203
               Minimalizacja współdziałania modelu DOM z wejściem-wyjściem..............................203
               Optymalizacja lokalna.....................................................................................................208
               Dostrajanie wyra eń........................................................................................................220
               Podsumowanie ................................................................................................................222
Spis treści                                                                                                                                        7


Rozdział 11. Studium przypadku: DHTML.com .................................................... 225

Część IV Optymalizacja grafiki i multimediów ..............................229
Rozdział 12. Optymalizacja grafiki stron internetowych....................................... 231
               Tworzenie i przygotowanie obrazków ............................................................................232
               Optymalizacja plików JPEG ...........................................................................................233
               Optymalizacja plików GIF ..............................................................................................243
               Optymalizacja PNG.........................................................................................................250
               Czas pobierania: liczba pakietów a rozmiar strony.........................................................255
               Na horyzoncie: JPEG2000 i grafika wektorowa .............................................................256
               Podsumowanie ................................................................................................................257
Rozdział 13. Minimalizacja multimediów ............................................................ 259
               Podstawy multimediów ...................................................................................................260
               Kompresja i optymalizacja audio....................................................................................271
               Optymalizacja wideo.......................................................................................................277
               Optymalizacja PDF .........................................................................................................289
               Podsumowanie ................................................................................................................293
Rozdział 14. Studium przypadku: Apple.com....................................................... 295
               Output (wyjście)..............................................................................................................296
               Tracks (ście ki) ...............................................................................................................296
               Image (obraz) ..................................................................................................................296
               Adjust (dostosowanie).....................................................................................................297
               Encode (kodowanie)........................................................................................................297
               Audio...............................................................................................................................298
               Ostateczne wyniki ...........................................................................................................298

Część V        Optymalizacja mechanizmów wyszukiwania ...................299
Rozdział 15. Optymalizacja słów kluczowych ...................................................... 301
               Ogólny obraz ...................................................................................................................301
               Optymalizacja słów kluczowych — porady....................................................................304
               Strategie projektowe przyjazne dla pająków...................................................................318
               Charakterystyka strony o wysokiej pozycji w rankingach..............................................319
               Podsumowanie ................................................................................................................320
Rozdział 16. Studia przypadków: PopularMechanics.com i iProspect.com ........... 323
               PopularMechanics.com ...................................................................................................323
               iProspect.com ..................................................................................................................328

Część VI Zaawansowane techniki optymalizacji .........................333
Rozdział 17. Techniki działające po stronie serwera ........................................... 335
               Server-Side Includes .......................................................................................................336
               Zalety SSI: szybkość i du a zgodność ............................................................................337
               Dostrajanie mod_include.................................................................................................338
               Wykrywanie przeglądarek po stronie serwera ................................................................340
               Skracanie adresów URL za pomocą mod_rewrite ..........................................................351
               Optymalizacja formularzy i CGI.....................................................................................358
               Nigdy więcej www..........................................................................................................362
               Podsumowanie ................................................................................................................363
8                                                Zwiększ szybkość! Optymalizacja serwisów internetowych


Rozdział 18. Kompresowanie stron internetowych .............................................. 365
              Algorytmy kompresji tekstu............................................................................................366
              Kompresja zawartości .....................................................................................................367
              Kompresja zawartości: strona klienta .............................................................................369
              Kompresja zawartości: strona serwera............................................................................373
              Kompresja zawartości oparta na proxy ...........................................................................389
              Narzędzia oceniające.......................................................................................................390
              Na horyzoncie .................................................................................................................391
              Podsumowanie ................................................................................................................392
Rozdział 19. Studia przypadków: Yahoo.com i WebReference.com ...................... 395
              Skracanie Yahoo.com......................................................................................................395
              Skracanie WebReference.com ........................................................................................397

Dodatki ...................................................................................... 399
              Skorowidz...................................................................................... 401
Rozdział 8.
Zaawansowana
optymalizacja kodu CSS
        Oprócz omówionych korzyści płynących z buforowania plików CSS i zmniejszenia
        obcią enia łącza, CSS pozwala na zastąpienie elementów strony, które pochłaniają
        znaczne zasoby i wydłu ają czas ładowania (np. grafika nakładkowa), na „lekkie”
        elementy, nieobcią ające strony. W tym rozdziale zamieszczone zostały informacje
        omawiające cztery główne sposoby wykorzystania arkuszy CSS do przyspieszenia
        stron internetowych. Zagadnienia te dotyczą:
             mniejszych rozmiarów arkuszy stylów,
             elementów zastępczych,
             szybszych tabel,
             kontroli układu i rozmieszczenia elementów.



Zasady optymalizacji arkuszy CSS
        Na podstawie metod, których zdą yłeś się nauczyć w rozdziale 7., będziesz mógł zo-
        baczyć, w jaki sposób przeprowadzana jest optymalizacja starego arkusza stylów strony
        WebReference.com (listing 8.1).

Listing 8.1. Oryginalny arkusz stylów WebReference.com
           UV[NG V[RG VGZVEUU
            
           HQTOVD]FKURNC[KPNKPG_
           J]VGZVFGEQTCVKQPPQPGHQPVUKGRVHQPVHCOKN[IGPGXCCTKCNUCPUUGTKH_
           E]HQPVUKG HQPVHCOKN[CTKCNIGPGXCUCPUUGTKH_
           F]HQPVUKG HQPVHCOKN[CTKCNIGPGXCUCPUUGTKH_
           FV]HQPVYGKIJVDQNFHQPVUKG OCTIKPVQRGO_
162                                    Część III ♦ Optymalizacja DHTML: CSS i JavaScript


        Y]HQPVUKG HQPVHCOKN[XGTFCPCUCPUUGTKHEQNQT _
        05N[T]YKFVJRQUKVKQPCDUQNWVGXKUKDKNKV[JKFFGP_
        CJQXGT]DCEMITQWPFEQNQT HHFF_
        
        UV[NG


      W powy szym arkuszu mo na zauwa yć wiele technik omawianych we wcześniej-
      szych rozdziałach ksią ki. U ywane są skróty, jednoznakowe nazwy klas (jak J i E),
      proste selektory typów (FV), pseudoklasa JQXGT. Arkusz nie jest połączony ze stroną,
      lecz jest w niej osadzony. Zawsze jednak mo na coś zrobić lepiej. Wykorzystajmy
      skrócone właściwości HQPV i DCEMITQWPF, jak równie skorzystajmy ze skróconego za-
      pisu szesnastkowego:
        UV[NG V[RG VGZVEUU
         
        HQTOVD]FKURNC[KPNKPG_
        J]VGZVFGEQTCVKQPPQPGHQPVRV IGPGXCCTKCNUCPUUGTKH_
        E]HQPV CTKCNIGPGXCUCPUUGTKH_
        F]HQPV CTKCNIGPGXCUCPUUGTKH_
        FV]HQPVDQNF  UGTKHOCTIKPVQRGO_
        Y]HQPV XGTFCPCUCPUUGTKHEQNQT _
        05N[T]YKFVJRQUKVKQPCDUQNWVGXKUKDKNKV[JKFFGP_
        CJQXGT]DCEMITQWPF HF_
        
        UV[NG

      Dzięki wykorzystaniu skróconych właściwości oszczędzamy 99 bajtów (ilość znaków
      zmniejsza się z 449 do 350). Poniewa skrócona właściwość HQPV wymaga wartości
      HQPVHCOKN[, mo e pojawić się problem z listą definicji, je eli u ytkownik wybierze
      czcionkę UCPUUGTKH. Elementy FV będą wówczas pisane czcionką szeryfową, a ele-
      menty FF bezszeryfową. Aby temu zaradzić, mo na ustawić czcionkę dla elementu DQF[
      na UGTKH:
        UV[NG V[RG VGZVEUU
         
        DQF[]HQPVGO UGTKH_
        HQTOVD]FKURNC[KPNKPG_
        J]VGZVFGEQTCVKQPPQPGHQPVRV IGPGXCCTKCNUCPUUGTKH_
        E]HQPV CTKCNIGPGXCUCPUUGTKH_
        F]HQPV CTKCNIGPGXCUCPUUGTKH_
        FV]HQPVDQNF  UGTKHOCTIKPVQRGO_
        Y]HQPV XGTFCPCUCPUUGTKHEQNQT _
        05N[T]YKFVJRQUKVKQPCDUQNWVGXKUKDKNKV[JKFFGP_
        CJQXGT]DCEMITQWPF HF_
        
        UV[NG

      Lecz jak się okazuje, dłu szy zapis właściwości FV i pozostawienie HQPVHCOKN[ jest
      w rzeczywistości krótsze o 4 znaki (360 zamiast 364 znaków):
        UV[NG V[RG VGZVEUU
         
        HQTOVD]FKURNC[KPNKPG_
        J]VGZVFGEQTCVKQPPQPGHQPVRV IGPGXCCTKCNUCPUUGTKH_
        E]HQPV CTKCNIGPGXCUCPUUGTKH_
Rozdział 8. ♦ Zaawansowana optymalizacja kodu CSS                                       163


           F]HQPV CTKCNIGPGXCUCPUUGTKH_
           FV]HQPVYGKIJVDQNFHQPVUKG OCTIKPVQRGO_
           Y]HQPV XGTFCPCUCPUUGTKHEQNQT _
           05N[T]YKFVJRQUKVKQPCDUQNWVGXKUKDKNKV[JKFFGP_
           CJQXGT]DCEMITQWPF HF_
           
           UV[NG

        W tym miejscu pierwotny arkusz stylów został zmniejszony o 20% (z 449 znaków do
        360). W dalszej części optymalizacji mo na pogrupować rodziny czcionki na trzy style
        i osobno określić ich rozmiary:
           UV[NG V[RG VGZVEUU
            
           HQTOVD]FKURNC[KPNKPG_
           JEF]HQPVHCOKN[CTKCNIGPGXCUCPUUGTKH_
           J]VGZVFGEQTCVKQPPQPGHQPVUKGRV_
           E]HQPVUKG _
           F]HQPVUKG _
           FV]HQPVYGKIJVDQNFHQPVUKG OCTIKPVQRGO_
           Y]HQPV XGTFCPCUCPUUGTKHEQNQT _
           05N[T]YKFVJRQUKVKQPCDUQNWVGXKUKDKNKV[JKFFGP_
           CJQXGT]DCEMITQWPF HF_
           
           UV[NG

        Ilość znaków zmniejszyła się do 348. Mo na uzyskać jeszcze lepszy rezultat u ywa-
        jąc ogólnych rodzin czcionki, mniejszych rozmiarów oraz skróconej właściwości HQPV
        (listing 8.2).

Listing 8.2. Zoptymalizowany arkusz stylów WebReference.com
           UV[NG V[RG VGZVEUU
            
           HQTOVD]FKURNC[KPNKPG_
           JEF]HQPV UCPUUGTKH_
           J]VGZVFGEQTCVKQPPQPG_
           FV]HQPVYGKIJVDQNFHQPVUKG OCTIKPVQRGO_
           Y]HQPV UCPUUGTKHEQNQT _
           05N[T]YKFVJRQUKVKQPCDUQNWVGXKUKDKNKV[JKFFGP_
           CJQXGT]DCEMITQWPF HF_
           
           UV[NG


        Wielkość kodu została zmniejszona do 276 bajtów, czyli o 38 procent względem
        pierwotnego rozmiaru. Czy zwróciłeś uwagę na połączenie metody grupowania ze
        skróconą właściwością HQPV? Zauwa , e powy szy kod mo na jeszcze bardziej
        zmniejszyć usuwając z niego wszystkie znaki końcowe i niepotrzebne spacje (pamię-
        taj, e linia nie powinna być dłu sza ni 255 znaków). Dzięki kaskadowaniu, dziedzi-
        czeniu, grupowaniu i skracaniu właściwości mo na zmniejszyć rozmiar arkusza CSS
        o ponad 50 procent.
164                                      Część III ♦ Optymalizacja DHTML: CSS i JavaScript



Elementy zastępcze
        Coraz więcej przeglądarek obsługuje pseudoklasę JQXGT arkusza CSS2. Dzięki temu
        mo na uzyskać efekty nakładkowe, które pobierają znacznie mniej zasobów ni Java-
        Script. Mo na wyró nić dwa podstawowe sposoby optymalizacji elementów nakład-
        kowych:
             za pomocą grafiki nakładkowej CSS2 — przeźroczyste GIF-y oraz kolorowe
             tła mogą o połowę zmniejszyć ilość potrzebnych obrazków,
             za pomocą samych nakładek CSS2 — obrazki zostają całkowicie zastąpione
             tekstem.

        Bez względu na to, z którego sposobu skorzystasz, zawsze rezultatem będzie zmniej-
        szenie ilości ądań HTTP i wielkości kodu.


Grafika nakładkowa CSS2
        Grafika nakładkowa CSS2 polega na u ywaniu przeźroczystych GIF-ów oraz pseu-
        doklasy JQXGT do zmiany tła za obrazkiem nakładkowym. Efekt jest taki sam, jak pod-
        czas korzystania z dodatkowych obrazków i kodu JavaScript. Stuart Robertson z Desi-
        gnmeme.com przedstawił sposób ulepszenia paska narzędzi na stronie Zeldman.com
        (rysunek 8.1).

Rysunek 8.1.
Grafika nakładkowa
CSS2 (http://
designmeme.com/
zeldman)




        Wszystko, co jest potrzebne, to zaledwie kilka obrazków z przeźroczystymi wycin-
        kami oraz kilka wierszy kodu CSS:
          GNFOCP C ] FKURNC[DNQEM YKFVJRZ DCEMITQWPFEQNQT _
          GNFOCP CJQXGT ]DCEMITQWPFEQNQT %%((_
Rozdział 8. ♦ Zaawansowana optymalizacja kodu CSS                                        165


       Uproszczony kod HTML wygląda następująco:
          FKX ENCUU GNFOCP
          VCDNG DQTFGT  EGNNRCFFKPI  EGNNURCEKPI 
                VT
                      VF DIEQNQT  C JTGHJVVRYYYGNFOCPEQOINCOQTQWU
                            KOI PCOG INCO UTE INCOIKH YKFVJ  JGKIJV  DQTFGT
                              CNV /; ).#/14175 .+(' 6TCIKEQOKE HQFFGT HTQO VJG NKHG QH
                            GNFOCP  C VF
          

       Ta pomysłowa metoda zmienia kolor tła łącza za obrazkiem nakładkowym. Poniewa
       tekst na obrazku jest przeźroczysty, przebija przez niego kolor tła. Oczywiście po-
       wy szy kod mo na lepiej zoptymalizować u ywając skróconej właściwości DCEMITQ
       WPF i krótkich szesnastkowych zapisów kolorów. Teraz jednak chodzi o przedstawie-
       nie samego pomysłu. Opisana metoda znakomicie działa w starszych przeglądarkach
       i nie wymaga korzystania z kodu JavaScript.


Proste nakładki CSS
       Mo esz zrobić kolejny krok i wymienić wszystkie obrazki na CSS2. Proste nakładki
       CSS2 u ywają stylów zarówno dla pierwszoplanowych elementów menu, jak i dla
       samego tła menu. Autorzy stron znaleźli pomysłowy sposób na przekształcenie łączy
       w nakładki. Niektórzy tworzą przyciski trójwymiarowe, inni przekształcają łącza
       w elementy blokowe, a jeszcze inni zmieniają listy w wewnętrzne elementy wierszy.
       Bez względu na to, który sposób wybierzesz, wszystkie metody bazują na pseudoklasie
       JQXGT, umo liwiającej utworzenie prostej nakładki tekstowej.

Proste nakładki tekstowe
       Najprostszym sposobem dodania efektu nakładkowego do łącza jest u ycie pseudo-
       klasy JQXGT. Łącza są tworzone w normalny sposób, lecz dodawany jest do nich
       kolor tła:
          CJQXGT]DCEMITQWPF HF_

       Z technicznego punktu widzenia powy sza metoda mo e mieć wpływ na wszystkie
       zakotwiczone obiekty (nie tylko na łącza) i wszędzie wyświetlać efekt JQXGT. Dokład-
       niejsza definicja stylu JQXGT dla łączy jest następująca:
          CNKPMJQXGT]DCEMITQWPF HF_
          CXKUKVGFJQXGT]DCEMITQWPF HF_


  Dodatkowe informacje
  Więcej informacji o grafice nakładkowej CSS można znaleźć na następujących stronach:
     http://www.alistapart.com/stories/rollovers/
     http://www.designmeme.com/zeldman/
166                                          Część III ♦ Optymalizacja DHTML: CSS i JavaScript


      W momencie, gdy u ytkownik wska e łącze, zgodnie z powy szą zasadą kolor tła łą-
      cza zmieni się na ółty. Aby mieć pewność, e zmiana koloru tła nie zmniejszy czy-
      telności wyświetlanego tekstu, nale y równie określić kolor pierwszoplanowy:
         CNKPMJQXGT]DCEMITQWPF HFEQNQT H_
         CXKUKVGFJQXGT]DCEMITQWPF HFEQNQT H _

      Zebranie wszystkich pseudoklas łączy mo e zostać zapisane w następujący sposób:
         CNKPM              ]   EQNQT    H _
PKGQFYKGFCPG æEC PKGDKGUMK
CXKUKVGF           ]   EQNQT     _
QFYKGFCPG æEC UMCT CVP[
CNKPMJQXGT        ]   EQNQT    HF _
YUMCCPG RTG W [VMQYPKMC Î VG
CXKUKVGFJQXGT     ]   EQNQT    HF _
YUMCCPG RTG W [VMQYPKMC Î VG
CNKPMCEVKXG       ]   EQNQT   TGF _
CMV[YPG æEC
CXKUKVGFCEVKXG    ]   EQNQT   TGF _
CMV[YPG æEC
Mo esz uzyskać odwrotny efekt poprzez zamianę koloru pierwszoplanowego z kolo-
      rem tła.
         CNKPM              ]   EQNQT    H DCEMITQWPF   HE _
         CXKUKVGF           ]   EQNQT     _
         CNKPMJQXGT        ]   EQNQT    HE DCEMITQWPF   H _
         CXKUKVGFJQXGT     ]   EQNQT    HE DCEMITQWPF   H _
         CNKPMCEVKXG       ]   EQNQT   TGF _
CMV[YPG    æEC
CXKUKVGFCEVKXG    ]   EQNQT   TGF _


Pionowe menu CSS2
      Na stronie WebReference.com utworzone zostały przykładowe pionowe nakładki
      CSS2, które nie są prawidłowo wyświetlane w Netscape 4 (http://www.webreference.
      com/new/rollovers). W przeglądarce Netscape 4 wyglądają niemal identycznie, lecz
      nie mają efektu nakładkowego. W przeglądarkach obsługujących pseudoklasę JQXGT
      (Opera 3.5, IE4+, Netscape 6+/Mozilla) działają poprawnie.

      Po dokładnych testach znaleźliśmy rozwiązanie, które działało prawidłowo we wszyst-
      kich przeglądarkach biorących udział w testach. U yty został znacznik łącza dla arkuszy
      stylów. Wyniki zostały przedstawione na rysunku 8.2. Listing 8.3 prezentuje kod CSS.

 Łączenie pseudoklas
 Internet Explorer dla Windows może mieć pewne problemy z łańcuchami pseudoklas. Wygląda
 na to, że wersje IE4, IE5 i IE6 mogą ignorować wszystkie, z wyjątkiem ostatniej pseudoklasy
 w łańcuchu. Dzieje się to tak długo, dopóki nie pojawi się identyfikator elementu. Na szczę-
 ście w tym przypadku nie stanowi to problemu, gdyż CNKPMJQXGT i CXKUVGFJQXGT mają
 określony ten sam styl (Internet Explorer efektywnie skraca oba zapisy do CJQXGT). To samo
 dotyczy CEVKXG. Internet Explorer może zachowywać się dziwnie, gdy zechcesz nadać różne
 style połączonym pseudoklasom, albo gdy nadasz styl tylko części z nich. Większość pro-
 jektantów nie ma problemu z takim zachowaniem, gdyż używa prostszego selektora CJQXGT
 albo selektora kontekstowego. Więcej informacji znajdziesz pod adresem http://www.
 meyerweb.com/eric/css/tests/css2/sec05-10.htm.
Rozdział 8. ♦ Zaawansowana optymalizacja kodu CSS                                        167


Rysunek 8.2.
Proste pionowe
nakładki CSS2




Listing 8.3. Pionowe nakładki CSS2 (kod CSS)
           DQF[ ]DCEMITQWPF HHH_

           J ]OCTIKPRCFFKPIGOVGZVCNKIPEGPVGT_

           FKXOGPW ]
                 YKFVJRZ
                 DCEMITQWPF HHH
                 RCFFKPI
                 OCTIKPGO
                 DQTFGTRZ UQNKF 
           _

           FKXOGPW C ]
                 FKURNC[DNQEM
                 OCTIKP
                 YKFVJ 
                 RCFFKPIGO
                 HQPVYGKIJVDQNF
                 DQTFGTVQRRZ UQNKF 
                 EQNQT H
                 VGZVFGEQTCVKQPPQPG
           _

           JVON DQF[ FKXOGPW C ]YKFVJCWVQ_

           FKXOGPW CJQXGT ]DCEMITQWPF EQNQT HHH_


        Aby uzyskać efekt nakładkowy na całej szerokości menu, wykorzystana została sztucz-
        ka zapo yczona z www.tantek.com. Szerokość łącza jest ustawiana na CWVQ dla prze-
        glądarek innych ni IE6:
           JVON DQF[ FKXOGPW C ]YKFVJCWVQ_

        Autorzy, którzy nie chcą korzystać z tej sztuczki, mogą napisać YKFVJCWVQ dla łączy
        blokowych. Internet Explorer nało y nakładkę tylko na łącza. Wszystkie pozostałe
        przeglądarki zgodne z CSS2 będą poprawnie obsługiwać cały pojemnik, a łącze bę-
        dzie aktywne.

        Spacje na listingu 8.4 zostały dodane z myślą o zachowaniu łączy w starszych prze-
        glądarkach. Na zewnątrz łączy znaczniki DT mogą zostawiać pionową lukę. Aby
        uniknąć wyświetlania luk, nale y przenieść je na zewnątrz łączy i nie stosować stylu
        dla przeglądarek niezgodnych z CSS:
           FKXOGPW DT ]FKURNC[PQPG_

More Related Content

What's hot

PHP, MySQL i Apache dla każdego. Wydanie II
PHP, MySQL i Apache dla każdego. Wydanie IIPHP, MySQL i Apache dla każdego. Wydanie II
PHP, MySQL i Apache dla każdego. Wydanie IIWydawnictwo Helion
 
CMS. Jak szybko i łatwo stworzyć stronę WWW i zarządzać nią
CMS. Jak szybko i łatwo stworzyć stronę WWW i zarządzać niąCMS. Jak szybko i łatwo stworzyć stronę WWW i zarządzać nią
CMS. Jak szybko i łatwo stworzyć stronę WWW i zarządzać niąWydawnictwo Helion
 
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie IIPHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie IIWydawnictwo Helion
 
JavaScript dla webmasterów. Zaawansowane programowanie
JavaScript dla webmasterów. Zaawansowane programowanieJavaScript dla webmasterów. Zaawansowane programowanie
JavaScript dla webmasterów. Zaawansowane programowanieWydawnictwo Helion
 
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie III
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie IIIPHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie III
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie IIIWydawnictwo Helion
 
CSS i Ajax. Strony WWW zgodne ze standardami sieciowymi W3C
CSS i Ajax. Strony WWW zgodne ze standardami sieciowymi W3CCSS i Ajax. Strony WWW zgodne ze standardami sieciowymi W3C
CSS i Ajax. Strony WWW zgodne ze standardami sieciowymi W3CWydawnictwo Helion
 
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalistyPHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalistyWydawnictwo Helion
 
Pajączek 5 NxG. Ćwiczenia praktyczne
Pajączek 5 NxG. Ćwiczenia praktycznePajączek 5 NxG. Ćwiczenia praktyczne
Pajączek 5 NxG. Ćwiczenia praktyczneWydawnictwo Helion
 
Joomla! Podręcznik administratora systemu
Joomla! Podręcznik administratora systemuJoomla! Podręcznik administratora systemu
Joomla! Podręcznik administratora systemuWydawnictwo Helion
 
Java. Usługi WWW. Vademecum profesjonalisty
Java. Usługi WWW. Vademecum profesjonalistyJava. Usługi WWW. Vademecum profesjonalisty
Java. Usługi WWW. Vademecum profesjonalistyWydawnictwo Helion
 
JavaScript - przykłady. Biblia
JavaScript - przykłady. BibliaJavaScript - przykłady. Biblia
JavaScript - przykłady. BibliaWydawnictwo Helion
 
Ajax. Niezbędnik projektanta dynamicznych aplikacji
Ajax. Niezbędnik projektanta dynamicznych aplikacjiAjax. Niezbędnik projektanta dynamicznych aplikacji
Ajax. Niezbędnik projektanta dynamicznych aplikacjiWydawnictwo Helion
 
Projektowanie stron WWW. Jak to zrobić?
Projektowanie stron WWW. Jak to zrobić?Projektowanie stron WWW. Jak to zrobić?
Projektowanie stron WWW. Jak to zrobić?Wydawnictwo Helion
 
7 rzeczy, które musisz wiedzieć, zanim założysz własną stronę www
7 rzeczy, które musisz wiedzieć, zanim założysz własną stronę www7 rzeczy, które musisz wiedzieć, zanim założysz własną stronę www
7 rzeczy, które musisz wiedzieć, zanim założysz własną stronę wwwebook
 

What's hot (20)

HTML i XHTML dla każdego
HTML i XHTML dla każdegoHTML i XHTML dla każdego
HTML i XHTML dla każdego
 
Flash i PHP5. Podstawy
Flash i PHP5. PodstawyFlash i PHP5. Podstawy
Flash i PHP5. Podstawy
 
PHP w mgnieniu oka
PHP w mgnieniu okaPHP w mgnieniu oka
PHP w mgnieniu oka
 
JavaScript dla każdego
JavaScript dla każdegoJavaScript dla każdego
JavaScript dla każdego
 
JavaScript. Biblia
JavaScript. BibliaJavaScript. Biblia
JavaScript. Biblia
 
PHP, MySQL i Apache dla każdego. Wydanie II
PHP, MySQL i Apache dla każdego. Wydanie IIPHP, MySQL i Apache dla każdego. Wydanie II
PHP, MySQL i Apache dla każdego. Wydanie II
 
CMS. Jak szybko i łatwo stworzyć stronę WWW i zarządzać nią
CMS. Jak szybko i łatwo stworzyć stronę WWW i zarządzać niąCMS. Jak szybko i łatwo stworzyć stronę WWW i zarządzać nią
CMS. Jak szybko i łatwo stworzyć stronę WWW i zarządzać nią
 
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie IIPHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
 
JavaScript. Projekty
JavaScript. ProjektyJavaScript. Projekty
JavaScript. Projekty
 
JavaScript dla webmasterów. Zaawansowane programowanie
JavaScript dla webmasterów. Zaawansowane programowanieJavaScript dla webmasterów. Zaawansowane programowanie
JavaScript dla webmasterów. Zaawansowane programowanie
 
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie III
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie IIIPHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie III
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie III
 
CSS i Ajax. Strony WWW zgodne ze standardami sieciowymi W3C
CSS i Ajax. Strony WWW zgodne ze standardami sieciowymi W3CCSS i Ajax. Strony WWW zgodne ze standardami sieciowymi W3C
CSS i Ajax. Strony WWW zgodne ze standardami sieciowymi W3C
 
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalistyPHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty
 
Pajączek 5 NxG. Ćwiczenia praktyczne
Pajączek 5 NxG. Ćwiczenia praktycznePajączek 5 NxG. Ćwiczenia praktyczne
Pajączek 5 NxG. Ćwiczenia praktyczne
 
Joomla! Podręcznik administratora systemu
Joomla! Podręcznik administratora systemuJoomla! Podręcznik administratora systemu
Joomla! Podręcznik administratora systemu
 
Java. Usługi WWW. Vademecum profesjonalisty
Java. Usługi WWW. Vademecum profesjonalistyJava. Usługi WWW. Vademecum profesjonalisty
Java. Usługi WWW. Vademecum profesjonalisty
 
JavaScript - przykłady. Biblia
JavaScript - przykłady. BibliaJavaScript - przykłady. Biblia
JavaScript - przykłady. Biblia
 
Ajax. Niezbędnik projektanta dynamicznych aplikacji
Ajax. Niezbędnik projektanta dynamicznych aplikacjiAjax. Niezbędnik projektanta dynamicznych aplikacji
Ajax. Niezbędnik projektanta dynamicznych aplikacji
 
Projektowanie stron WWW. Jak to zrobić?
Projektowanie stron WWW. Jak to zrobić?Projektowanie stron WWW. Jak to zrobić?
Projektowanie stron WWW. Jak to zrobić?
 
7 rzeczy, które musisz wiedzieć, zanim założysz własną stronę www
7 rzeczy, które musisz wiedzieć, zanim założysz własną stronę www7 rzeczy, które musisz wiedzieć, zanim założysz własną stronę www
7 rzeczy, które musisz wiedzieć, zanim założysz własną stronę www
 

Viewers also liked

Viewers also liked (17)

Raport q4 2014_pl
Raport q4 2014_plRaport q4 2014_pl
Raport q4 2014_pl
 
Managementul deciziei-in-afaceri
Managementul deciziei-in-afaceriManagementul deciziei-in-afaceri
Managementul deciziei-in-afaceri
 
Scalone dokumenty (37)
Scalone dokumenty (37)Scalone dokumenty (37)
Scalone dokumenty (37)
 
Biznes Plan Tərtibatı
Biznes Plan TərtibatıBiznes Plan Tərtibatı
Biznes Plan Tərtibatı
 
1
11
1
 
Heyat_Terzi _Report (Fevral 2016)
Heyat_Terzi _Report (Fevral 2016)Heyat_Terzi _Report (Fevral 2016)
Heyat_Terzi _Report (Fevral 2016)
 
100 sposobów na Visual Studio
100 sposobów na Visual Studio100 sposobów na Visual Studio
100 sposobów na Visual Studio
 
Budowa jednostki centralnej kaputera
Budowa jednostki centralnej kaputeraBudowa jednostki centralnej kaputera
Budowa jednostki centralnej kaputera
 
Dietetyk 321[11] z1.02_u
Dietetyk 321[11] z1.02_uDietetyk 321[11] z1.02_u
Dietetyk 321[11] z1.02_u
 
Məhkəmələrdə kargüzarlığın aparılmasına dair təlimat
Məhkəmələrdə kargüzarlığın aparılmasına dair təlimatMəhkəmələrdə kargüzarlığın aparılmasına dair təlimat
Məhkəmələrdə kargüzarlığın aparılmasına dair təlimat
 
Zülal möcüzəsi. azərbaycan
Zülal möcüzəsi. azərbaycanZülal möcüzəsi. azərbaycan
Zülal möcüzəsi. azərbaycan
 
Nik p-15-021-pakiet-klimatyczny
Nik p-15-021-pakiet-klimatycznyNik p-15-021-pakiet-klimatyczny
Nik p-15-021-pakiet-klimatyczny
 
Ajax. Zaawansowane programowanie
Ajax. Zaawansowane programowanieAjax. Zaawansowane programowanie
Ajax. Zaawansowane programowanie
 
Rodzaje i zadania sieci kanalizacyjnej
Rodzaje i zadania sieci kanalizacyjnejRodzaje i zadania sieci kanalizacyjnej
Rodzaje i zadania sieci kanalizacyjnej
 
Jakość i metody jej pomiaru
Jakość i metody jej pomiaruJakość i metody jej pomiaru
Jakość i metody jej pomiaru
 
Ergonomia książka
Ergonomia   książkaErgonomia   książka
Ergonomia książka
 
M. Łobocki - ABC wychowania
M. Łobocki - ABC wychowaniaM. Łobocki - ABC wychowania
M. Łobocki - ABC wychowania
 

Similar to Zwiększ szybkość! Optymalizacja serwisów internetowych

Tworzenie stron WWW w praktyce
Tworzenie stron WWW w praktyceTworzenie stron WWW w praktyce
Tworzenie stron WWW w praktyceWydawnictwo Helion
 
Kurs tworzenia stron internetowych
Kurs tworzenia stron internetowychKurs tworzenia stron internetowych
Kurs tworzenia stron internetowychWydawnictwo Helion
 
Tworzenie stron WWW. Nieoficjalny podręcznik
Tworzenie stron WWW. Nieoficjalny podręcznikTworzenie stron WWW. Nieoficjalny podręcznik
Tworzenie stron WWW. Nieoficjalny podręcznikWydawnictwo Helion
 
Java w komercyjnych usługach sieciowych. Księga eksperta
Java w komercyjnych usługach sieciowych. Księga ekspertaJava w komercyjnych usługach sieciowych. Księga eksperta
Java w komercyjnych usługach sieciowych. Księga ekspertaWydawnictwo Helion
 
Projektowanie serwisów WWW. Standardy sieciowe. Wydanie II
Projektowanie serwisów WWW. Standardy sieciowe. Wydanie IIProjektowanie serwisów WWW. Standardy sieciowe. Wydanie II
Projektowanie serwisów WWW. Standardy sieciowe. Wydanie IIWydawnictwo Helion
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningWydawnictwo Helion
 
FrontPage 2003 PL. Nie tylko dla webmasterów
FrontPage 2003 PL. Nie tylko dla webmasterówFrontPage 2003 PL. Nie tylko dla webmasterów
FrontPage 2003 PL. Nie tylko dla webmasterówWydawnictwo Helion
 
HTML, XHTML i CSS. Nowoczesne tworzenie stron WWW
HTML, XHTML i CSS. Nowoczesne tworzenie stron WWWHTML, XHTML i CSS. Nowoczesne tworzenie stron WWW
HTML, XHTML i CSS. Nowoczesne tworzenie stron WWWWydawnictwo Helion
 
XHTML i CSS. Dostępne witryny internetowe
XHTML i CSS. Dostępne witryny internetoweXHTML i CSS. Dostępne witryny internetowe
XHTML i CSS. Dostępne witryny internetoweWydawnictwo Helion
 
Po prostu JavaScript i Ajax. Wydanie VI
Po prostu JavaScript i Ajax. Wydanie VIPo prostu JavaScript i Ajax. Wydanie VI
Po prostu JavaScript i Ajax. Wydanie VIWydawnictwo Helion
 
Po prostu własny serwer internetowy
Po prostu własny serwer internetowyPo prostu własny serwer internetowy
Po prostu własny serwer internetowyWydawnictwo Helion
 
Tworzenie stron WWW. Ilustrowany przewodnik
Tworzenie stron WWW. Ilustrowany przewodnikTworzenie stron WWW. Ilustrowany przewodnik
Tworzenie stron WWW. Ilustrowany przewodnikWydawnictwo Helion
 
Tworzenie stron WWW. Kurs. Wydanie II
Tworzenie stron WWW. Kurs. Wydanie IITworzenie stron WWW. Kurs. Wydanie II
Tworzenie stron WWW. Kurs. Wydanie IIWydawnictwo Helion
 

Similar to Zwiększ szybkość! Optymalizacja serwisów internetowych (18)

Tworzenie stron WWW w praktyce
Tworzenie stron WWW w praktyceTworzenie stron WWW w praktyce
Tworzenie stron WWW w praktyce
 
Kurs tworzenia stron internetowych
Kurs tworzenia stron internetowychKurs tworzenia stron internetowych
Kurs tworzenia stron internetowych
 
JavaScript i DHTML. Receptury
JavaScript i DHTML. RecepturyJavaScript i DHTML. Receptury
JavaScript i DHTML. Receptury
 
Tworzenie stron WWW. Kurs
Tworzenie stron WWW. KursTworzenie stron WWW. Kurs
Tworzenie stron WWW. Kurs
 
Tworzenie stron WWW. Nieoficjalny podręcznik
Tworzenie stron WWW. Nieoficjalny podręcznikTworzenie stron WWW. Nieoficjalny podręcznik
Tworzenie stron WWW. Nieoficjalny podręcznik
 
Java w komercyjnych usługach sieciowych. Księga eksperta
Java w komercyjnych usługach sieciowych. Księga ekspertaJava w komercyjnych usługach sieciowych. Księga eksperta
Java w komercyjnych usługach sieciowych. Księga eksperta
 
Po prostu HTML 4. Wydanie III
Po prostu HTML 4. Wydanie IIIPo prostu HTML 4. Wydanie III
Po prostu HTML 4. Wydanie III
 
Projektowanie serwisów WWW. Standardy sieciowe. Wydanie II
Projektowanie serwisów WWW. Standardy sieciowe. Wydanie IIProjektowanie serwisów WWW. Standardy sieciowe. Wydanie II
Projektowanie serwisów WWW. Standardy sieciowe. Wydanie II
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
 
FrontPage 2003 PL. Nie tylko dla webmasterów
FrontPage 2003 PL. Nie tylko dla webmasterówFrontPage 2003 PL. Nie tylko dla webmasterów
FrontPage 2003 PL. Nie tylko dla webmasterów
 
HTML, XHTML i CSS. Nowoczesne tworzenie stron WWW
HTML, XHTML i CSS. Nowoczesne tworzenie stron WWWHTML, XHTML i CSS. Nowoczesne tworzenie stron WWW
HTML, XHTML i CSS. Nowoczesne tworzenie stron WWW
 
XHTML i CSS. Dostępne witryny internetowe
XHTML i CSS. Dostępne witryny internetoweXHTML i CSS. Dostępne witryny internetowe
XHTML i CSS. Dostępne witryny internetowe
 
AJAX w mgnieniu oka
AJAX w mgnieniu okaAJAX w mgnieniu oka
AJAX w mgnieniu oka
 
Po prostu JavaScript i Ajax. Wydanie VI
Po prostu JavaScript i Ajax. Wydanie VIPo prostu JavaScript i Ajax. Wydanie VI
Po prostu JavaScript i Ajax. Wydanie VI
 
Dreamweaver MX
Dreamweaver MXDreamweaver MX
Dreamweaver MX
 
Po prostu własny serwer internetowy
Po prostu własny serwer internetowyPo prostu własny serwer internetowy
Po prostu własny serwer internetowy
 
Tworzenie stron WWW. Ilustrowany przewodnik
Tworzenie stron WWW. Ilustrowany przewodnikTworzenie stron WWW. Ilustrowany przewodnik
Tworzenie stron WWW. Ilustrowany przewodnik
 
Tworzenie stron WWW. Kurs. Wydanie II
Tworzenie stron WWW. Kurs. Wydanie IITworzenie stron WWW. Kurs. Wydanie II
Tworzenie stron WWW. Kurs. Wydanie II
 

More from Wydawnictwo Helion

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyWydawnictwo Helion
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikWydawnictwo Helion
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczneWydawnictwo Helion
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieWydawnictwo Helion
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsWydawnictwo Helion
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IIWydawnictwo Helion
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuWydawnictwo Helion
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIWydawnictwo Helion
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykWydawnictwo Helion
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaWydawnictwo Helion
 
Serwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieSerwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieWydawnictwo Helion
 

More from Wydawnictwo Helion (20)

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. Projekty
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnik
 
Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
 
Word 2007 PL. Seria praktyk
Word 2007 PL. Seria praktykWord 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
 
Serwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieSerwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanie
 

Zwiększ szybkość! Optymalizacja serwisów internetowych

  • 1. IDZ DO PRZYK£ADOWY ROZDZIA£ Zwiêksz szybko æ! SPIS TRE CI Optymalizacja serwisów KATALOG KSI¥¯EK internetowych Autor: Andrew B. King KATALOG ONLINE T³umaczenie: Marek Suczyk (rozdz. 1 – 11), Jacek Smycz (rozdz. 12 – 19) ZAMÓW DRUKOWANY KATALOG ISBN: 83-7361-134-7 Tytu³ orygina³u: Speed Up Your Site – Web Site Optimization Format: B5, stron: 416 TWÓJ KOSZYK Przyk³ady na ftp: 80 kB DODAJ DO KOSZYKA Cierpliwo æ u¿ytkownika jest jak bomba zegarowa. Ka¿de wej cie na Twoj¹ stronê WWW uruchamia odliczanie. Masz zaledwie kilka sekund, by dostarczyæ odwiedzaj¹cemu tre ci, których poszukuje. Je li nie zd¹¿ysz, mo¿esz siê po¿egnaæ CENNIK I INFORMACJE ze swoim go ciem (i z ewentualnymi zyskami, które osi¹gn¹³by dziêki jego wizycie). Nie mo¿esz liczyæ na szybkie ³¹cza. W dalszym ci¹gu wielu go ci Twojej witryny u¿ywa ZAMÓW INFORMACJE sieci telefonicznej i zwyk³ych modemów. Albo zd¹¿ysz, nim skoñczy siê ich cierpliwo æ, O NOWO CIACH albo przegrasz. Dlatego powiniene siêgn¹æ po tê ksi¹¿k¹. Dowiesz siê z niej, jak skróciæ o po³owê czas wczytywania strony. Zmniejszysz rozmiary plików HTML, ZAMÓW CENNIK XHTML, CSS, ilustracji i skryptów JavaScript oszczêdzaj¹c dodatkowo na kosztach ³¹czy. Przyk³ady wziête z praktyki przedstawiaj¹ techniki przynosz¹ce rzeczywiste rezultaty. Po przeczytaniu tej ksi¹¿ki bêdziesz ju¿ wiedzia³, jak tworzyæ strony CZYTELNIA pojawiaj¹ce siê na ekranie w mgnieniu oka. Nauczysz siê: FRAGMENTY KSI¥¯EK ONLINE • Przyspieszaæ ³adowanie siê stron WWW • Anga¿owaæ u¿ytkowników w proces przegl¹dania strony • Analizowaæ efekty psychologiczne wywo³ywane wolnym ³adowaniem siê stron • Zmniejszaæ rozmiary i stopieñ skomplikowania plików HTML • Stosowaæ skróty w CSS • Przyspieszaæ i odchudzaæ JavaScript • Zmniejszaæ rozmiary plików graficznych i multimedialnych • Oszczêdzaæ przepustowo æ ³¹czy (a¿ do 60%!) stosuj¹c kompresjê HTTP Andrew B. King (Andy) jest za³o¿ycielem WebReference.com oraz JavaScript.com (obie witryny zosta³y nagrodzone w klasyfikacji stron przeznaczonych dla programistów). WebReference.com – utworzona w 1995 roku, a nastêpnie w 1997 r. Wydawnictwo Helion zaadoptowana przez Macklermedia (obecnie Jupitermedia) – uros³a do rangi jednej ul. Chopina 6 z najpopularniejszych stron internetowych dla programistów. 44-100 Gliwice tel. (32)230-98-63 Kto wszed³ na Twoj¹ stronê? Nie ka¿ mu czekaæ! e-mail: helion@helion.pl • Praktyczne sposoby przyspieszania stron WWW • Psychologia cierpliwo ci – co powodujê, ¿e u¿ytkownicy uciekaj¹ ze strony • Oszczêdzanie czasu i oszczêdzanie przepustowo ci: kompresja HTTP • Zmniejszanie rozmiarów plików graficznych i multimedialnych.
  • 2. Spis treści O Autorze .......................................................................................... 9 Przedmowa...................................................................................... 13 Wstęp ............................................................................................. 15 Część I Psychologia wydajności..................................................21 Rozdział 1. Czas odpowiedzi: osiem +/– dwie sekundy ....................................... 23 Szybkość — główny składnik wpływający na wygodę u ywania systemu......................25 Krótka historia o wydajności sieci ....................................................................................27 Czas reakcji a zadowolenie u ytkownika..........................................................................29 Wskaźnik rezygnacji i granica uwagi................................................................................34 Zdolność dostosowania .....................................................................................................37 Podsumowanie ..................................................................................................................40 Rozdział 2. Przepływ w projektowaniu stron internetowych ................................. 43 Mihaly Csikszentmihalyi i przepływ.................................................................................44 Co powoduje uczucie przepływu w sieci internetowej? ...................................................46 Uczucie przepływu i projektowanie stron internetowych .................................................50 Podsumowanie ..................................................................................................................52 Część II Optymalizacja kodu HTML i XHTML.................................53 Rozdział 3. Optymalizacja HTML ........................................................................ 55 Co to jest optymalizacja kodu HTML? .............................................................................56 Zło oność kodu a przepustowość łącza ............................................................................56 Jak nowoczesne przeglądarki współpracują z HTML?.....................................................59 W jaki sposób optymalizować HTML? ............................................................................61 Podsumowanie ..................................................................................................................76 Rozdział 4. Zaawansowane metody optymalizacji ............................................... 77 Wskazówki do projektowania tabel ..................................................................................77 Optymalizacja formularzy.................................................................................................92 Skróty URL .......................................................................................................................98 HTML i kompresja..........................................................................................................100 Podsumowanie ................................................................................................................101
  • 3. 6 Zwiększ szybkość! Optymalizacja serwisów internetowych Rozdział 5. Ekstremalny XHTML ...................................................................... 103 Korzyści płynące z XHTML ...........................................................................................104 XHTML kontra HTML ...................................................................................................106 Anatomia dokumentu XHTML.......................................................................................106 Zasady składni XML.......................................................................................................110 Konwersja z HTML do XHTML ....................................................................................116 Optymalizacja kodu XHTML .........................................................................................117 Podsumowanie ................................................................................................................120 Rozdział 6. Studium przypadku: PopularMechanics.com.................................... 123 Automatyczna optymalizacja ..........................................................................................126 Optymalizacja ręczna ......................................................................................................127 Podsumowanie ................................................................................................................132 Część III Optymalizacja DHTML: CSS i JavaScript ........................135 Rozdział 7. Optymalizacja CSS......................................................................... 137 Mądre stosowanie stylów ................................................................................................138 Usuwanie wolnych przestrzeni........................................................................................139 Wycinanie komentarzy....................................................................................................139 Minimalizacja ądań HTTP ............................................................................................140 U ywanie prostych selektorów i podstawień ..................................................................140 Grupowanie .....................................................................................................................143 Dziedziczenie ..................................................................................................................145 Warstwy stylów a szybkość ............................................................................................146 Skracanie właściwości.....................................................................................................146 Optymalizacja kolorów CSS ...........................................................................................154 Jednostki długości: wszystko jest względne ...................................................................156 Podsumowanie ................................................................................................................158 Rozdział 8. Zaawansowana optymalizacja kodu CSS......................................... 161 Zasady optymalizacji arkuszy CSS .................................................................................161 Elementy zastępcze .........................................................................................................164 Tabele i CSS....................................................................................................................176 Kontrolowanie układu za pomocą arkuszy CSS .............................................................177 Podsumowanie ................................................................................................................180 Rozdział 9. Optymalizacja kodu JavaScript pod kątem szybkości ładowania....... 183 Kiedy zdecydować się na optymalizację?.......................................................................184 Zrzucenie zbędnych kalorii .............................................................................................184 Mądre stosowanie JavaScriptu ........................................................................................187 Minimalizacja ądań HTTP ............................................................................................188 Skróty i odwzorowanie....................................................................................................191 Zagęszczanie i zaciemnianie ...........................................................................................192 JavaScript i kompresja ....................................................................................................196 Podsumowanie ................................................................................................................197 Rozdział 10. Optymalizacja kodu JavaScript pod kątem szybkości działania......... 199 Poziomy projektowania...................................................................................................200 Sprawdzanie zmian .........................................................................................................201 Algorytmy i struktury danych .........................................................................................201 Upraszczanie kodu ..........................................................................................................203 Minimalizacja współdziałania modelu DOM z wejściem-wyjściem..............................203 Optymalizacja lokalna.....................................................................................................208 Dostrajanie wyra eń........................................................................................................220 Podsumowanie ................................................................................................................222
  • 4. Spis treści 7 Rozdział 11. Studium przypadku: DHTML.com .................................................... 225 Część IV Optymalizacja grafiki i multimediów ..............................229 Rozdział 12. Optymalizacja grafiki stron internetowych....................................... 231 Tworzenie i przygotowanie obrazków ............................................................................232 Optymalizacja plików JPEG ...........................................................................................233 Optymalizacja plików GIF ..............................................................................................243 Optymalizacja PNG.........................................................................................................250 Czas pobierania: liczba pakietów a rozmiar strony.........................................................255 Na horyzoncie: JPEG2000 i grafika wektorowa .............................................................256 Podsumowanie ................................................................................................................257 Rozdział 13. Minimalizacja multimediów ............................................................ 259 Podstawy multimediów ...................................................................................................260 Kompresja i optymalizacja audio....................................................................................271 Optymalizacja wideo.......................................................................................................277 Optymalizacja PDF .........................................................................................................289 Podsumowanie ................................................................................................................293 Rozdział 14. Studium przypadku: Apple.com....................................................... 295 Output (wyjście)..............................................................................................................296 Tracks (ście ki) ...............................................................................................................296 Image (obraz) ..................................................................................................................296 Adjust (dostosowanie).....................................................................................................297 Encode (kodowanie)........................................................................................................297 Audio...............................................................................................................................298 Ostateczne wyniki ...........................................................................................................298 Część V Optymalizacja mechanizmów wyszukiwania ...................299 Rozdział 15. Optymalizacja słów kluczowych ...................................................... 301 Ogólny obraz ...................................................................................................................301 Optymalizacja słów kluczowych — porady....................................................................304 Strategie projektowe przyjazne dla pająków...................................................................318 Charakterystyka strony o wysokiej pozycji w rankingach..............................................319 Podsumowanie ................................................................................................................320 Rozdział 16. Studia przypadków: PopularMechanics.com i iProspect.com ........... 323 PopularMechanics.com ...................................................................................................323 iProspect.com ..................................................................................................................328 Część VI Zaawansowane techniki optymalizacji .........................333 Rozdział 17. Techniki działające po stronie serwera ........................................... 335 Server-Side Includes .......................................................................................................336 Zalety SSI: szybkość i du a zgodność ............................................................................337 Dostrajanie mod_include.................................................................................................338 Wykrywanie przeglądarek po stronie serwera ................................................................340 Skracanie adresów URL za pomocą mod_rewrite ..........................................................351 Optymalizacja formularzy i CGI.....................................................................................358 Nigdy więcej www..........................................................................................................362 Podsumowanie ................................................................................................................363
  • 5. 8 Zwiększ szybkość! Optymalizacja serwisów internetowych Rozdział 18. Kompresowanie stron internetowych .............................................. 365 Algorytmy kompresji tekstu............................................................................................366 Kompresja zawartości .....................................................................................................367 Kompresja zawartości: strona klienta .............................................................................369 Kompresja zawartości: strona serwera............................................................................373 Kompresja zawartości oparta na proxy ...........................................................................389 Narzędzia oceniające.......................................................................................................390 Na horyzoncie .................................................................................................................391 Podsumowanie ................................................................................................................392 Rozdział 19. Studia przypadków: Yahoo.com i WebReference.com ...................... 395 Skracanie Yahoo.com......................................................................................................395 Skracanie WebReference.com ........................................................................................397 Dodatki ...................................................................................... 399 Skorowidz...................................................................................... 401
  • 6. Rozdział 8. Zaawansowana optymalizacja kodu CSS Oprócz omówionych korzyści płynących z buforowania plików CSS i zmniejszenia obcią enia łącza, CSS pozwala na zastąpienie elementów strony, które pochłaniają znaczne zasoby i wydłu ają czas ładowania (np. grafika nakładkowa), na „lekkie” elementy, nieobcią ające strony. W tym rozdziale zamieszczone zostały informacje omawiające cztery główne sposoby wykorzystania arkuszy CSS do przyspieszenia stron internetowych. Zagadnienia te dotyczą: mniejszych rozmiarów arkuszy stylów, elementów zastępczych, szybszych tabel, kontroli układu i rozmieszczenia elementów. Zasady optymalizacji arkuszy CSS Na podstawie metod, których zdą yłeś się nauczyć w rozdziale 7., będziesz mógł zo- baczyć, w jaki sposób przeprowadzana jest optymalizacja starego arkusza stylów strony WebReference.com (listing 8.1). Listing 8.1. Oryginalny arkusz stylów WebReference.com UV[NG V[RG VGZVEUU HQTOVD]FKURNC[KPNKPG_ J]VGZVFGEQTCVKQPPQPGHQPVUKGRVHQPVHCOKN[IGPGXCCTKCNUCPUUGTKH_ E]HQPVUKG HQPVHCOKN[CTKCNIGPGXCUCPUUGTKH_ F]HQPVUKG HQPVHCOKN[CTKCNIGPGXCUCPUUGTKH_ FV]HQPVYGKIJVDQNFHQPVUKG OCTIKPVQRGO_
  • 7. 162 Część III ♦ Optymalizacja DHTML: CSS i JavaScript Y]HQPVUKG HQPVHCOKN[XGTFCPCUCPUUGTKHEQNQT _ 05N[T]YKFVJRQUKVKQPCDUQNWVGXKUKDKNKV[JKFFGP_ CJQXGT]DCEMITQWPFEQNQT HHFF_ UV[NG W powy szym arkuszu mo na zauwa yć wiele technik omawianych we wcześniej- szych rozdziałach ksią ki. U ywane są skróty, jednoznakowe nazwy klas (jak J i E), proste selektory typów (FV), pseudoklasa JQXGT. Arkusz nie jest połączony ze stroną, lecz jest w niej osadzony. Zawsze jednak mo na coś zrobić lepiej. Wykorzystajmy skrócone właściwości HQPV i DCEMITQWPF, jak równie skorzystajmy ze skróconego za- pisu szesnastkowego: UV[NG V[RG VGZVEUU HQTOVD]FKURNC[KPNKPG_ J]VGZVFGEQTCVKQPPQPGHQPVRV IGPGXCCTKCNUCPUUGTKH_ E]HQPV CTKCNIGPGXCUCPUUGTKH_ F]HQPV CTKCNIGPGXCUCPUUGTKH_ FV]HQPVDQNF UGTKHOCTIKPVQRGO_ Y]HQPV XGTFCPCUCPUUGTKHEQNQT _ 05N[T]YKFVJRQUKVKQPCDUQNWVGXKUKDKNKV[JKFFGP_ CJQXGT]DCEMITQWPF HF_ UV[NG Dzięki wykorzystaniu skróconych właściwości oszczędzamy 99 bajtów (ilość znaków zmniejsza się z 449 do 350). Poniewa skrócona właściwość HQPV wymaga wartości HQPVHCOKN[, mo e pojawić się problem z listą definicji, je eli u ytkownik wybierze czcionkę UCPUUGTKH. Elementy FV będą wówczas pisane czcionką szeryfową, a ele- menty FF bezszeryfową. Aby temu zaradzić, mo na ustawić czcionkę dla elementu DQF[ na UGTKH: UV[NG V[RG VGZVEUU DQF[]HQPVGO UGTKH_ HQTOVD]FKURNC[KPNKPG_ J]VGZVFGEQTCVKQPPQPGHQPVRV IGPGXCCTKCNUCPUUGTKH_ E]HQPV CTKCNIGPGXCUCPUUGTKH_ F]HQPV CTKCNIGPGXCUCPUUGTKH_ FV]HQPVDQNF UGTKHOCTIKPVQRGO_ Y]HQPV XGTFCPCUCPUUGTKHEQNQT _ 05N[T]YKFVJRQUKVKQPCDUQNWVGXKUKDKNKV[JKFFGP_ CJQXGT]DCEMITQWPF HF_ UV[NG Lecz jak się okazuje, dłu szy zapis właściwości FV i pozostawienie HQPVHCOKN[ jest w rzeczywistości krótsze o 4 znaki (360 zamiast 364 znaków): UV[NG V[RG VGZVEUU HQTOVD]FKURNC[KPNKPG_ J]VGZVFGEQTCVKQPPQPGHQPVRV IGPGXCCTKCNUCPUUGTKH_ E]HQPV CTKCNIGPGXCUCPUUGTKH_
  • 8. Rozdział 8. ♦ Zaawansowana optymalizacja kodu CSS 163 F]HQPV CTKCNIGPGXCUCPUUGTKH_ FV]HQPVYGKIJVDQNFHQPVUKG OCTIKPVQRGO_ Y]HQPV XGTFCPCUCPUUGTKHEQNQT _ 05N[T]YKFVJRQUKVKQPCDUQNWVGXKUKDKNKV[JKFFGP_ CJQXGT]DCEMITQWPF HF_ UV[NG W tym miejscu pierwotny arkusz stylów został zmniejszony o 20% (z 449 znaków do 360). W dalszej części optymalizacji mo na pogrupować rodziny czcionki na trzy style i osobno określić ich rozmiary: UV[NG V[RG VGZVEUU HQTOVD]FKURNC[KPNKPG_ JEF]HQPVHCOKN[CTKCNIGPGXCUCPUUGTKH_ J]VGZVFGEQTCVKQPPQPGHQPVUKGRV_ E]HQPVUKG _ F]HQPVUKG _ FV]HQPVYGKIJVDQNFHQPVUKG OCTIKPVQRGO_ Y]HQPV XGTFCPCUCPUUGTKHEQNQT _ 05N[T]YKFVJRQUKVKQPCDUQNWVGXKUKDKNKV[JKFFGP_ CJQXGT]DCEMITQWPF HF_ UV[NG Ilość znaków zmniejszyła się do 348. Mo na uzyskać jeszcze lepszy rezultat u ywa- jąc ogólnych rodzin czcionki, mniejszych rozmiarów oraz skróconej właściwości HQPV (listing 8.2). Listing 8.2. Zoptymalizowany arkusz stylów WebReference.com UV[NG V[RG VGZVEUU HQTOVD]FKURNC[KPNKPG_ JEF]HQPV UCPUUGTKH_ J]VGZVFGEQTCVKQPPQPG_ FV]HQPVYGKIJVDQNFHQPVUKG OCTIKPVQRGO_ Y]HQPV UCPUUGTKHEQNQT _ 05N[T]YKFVJRQUKVKQPCDUQNWVGXKUKDKNKV[JKFFGP_ CJQXGT]DCEMITQWPF HF_ UV[NG Wielkość kodu została zmniejszona do 276 bajtów, czyli o 38 procent względem pierwotnego rozmiaru. Czy zwróciłeś uwagę na połączenie metody grupowania ze skróconą właściwością HQPV? Zauwa , e powy szy kod mo na jeszcze bardziej zmniejszyć usuwając z niego wszystkie znaki końcowe i niepotrzebne spacje (pamię- taj, e linia nie powinna być dłu sza ni 255 znaków). Dzięki kaskadowaniu, dziedzi- czeniu, grupowaniu i skracaniu właściwości mo na zmniejszyć rozmiar arkusza CSS o ponad 50 procent.
  • 9. 164 Część III ♦ Optymalizacja DHTML: CSS i JavaScript Elementy zastępcze Coraz więcej przeglądarek obsługuje pseudoklasę JQXGT arkusza CSS2. Dzięki temu mo na uzyskać efekty nakładkowe, które pobierają znacznie mniej zasobów ni Java- Script. Mo na wyró nić dwa podstawowe sposoby optymalizacji elementów nakład- kowych: za pomocą grafiki nakładkowej CSS2 — przeźroczyste GIF-y oraz kolorowe tła mogą o połowę zmniejszyć ilość potrzebnych obrazków, za pomocą samych nakładek CSS2 — obrazki zostają całkowicie zastąpione tekstem. Bez względu na to, z którego sposobu skorzystasz, zawsze rezultatem będzie zmniej- szenie ilości ądań HTTP i wielkości kodu. Grafika nakładkowa CSS2 Grafika nakładkowa CSS2 polega na u ywaniu przeźroczystych GIF-ów oraz pseu- doklasy JQXGT do zmiany tła za obrazkiem nakładkowym. Efekt jest taki sam, jak pod- czas korzystania z dodatkowych obrazków i kodu JavaScript. Stuart Robertson z Desi- gnmeme.com przedstawił sposób ulepszenia paska narzędzi na stronie Zeldman.com (rysunek 8.1). Rysunek 8.1. Grafika nakładkowa CSS2 (http:// designmeme.com/ zeldman) Wszystko, co jest potrzebne, to zaledwie kilka obrazków z przeźroczystymi wycin- kami oraz kilka wierszy kodu CSS: GNFOCP C ] FKURNC[DNQEM YKFVJRZ DCEMITQWPFEQNQT _ GNFOCP CJQXGT ]DCEMITQWPFEQNQT %%((_
  • 10. Rozdział 8. ♦ Zaawansowana optymalizacja kodu CSS 165 Uproszczony kod HTML wygląda następująco: FKX ENCUU GNFOCP VCDNG DQTFGT EGNNRCFFKPI EGNNURCEKPI VT VF DIEQNQT C JTGHJVVRYYYGNFOCPEQOINCOQTQWU KOI PCOG INCO UTE INCOIKH YKFVJ JGKIJV DQTFGT CNV /; ).#/14175 .+(' 6TCIKEQOKE HQFFGT HTQO VJG NKHG QH GNFOCP C VF Ta pomysłowa metoda zmienia kolor tła łącza za obrazkiem nakładkowym. Poniewa tekst na obrazku jest przeźroczysty, przebija przez niego kolor tła. Oczywiście po- wy szy kod mo na lepiej zoptymalizować u ywając skróconej właściwości DCEMITQ WPF i krótkich szesnastkowych zapisów kolorów. Teraz jednak chodzi o przedstawie- nie samego pomysłu. Opisana metoda znakomicie działa w starszych przeglądarkach i nie wymaga korzystania z kodu JavaScript. Proste nakładki CSS Mo esz zrobić kolejny krok i wymienić wszystkie obrazki na CSS2. Proste nakładki CSS2 u ywają stylów zarówno dla pierwszoplanowych elementów menu, jak i dla samego tła menu. Autorzy stron znaleźli pomysłowy sposób na przekształcenie łączy w nakładki. Niektórzy tworzą przyciski trójwymiarowe, inni przekształcają łącza w elementy blokowe, a jeszcze inni zmieniają listy w wewnętrzne elementy wierszy. Bez względu na to, który sposób wybierzesz, wszystkie metody bazują na pseudoklasie JQXGT, umo liwiającej utworzenie prostej nakładki tekstowej. Proste nakładki tekstowe Najprostszym sposobem dodania efektu nakładkowego do łącza jest u ycie pseudo- klasy JQXGT. Łącza są tworzone w normalny sposób, lecz dodawany jest do nich kolor tła: CJQXGT]DCEMITQWPF HF_ Z technicznego punktu widzenia powy sza metoda mo e mieć wpływ na wszystkie zakotwiczone obiekty (nie tylko na łącza) i wszędzie wyświetlać efekt JQXGT. Dokład- niejsza definicja stylu JQXGT dla łączy jest następująca: CNKPMJQXGT]DCEMITQWPF HF_ CXKUKVGFJQXGT]DCEMITQWPF HF_ Dodatkowe informacje Więcej informacji o grafice nakładkowej CSS można znaleźć na następujących stronach: http://www.alistapart.com/stories/rollovers/ http://www.designmeme.com/zeldman/
  • 11. 166 Część III ♦ Optymalizacja DHTML: CSS i JavaScript W momencie, gdy u ytkownik wska e łącze, zgodnie z powy szą zasadą kolor tła łą- cza zmieni się na ółty. Aby mieć pewność, e zmiana koloru tła nie zmniejszy czy- telności wyświetlanego tekstu, nale y równie określić kolor pierwszoplanowy: CNKPMJQXGT]DCEMITQWPF HFEQNQT H_ CXKUKVGFJQXGT]DCEMITQWPF HFEQNQT H _ Zebranie wszystkich pseudoklas łączy mo e zostać zapisane w następujący sposób: CNKPM ] EQNQT H _
  • 13. CXKUKVGF ] EQNQT _
  • 15. CNKPMJQXGT ] EQNQT HF _
  • 16. YUMCCPG RTG W [VMQYPKMC Î VG
  • 17. CXKUKVGFJQXGT ] EQNQT HF _
  • 18. YUMCCPG RTG W [VMQYPKMC Î VG
  • 19. CNKPMCEVKXG ] EQNQT TGF _
  • 21. CXKUKVGFCEVKXG ] EQNQT TGF _
  • 23. Mo esz uzyskać odwrotny efekt poprzez zamianę koloru pierwszoplanowego z kolo- rem tła. CNKPM ] EQNQT H DCEMITQWPF HE _ CXKUKVGF ] EQNQT _ CNKPMJQXGT ] EQNQT HE DCEMITQWPF H _ CXKUKVGFJQXGT ] EQNQT HE DCEMITQWPF H _ CNKPMCEVKXG ] EQNQT TGF _
  • 24. CMV[YPG æEC
  • 25. CXKUKVGFCEVKXG ] EQNQT TGF _ Pionowe menu CSS2 Na stronie WebReference.com utworzone zostały przykładowe pionowe nakładki CSS2, które nie są prawidłowo wyświetlane w Netscape 4 (http://www.webreference. com/new/rollovers). W przeglądarce Netscape 4 wyglądają niemal identycznie, lecz nie mają efektu nakładkowego. W przeglądarkach obsługujących pseudoklasę JQXGT (Opera 3.5, IE4+, Netscape 6+/Mozilla) działają poprawnie. Po dokładnych testach znaleźliśmy rozwiązanie, które działało prawidłowo we wszyst- kich przeglądarkach biorących udział w testach. U yty został znacznik łącza dla arkuszy stylów. Wyniki zostały przedstawione na rysunku 8.2. Listing 8.3 prezentuje kod CSS. Łączenie pseudoklas Internet Explorer dla Windows może mieć pewne problemy z łańcuchami pseudoklas. Wygląda na to, że wersje IE4, IE5 i IE6 mogą ignorować wszystkie, z wyjątkiem ostatniej pseudoklasy w łańcuchu. Dzieje się to tak długo, dopóki nie pojawi się identyfikator elementu. Na szczę- ście w tym przypadku nie stanowi to problemu, gdyż CNKPMJQXGT i CXKUVGFJQXGT mają określony ten sam styl (Internet Explorer efektywnie skraca oba zapisy do CJQXGT). To samo dotyczy CEVKXG. Internet Explorer może zachowywać się dziwnie, gdy zechcesz nadać różne style połączonym pseudoklasom, albo gdy nadasz styl tylko części z nich. Większość pro- jektantów nie ma problemu z takim zachowaniem, gdyż używa prostszego selektora CJQXGT albo selektora kontekstowego. Więcej informacji znajdziesz pod adresem http://www. meyerweb.com/eric/css/tests/css2/sec05-10.htm.
  • 26. Rozdział 8. ♦ Zaawansowana optymalizacja kodu CSS 167 Rysunek 8.2. Proste pionowe nakładki CSS2 Listing 8.3. Pionowe nakładki CSS2 (kod CSS) DQF[ ]DCEMITQWPF HHH_ J ]OCTIKPRCFFKPIGOVGZVCNKIPEGPVGT_ FKXOGPW ] YKFVJRZ DCEMITQWPF HHH RCFFKPI OCTIKPGO DQTFGTRZ UQNKF _ FKXOGPW C ] FKURNC[DNQEM OCTIKP YKFVJ RCFFKPIGO HQPVYGKIJVDQNF DQTFGTVQRRZ UQNKF EQNQT H VGZVFGEQTCVKQPPQPG _ JVON DQF[ FKXOGPW C ]YKFVJCWVQ_ FKXOGPW CJQXGT ]DCEMITQWPF EQNQT HHH_ Aby uzyskać efekt nakładkowy na całej szerokości menu, wykorzystana została sztucz- ka zapo yczona z www.tantek.com. Szerokość łącza jest ustawiana na CWVQ dla prze- glądarek innych ni IE6: JVON DQF[ FKXOGPW C ]YKFVJCWVQ_ Autorzy, którzy nie chcą korzystać z tej sztuczki, mogą napisać YKFVJCWVQ dla łączy blokowych. Internet Explorer nało y nakładkę tylko na łącza. Wszystkie pozostałe przeglądarki zgodne z CSS2 będą poprawnie obsługiwać cały pojemnik, a łącze bę- dzie aktywne. Spacje na listingu 8.4 zostały dodane z myślą o zachowaniu łączy w starszych prze- glądarkach. Na zewnątrz łączy znaczniki DT mogą zostawiać pionową lukę. Aby uniknąć wyświetlania luk, nale y przenieść je na zewnątrz łączy i nie stosować stylu dla przeglądarek niezgodnych z CSS: FKXOGPW DT ]FKURNC[PQPG_
  • 27. 168 Część III ♦ Optymalizacja DHTML: CSS i JavaScript Listing 8.4. Pionowe nakładki CSS (kod HTML) 1%6;2' *6/. 27$.+% 9%6 *6/. '0 JVVRYYYYQTI64JVONUVTKEVFVF JVON JGCF VKVNG 2TQUVG PCM CFMK %55VKVNG NKPM TGN UV[NGUJGGV JTGH NKUVKPIEUU V[RG VGZVEUU JGCF DQF[ FKX ENCUU OGPW J /GPW 6KVNGJ C JTGH RTQFWEVU 2TQFWEVU DT C C JTGH UGTXKEGU 5GTXKEGU DT C C JTGH CDQWV #DQWV DT C C JTGH EQPVCEV %QPVCEV DT C FKX DQF[ JVON Aby najwy szy element menu był równie aktywny, mo na zmienić nagłówek w styl łącza, analogicznie do pozostałych elementów: FKX ENCUU OGPW C JTGH JQOG *QOG DT C C JTGH RTQFWEVU 2TQFWEVU DT C Pojawia się jednak inny problem — górna krawędź menu jest rysowana podwójną li- nią, gdy zarówno zewnętrzny FKX, jak i łącze JQOG mają krawędź górną (rysunek 8.3). Rysunek 8.3. Proste pionowe nakładki CSS2 — zwróć uwagę na podwójną krawędź górną Aby pozbyć się dodatkowej linii, wystarczy usunąć ją z górnej krawędzi FKX, tak jak zostało to przedstawione poni ej (spójrz na rezultat na rysunku 8.4): FKXOGPW ] YKFVJRZ DCEMITQWPF HHH RCFFKPI OCTIKPGO DQTFGTRZ UQNKF DQTFGTVQRRZ
  • 29. _
  • 30. Rozdział 8. ♦ Zaawansowana optymalizacja kodu CSS 169 Rysunek 8.4. Proste pionowe nakładki CSS2 — z pojedynczą górną krawędzią W przypadku korzystania z poleceń CSS2, które mogą być przyczyną potencjalnych problemów w Netscape 4, mo na opcjonalnie zastosować dyrektywy KORQTV, aby czytać z zewnętrznego arkusza stylów. Powy sze przykłady zostały przedstawione dla czarno-białych kolorów. Generalnie nie zalecam u ywania czarnych łączy. Nawet w menu u ytkownicy spodziewają się domyślnego, niebieskiego koloru łączy. Łącza powinny odró niać się od zwykłego tekstu. Prawdziwy przykład nakładek CSS2 Projektanci zamieniają stare nakładki bazujące na grafice i kodzie JavaScript na nowe, „lekkie” menu CSS2. Przyjrzyjmy się prawdziwym przykładom korzystającym z na- kładek CSS2. Zacznijmy od Designmeme.com. Designmeme.com Stuart Robinson, webmaster na Uniwersytecie Guelph w Kanadzie, na swojej stronie internetowej u ywa dwóch typów nakładek CSS2, które zostały przedstawione na ry- sunku 8.5. Z lewej strony widoczne jest menu utworzone za pomocą przeźroczystych GIF-ów i pseudoklasy JQXGT (bez korzystania z nakładek graficznych JavaScript). Pio- nowy pasek menu, widoczny po prawej stronie, korzysta natomiast z prostych nakła- dek CSS2, bez adnej dodatkowej grafiki. Rysunek 8.5. Designmeme.com
  • 31. 170 Część III ♦ Optymalizacja DHTML: CSS i JavaScript Stuart Robinson jest pionierem w dziedzinie nakładek CSS, których u ywa od maja 2001 r. Strona CSS Edge Erica Meyera Eric Meyer jest autorem ksią ek: „Cascading Style Sheets: The Definitive Guide” (O’Reilly, 2000 r.) („CSS. Kaskadowe arkusze stylów. Przewodnik encyklopedyczny”, Helion, 2001 r.) oraz „Eric Meyer on CSS” (New Riders, 2002 r.). W swoich ksią - kach omawia wiele technik u ywania arkuszy CSS. Na jego stronie CSS Edge mo na znaleźć wiele technik opartych na arkuszach stylów CSS, które mogą poprawnie pra- cować w nowszych przeglądarkach (rysunek 8.6). Rysunek 8.6. Strona CSS Edge Erica Meyera (http://www.meyerweb. com/eric/css/edge/) Poziome nakładki CSS2 U ywając podobnych metod i bez stosowania sztuczki FKURNC[DNQEM, mo na utworzyć poziome nakładki CSS2. Mike Hall na stronie Brainjar.com przedstawia bardzo dobry przykład poziomego paska menu bazującego na nakładkach CSS2 (rysunek 8.7). Po- przez wykorzystanie offsetu i efektu jasnych krawędzi (ang. light-sourced) przyciski menu zyskały trójwymiarowy wygląd. Mike Hall poszedł krok dalej, dodając hierarchiczne rozwijane menu korzystające z FKX-ów i odrobiny JavaScript. Menu jest poprawnie wyświetlane w Netscape 6 i In- ternet Explorerze 5.5, lecz nie sprawdza się w IE5 Mac i Operze1 (rysunek 8.8). Dzięki Kwon Ekstrom i za pozwoleniem Mike’a Halla mo emy zajrzeć do środka trójwymiarowego menu, aby wyciągnąć z niego to, co najistotniejsze. Zacznijmy od HTML: 1 Opera 7.x radzi sobie ju z opisaną techniką dość dobrze — przyp. red.
  • 32. Rozdział 8. ♦ Zaawansowana optymalizacja kodu CSS 171 Rysunek 8.7. Strona BrainJar Mike’a Halla (http://www. brainjar.com/) Rysunek 8.8. Strona BrainJar. Hierarchiczne menu oparte na modelu DOM FKX ENCUU OGPWDCT YKFVJ C ENCUU DWVVQP CEVKXG JTGH *QOGC C ENCUU DWVVQP JTGH RTQFWEVU 2TQFWEVUC C ENCUU DWVVQP JTGH UGTXKEGU 5GTXKEGUC C ENCUU DWVVQP JTGH EQPVCEV %QPVCEVC FKX Jedyną niestandardową rzeczą w powy szym zapisie jest klasa CEVKXG. Zoptymalizo- wany arkusz stylów na listingu 8.5 definiuje pasek nawigacyjny i sprawia, e aktywny przycisk wygląda tak, jakby był „wciśnięty”.
  • 33. 172 Część III ♦ Optymalizacja DHTML: CSS i JavaScript Listing 8.5. Trójwymiarowe poziome menu CSS2 DQF[ ] DCEMITQWPF HHH EQNQT _ FKXOGPWDCT FKXOGPWDCT CDWVVQP ] HQPV DQNF GO CTKCNJGNXGVKECUCPUUGTKH VGZVFGEQTCVKQP PQPG EQNQT DNWG _ FKXOGPWDCT ] DCEMITQWPF HF RCFFKPI RZ RZ DQTFGT RZ UQNKF DQTFGTEQNQT HH HH VGZVCNKIP NGHV
  • 35. _ FKXOGPWDCT CDWVVQP ] DCEMITQWPF VTCPURCTGPV DQTFGT RZ UQNKF HF EWTUQT FGHCWNV NGHV RZ VQR RZ OCTIKP RZ RCFFKPI RZ RZ RQUKVKQP TGNCVKXG KPFGZ _ FKXOGPWDCT CDWVVQPJQXGT ] DCEMITQWPF VTCPURCTGPV DQTFGTEQNQT HH HH EQNQT DNWG _ FKXOGPWDCT CCEVKXG FKXOGPW$CT CCEVKXGJQXGT ] DCEMITQWPF DQTFGTEQNQT HH HH EQNQT HHH NGHV RZ VQR RZ _ Zasada CDWVVQP i odpowiadające jej style JQXGT są kluczem do sukcesu. Przycisk jest definiowany tym samym kolorem tła (przeźroczysty), co otaczający go FKX, dzięki czemu „wtapia” się on w pasek nawigacyjny. Ustawiając offset i cień, mo na zasymulować wygląd wciśniętego przycisku (rysunek 8.9). Styl CDWVVQPJQXGT zmienia kolor wszyst- kich czterech krawędzi, nadając trójwymiarowy wygląd. Aktywny styl JQXGT przesu- wa przycisk o 1 piksel w dół i w prawo, zamieniając kolory krawędzi i przyciemnia- jąc tło. Więcej informacji o pasku menu znajdziesz na stronie BrainJar.com w części „Revenge of the Menu Bar”.
  • 36. Rozdział 8. ♦ Zaawansowana optymalizacja kodu CSS 173 Rysunek 8.9. Pasek menu CSS2 Dynamiczny pasek menu CSS2 Mo na połączyć ideę interaktywnego trójwymiarowego przycisku z warunkowym SSI i utworzyć dynamiczny pasek menu oparty na CSS2. Zacznijmy od prezentacji kodu HTML paska menu i odpowiadającemu arkuszowi CSS (listing 8.6). Listing 8.6. Szablon HTML paska menu CSS2 JVON JGCF VKVNG GOQ RCUMC OGPW %55VKVNG UV[NG V[RG VGZVEUU KORQTV EUUOGPWDCTEUU UV[NG JGCF DQF[ KPENWFG XKTVWCN EUUOGPWDCTJVON DQF[ JVON Powy szy kod pozwala na umieszczenie na stronie paska menu o szerokości strony. Konieczna jest aktualizacja tylko dwóch plików. Zwróć uwagę, e dołączony zostaje plik HTML, a nie plik tekstowy. Poprzez ustawienie flagi w pliku konfiguracyjnym serwera (patrz rozdział 17.) mo na dołączyć warunkowy SSI w ka dym dołączonym pliku HTML (listing 8.7). Listing 8.7. Warunkowe SSI paska menu KH GZRT ]1%7/'06A74+_ @RTQFWEVU
  • 37. FKX ENCUU OGPWDCT YKFVJ C ENCUU DWVVQP JTGH *QOGC C ENCUU DWVVQP CEVKXG JTGH RTQFWEVU 2TQFWEVUC C ENCUU DWVVQP JTGH UGTXKEGU 5GTXKEGUC C ENCUU DWVVQP JTGH EQPVCEV %QPVCEVC FKX GNKH GZRT ]1%7/'06A74+_ @UGTXKEGU
  • 38. FKX ENCUU OGPWDCT YKFVJ C ENCUU DWVVQP JTGH *QOGC C ENCUU DWVVQP JTGH RTQFWEVU 2TQFWEVUC C ENCUU DWVVQP CEVKXG JTGH UGTXKEGU 5GTXKEGUC C ENCUU DWVVQP JTGH EQPVCEV %QPVCEVC FKX GNKH GZRT ]1%7/'06A74+_ @EQPVCEV
  • 39. FKX ENCUU OGPWDCT YKFVJ C ENCUU DWVVQP JTGH *QOGC C ENCUU DWVVQP JTGH RTQFWEVU 2TQFWEVUC C ENCUU DWVVQP JTGH UGTXKEGU 5GTXKEGUC C ENCUU DWVVQP CEVKXG JTGH EQPVCEV %QPVCEVC FKX
  • 40. 174 Część III ♦ Optymalizacja DHTML: CSS i JavaScript GNKH GZRT ]1%7/'06A74+_ @ ^^ ]1%7/'06A74+_ @KPFGZJVON FKX ENCUU OGPWDCT YKFVJ C ENCUU DWVVQP CEVKXG JTGH *QOGC C ENCUU DWVVQP JTGH RTQFWEVU 2TQFWEVUC C ENCUU DWVVQP JTGH UGTXKEGU 5GTXKEGUC C ENCUU DWVVQP JTGH EQPVCEV %QPVCEVC FKX GNUG FKX ENCUU OGPWDCT YKFVJ C ENCUU DWVVQP JTGH *QOGC C ENCUU DWVVQP JTGH RTQFWEVU 2TQFWEVUC C ENCUU DWVVQP JTGH UGTXKEGU 5GTXKEGUC C ENCUU DWVVQP JTGH EQPVCEV %QPVCEVC FKX GPFKH Nakładkowy pasek menu będzie zmieniał wygląd aktywnego przycisku. Przycisk bę- dzie aktywny, je eli kursor będzie znajdował się w danym menu hierarchicznym, wy- świetlonym za pomocą tego przycisku. W arkuszu stylów z listingu 8.5 wystarczy zmienić lokalizację klasy „CEVKXG” w HTML. Przykładowo, przy wybraniu pozycji „EQPVCEV”, warunkowy SSI z listingu 8.7 sprawdza bie ący URL i znajduje odpo- wiednią instrukcję: KH GZRT ]1%7/'06A74+_ @EQPVCEV
  • 41. Wyra enie odpowiada ka demu adresowi URL zaczynającemu się od EQPVCEV, jak np. EQPVCEVUVCHHJVON (rysunek 8.10). Rysunek 8.10. Dynamiczny pasek menu CSS2 To samo przypisanie ENCUU mo na uzyskać za pomocą kodu JavaScript, lecz — jak widać na powy szym przykładzie — mo na się bez niego obejść. Menu oparte na liście Christopher Schmitt, zało yciel BabbleList.com, jest najprawdopodobniej pierwszą osobą, która opublikowała sztuczkę polegającą na uzyskaniu poziomego nakładkowe- go menu przy u yciu FKURNC[KPNKPG na elementach listy. Na rysunku 8.11 przedsta- wiony został przykład. Rysunek 8.11. Strona CSSBook.com Christophera Schmitta. Menu oparte na liście (http://www.cssbook. com/cssnav/css2.html)
  • 42. Rozdział 8. ♦ Zaawansowana optymalizacja kodu CSS 175 Ró nica pomiędzy tą i wcześniej opisaną metodą polega na tym, e w tym przypadku elementy menu są oddzielone od siebie wewnętrznymi elementami listy. Korzyść jest taka, e aktywny jest cały pojemnik, który w całości jest łączem. Margines wokół łą- cza tworzy przestrzeń otaczającą tekst. Nie ma potrzeby, aby u ywać łączy elemen- tów blokowych. Poni ej przedstawiony został kod HTML: FKX KF PCX R 0CXKICVKQPR WN NK C JTGH CPMNG #PMNGC NK NK C JTGH DQCV $QCVC NK NK C JTGH EWRECMG %WRECMGC NK NK C JTGH FQWDNG QWDNGC NK NK C JTGH GCVGT[ 'CVGT[C NK WN FKX W prosty i jasny sposób FKX PCX otacza nieuporządkowaną listę. Wystarczy nadać styl wyświetlania listy (KPNKPG zamiast domyślnego NKUVKVGO): PCX NK ] RCFFKPI OCTIKP FKURNC[ KPNKPG
  • 43. OKGPKC NK DNQMQYGIQ PC NKPKQY[
  • 44. HQPVUKG GO HQPVHCOKN[ 8GTFCPC #TKCN *GNXGVKEC UCPUUGTKH _ Następnie nale y dodać trochę marginesu wewnętrznego i efekt JQXGT: PCX NK C ] FKURNC[ KPNKPG RCFFKPI RZ OCTIKP EQNQT DCEMITQWPFEQNQT EEE HQPVUKG GO HQPVHCOKN[ 8GTFCPC #TKCN *GNXGVKEC UCPUUGTKH VGZVFGEQTCVKQP PQPG _ PCX NK CJQXGT ] EQNQT HHH DCEMITQWPFEQNQT HQPVUKG GO HQPVHCOKN[ 8GTFCPC #TKCN *GNXGVKEC UCPUUGTKH VGZVFGEQTCVKQP PQPG _ Zauwa , e powy szy kod mo na zoptymalizować za pomocą skróconych właściwo- ści i usunięcia paru nadmiarowych informacji. Końcowy, zoptymalizowany kod arku- sza stylów został przedstawiony na listingu 8.8. Listing 8.8. Zoptymalizowane menu oparte na elementach listy PCX ] RQUKVKQPCDUQNWVG VQR RZ NGHV RZ EQNQT HHH DCEMITQWPF VTCPURCTGPV HQPV GO XGTFCPC CTKCN JGNXGVKEC UCPUUGTKH _
  • 45. 176 Część III ♦ Optymalizacja DHTML: CSS i JavaScript PCX WN WN ] OCTIKP RCFFKPI _ PCX NK ] RCFFKPI OCTIKP FKURNC[ KPNKPG HQPV GO XGTFCPC CTKCN JGNXGVKEC UCPUUGTKH _ PCX NK C ] FKURNC[ KPNKPG RCFFKPI RZ OCTIKP EQNQT DCEMITQWPF EEE HQPV GO XGTFCPC CTKCN JGNXGVKEC UCPUUGTKH VGZVFGEQTCVKQP PQPG _ PCX NK CJQXGT ] EQNQT HHH DCEMITQWPF _ PCX NK CCEVKXG ] EQNQT EEE DCEMITQWPF _ Tabele i CSS W rozdziale 4. „Zaawansowane metody optymalizacji” dowiedziałeś się, w jaki spo- sób nale y przyspieszać wyświetlanie tabel za pomocą właściwości CSS2 VCDNG NC[QWVHKZGF oraz elementów EQNITQWR i EQN. Innym sposobem jest wykorzystanie arkuszy CSS do określenia koloru tła komórek tabeli. Dzięki temu nie trzeba w ka - dym miejscu pisać DIEQNQT. Zamiast: VCDNG DIEQNQT HHEE VT DIEQNQT VGPUCOMQNQT VF VF VF DIEQNQT KPP[MQNQT VF Dodatkowe informacje Więcej informacji o menu opartym na wewnętrznych elementach listy można znaleźć na stronie Christophera Schmitta CSSBook.com albo w jego książce „Designing CSS Web Pa- ges”, New Riders, 2002 r. Polecam również stronę Dave’a Lindquista, omawiającą menu DHTML tworzone na bazie list (rozwijane i rozszerzalne poniżej 6 kB) — http://www.gazingus. org/dhtml/?id=109.
  • 46. Rozdział 8. ♦ Zaawansowana optymalizacja kodu CSS 177 nale y napisać: Z]DCEMITQWPF HE_[]DCEMITQWPF HHGFC_]DCEMITQWPF HHHCE_ VCDNG ENCUU Z VT ENCUU [ VF VF VF ENCUU VF Wszystkie przeglądarki od wersji 4. obsługują powy szą metodę. Kontrolowanie układu za pomocą arkuszy CSS Rozmieszczenie elementów strony za pomocą arkuszy CSS mo e przekształcić stary tabelaryczny układ w elegancki układ bazujący na CSS. Wielu projektantów przeko- nało się, e zmiana sposobu rozmieszczenia elementów mo e zmniejszyć obcią enie łącza oraz koszty utrzymania. Pozbycie się tabel daje równie większą elastyczność, pozwalając na wyświetlanie ró nej zawartości z tymi samymi stylami. Przenosząc warstwę prezentacyjną do arkuszy stylów, struktura dokumentu staje się przejrzysta. Zmiana układu strony sprowadza się do zmiany jednego arkusza stylów. Przeniesienie zawartości na inną platformę (inną przeglądarkę lub wersję przeglądarki) albo inny typ mediów wymaga jedynie zastosowania innego arkusza stylów i nie zmusza do po- nownego przepisywania kodu dokumentu. Najpopularniejszym układem jest struktura dwu- lub trójkolumnowa (zachowanie zgodności z Netscape 4 jest tutaj pewnym wyzwaniem). Spójrzmy na przykładowy układ trójkolumnowy z listingu 8.9. Listing 8.9. Układ trójkolumnowy — stary sposób VCDNG VT VF EQNURCP R IÎTP[ RCUGM PCYKICE[LP[ PCM HKTOQY[ K TGMNCO[R VF VT VT VF R NGY[ RCUGM PCYKICE[LP[R VF VF R I ÎYP[ QDUCTR VF VT VCDNG
  • 47. 178 Część III ♦ Optymalizacja DHTML: CSS i JavaScript W arkuszu CSS komórki tabeli są zastąpione elementami FKX (listing 8.10). Listing 8.10. Układ trójkolumnowy — nowy sposób FKX KF CFX R IÎTP[ RCUGM PCYKICE[LP[ PCM HKTOQY[ K TGMNCO[R FKX FKX KF PCX R NGY[ RCUGM PCYKICE[LP[R FKX FKX KF OCKP R I ÎYP[ QDUCTR FKX Powy szy kod jest znacznie bardziej przejrzysty. Zwróć uwagę, e elementy FKX są nazywane funkcjonalnie, a nie na podstawie lokalizacji. Dodajmy teraz CSS, aby od- powiednio rozmieścić elementy (listing 8.11). Listing 8.11. Układ trójkolumnowy — CSS UV[NG V[RG VGZVEUU FKX CFX ] DCEMITQWPF EEE YKFVJCWVQ OCTIKP RCFFKPIGO _ FKX PCX ] DCEMITQWPF FFF HNQCVNGHV YKFVJ OCTIKPTKIJVGO RCFFKPIGO _ FKX OCKP ] DCEMITQWPF HE OCTIKPNGHV RCFFKPIGO _ UV[NG Kluczowymi elementami dla układów dwu- i trójkolumnowych są: HNQCV, OCTIKPNGHV i TKIJV. HNQCV przesuwa dany element do prawej lub lewej strony (pozostała zawartość go „otacza”). W tym przypadku nawigacyjny FKX jest ustawiony po lewej stronie, ma określoną szerokość i margines wewnętrzny oraz margines zewnętrzny po stronie pra- wej. Dla głównej zawartości FKX ustawiany jest lewy margines zewnętrzny, który ma odpowiadać szerokości elementu przesuniętego do lewej strony.
  • 48. Rozdział 8. ♦ Zaawansowana optymalizacja kodu CSS 179 Zwiększenie skuteczności Im wy ej umieścisz główną zawartość dokumentu w kodzie HTML, tym większa bę- dzie skuteczność wyszukiwania słów kluczowych na stronie. Mo na wykorzystać CSS do sztuczki wyświetlania tabeli opisanej w rozdziale 4. Na listingu 8.12 przed- stawiony został sposób odwrotnego wyrównywania elementów — zamiast przesunię- cia paska nawigacyjnego do lewej strony główna zawartość FKX jest przesuwana do strony prawej. Listing 8.12. Udoskonalony układ trójkolumnowy (kod CSS) UV[NG V[RG VGZVEUU FKX CFX ] DCEMITQWPF EEE YKFVJCWVQ OCTIKP RCFFKPIGO _ FKX OCKP ] HNQCVTKIJV YKFVJ DCEMITQWPF HE OCTIKPNGHVGO RCFFKPIGO _ FKX PCX ] DCEMITQWPF FFF OCTIKPTKIJV RCFFKPIGO _ UV[NG Mo na teraz zamienić pozycje FKX-ów OCKP z PCX, umieszczając główną zawartość wcześniej w kodzie HTML (listing 8.13). Listing 8.13. Udoskonalony układ trójkolumnowy (kod HTML) FKX KF CFX R IÎTP[ RCUGM PCYKICE[LP[ PCM HKTOQY[ K TGMNCO[R FKX FKX KF OCKP R I ÎYPC CYCTVQ èR FKX R NGY[ RCUGM PCYKICE[LP[R FKX Strona wygląda identycznie, lecz główna zawartość jest wcześniej umieszczona w ko- dzie, dzięki czemu jest szybciej wyświetlana. Je eli chcesz, mo esz ją nawet umieścić na samej górze dokumentu, a dopiero za nią FKX z reklamami i nawigacją.
  • 49. 180 Część III ♦ Optymalizacja DHTML: CSS i JavaScript Dodatkowe informacje Na poniższych stronach znajdziesz dodatkowe informacji o sposobach tworzenia układów dokumentów na podstawie CSS: http://www.alistapart.com — A List Apart korzysta z układu opartego na arkuszach CSS i uczy programistów, jak z nich korzystać. http://www.meyerweb.com/eric/css/edge/ — strona CSS Edge Erica Meyera jest prawdziwym placem zabaw z metodami bazującymi na arkuszach CSS. http://developer.apple.com/internet/css/introcsslayout.html — wstęp do układów stron opartych na arkuszach CSS (autorstwa Erica Costello). Podsumowanie Aby w pełni wykorzystać arkusz CSS, niezbędne jest przekształcenie kodu doku- mentu. Nale y korzystać ze skróconych nazw ENCUU i KF, u ywać skróconych wła- ściwości oraz grupować właściwości minimalizując rozmiar arkusza stylów. Nale y zamienić stary tabelaryczny układ dokumentu oraz nakładki oparte na obrazkach i JavaScripcie na strukturę bazującą na arkuszach CSS. Aby zmniejszyć tabele, nale y nadać styl za pomocą arkuszy CSS (a nie umieszczać w ka dym miejscu właściwości DIEQNQT). Warto tak e przenieść główną zawartość dokumentu na wy szą pozycję w kodzie HTML (sztuczka wyświetlania tabeli albo metody CSS). Poni ej przedsta- wiona została lista wskazówek omówionych w niniejszym rozdziale: U ywaj skróconych właściwości, grupowania i skrótów do optymalizacji arkuszy CSS. Zamieniaj kod efektów nakładkowych JavaScript/obrazki na CSS. Twórz efekty nakładkowe CSS2 za pomocą pseudoklasy JQXGT, stylizowanych łączy albo list. U ywaj VCDNGNC[QWVHKZGF, EQNITQWR i EQN, aby zwiększyć prędkość wyświetlania tabel. U ywaj arkuszy CSS do ustawiania kolorów komórek tabeli (działa tylko z przeglądarkami w wersji 4+). Definiuj układ i rozmieszczenie elementów poprzez arkusze CSS i XHTML, aby oddzielić warstwę prezentacyjną od struktury i zmniejszyć rozmiar kodu. Staraj się, aby układ dokumentu był elastyczny. Zwiększ skuteczność wyszukiwania na swojej stronie.
  • 50. Rozdział 8. ♦ Zaawansowana optymalizacja kodu CSS 181 Polecane publikacje „Cascading Style Sheets: The Definitive Guide”, Eric Meyer, O’Reilly 2000r. („CSS. Kaskadowe arkusze stylów. Przewodnik encyklopedyczny”, Helion, 2001 r.) — doskonałe wprowadzenie do CSS. „Eric Meyer on CSS”, Eric Meyer, New Riders, 2002 r. — Meyer przedstawia prawdziwy świat CSS (13 projektów konwersji). A List Apart pod przewodnictwem Jefferya Zeldmana (http://www.alistapart.com) — dobre źródło informacji o standardach internetowych, w tym między innymi o CSS. Cascading Style Sheets 1, 2 i 3, World Wide Web Consortium (http://www.w3.org/Style/CSS/) — oficjalna specyfikacja CSS. The Web Standards Project pod przewodnictwem Jefferya Zeldmana (http://www.webstandards.org) — ustalenie standardów dla producentów przeglądarek internetowych. Powrót do WaSP (The Web Standards Project).