Perfection or Vanity

Project: Terminated

Blog nie jest już dalej prowadzony ani aktualizowany. Mimo tego, wpisy i komentarze są dalej dostępne. Możesz przeczytać pożegnalny wpis albo przejść do archiwum.

Często tworzymy proste strony, złożone z pojedynczego dokumentu. Być może są to wylistowane linki do plików z pracą domową dla znajomych. Być może piszemy jakieś podsumowanie w czystym XHTMLu. Czasem chcemy ozdobić pliki małymi ikonkami wskazującymi na typ pliku. Czasem pragniemy uczłowieczyć dźwiękiem któryś akapit.

I zwykle robimy to dodając malutkie pliki graficzne (albo dźwiękowe) do strony, mozolnie ciułając je w katalogu z tym pojedynczym dokumentem. Niejednokrotnie zastanawiamy się, czemu nie można ich dodać od razu do dokumentu, oszczędzając sobie problemów przy kopiowaniu i rozprzestrzenianiu dokumentu.

Wstęp

No ale dość rozmarzania się. Mądrzy ludzie wpadli na taki pomysł i da się to już osiągnąć. Mowa o sposobie zapisu pliku, czy to od razu w kodzie strony, czy w pliku CSS.

Składnia wygląda tak:

  1. data:[<mediatype>][;base64],<data>

Mediatype to zwyczajnie typ danych. Przykładowo dla pliku GIF jest to image/gif, dla PNG image/png a dla MP3 audio/mp3. Jeśli pominiemy mediatype, zostanie ustawiony na text/plain, a tego w przypadku grafiki czy dźwięku nie chcemy. Na temat parametru base64 można przeczytać w Wikipedii. Data jest oczywiście samym plikiem. Plik możemy przygotować w formacie base64 za pomocą strony The data: URI kitchen. Zaznaczamy checkbox base64, wklejamy link do pliku bądź uploadujemy go z komputera i voila.

Użycie na stronie

Gdy już mamy ciąg Data URL (używam małego pliku GIF), możemy go użyć na stronie WWW. Wersja z wykorzystaniem <img/>:

  1. <img src="data:image/gif;base64,R0lGODlhCgAHAIABAAAAAAAAACH5BAEAAAEALAAAAAAKAAcAAAIPjH%2BACGoeGmyRJglvZqgAADs%3D" alt="small icon" />

Co da taki efekt:

Można też dodać ten plik w formacie Data URL do arkusza CSS i wykorzystywać go jako background-image, list-style-image bądź wklejać przez ::before { content: ...; }:

  1. url(data:image/gif;base64,R0lGODlhCgAHAIABAAAAAAAAACH5BAEAAAEALAAAAAAKAAcAAAIPjH%2BACGoeGmyRJglvZqgAADs%3D);

Zalety

Dzięki możliwości załączenia plików w tekście, w arkuszu CSS, możemy łatwiej tworzyć moduły dla naszych stron. Przykładowo reguły CSS udające elementy interfejsu systemowego, których używam w poradnikach do Konnekta (przykładowa strona) mogą od teraz obyć się bez masy oddzielnych plików. Ponadto wykonujemy HTTP request tylko raz, a nie parenaście/paredziesiąt razy. Nie trzeba mówić jak bardzo przyśpiesza to ładowanie strony.

Wady

Opłaca się tak załączać tylko malutkie pliki. Ale to bardziej logika niż wada. No i opisany sposób działa tylko w nowoczesnych przeglądarkach, takich jak Mozilla czy Opera.

Dodatkowe materiały:

Informacje i hiperłącza

Blog o projektowaniu zgodnych ze standardami stron internetowych.

Praktyczne przykłady, sztuczki CSS, sposoby obchodzenia błędów przeglądarek, lekki i nieinwazyjny JavaScript, użyteczny design, dostępność i skrypty użytkownika.

RSS

Informacje o wpisie

Napisał riddle 13 sierpnia 2005 o 18:23

Kategorie: Standardy sieciowe

Dodaj do:

Wpisy archiwalne

Archiwum miesięczne

Dzięki!

Dodaj bloga do Technorati Favorites Dodaj bloga do Del.icio.us Blog należy do sieci 10przykazań.com

  1. To pole komentarzy w Operze jest straaasznie wąskie. W FF jest normalnych rozmiarów więc chyba nie testowałeś tego w Operze. Mógłbyś poprawić bo naprawdę ciężko się tak pisze :)

  2. Soupa s Trópa 2 14 sierpnia 2005, 00:54

    Niech Ci Bozia w dzieciach szczodrze wynagrodzi za ten artykuł. Wszytkie porady dotyczące webmasteringu i alternatywnych przeglądarek powinieneś zebrać w jednym miejscy, by był łatwiejszy dostęp a potem napisać książkę, opatentować i obciągać kase :D

  3. @Maciek:

    U mnie dobrze wygląda.

  4. No teraz tak, przejąłem się tym co napisał maciek i poprawiłem (width: 60ex;) :)

  5. Kiedyś już gdzieś o tym czytałem. Super sprawa, tylko jak zwykle IE musi popsuć całą zabawę ;/

  6. jestem pewny na 99% że kiedyś miałem coś takiego na IE i wtedy się wkurzałem że FF i Opera tego nie obsługuje …
    w każdym razie IE ma też coś takiego jak .mht (wszystko w jednym pliku) i też fajnie by było gdyby coś takiego było w standardzie, tj. żeby w dokumencie były tylko odwołania do identyfikatorów plików a same pliki na samym końcu dokumentu, wtedy ładowanie by wyglądało tak jak to jest normalnie gdy pliki są osobno

  7. świetna sprawa z tym base64. bawię się tym od jakiegoś czasu i szukam sposobu zmuszenia IE żeby jednak przełknął to kodowanie. na dobrą sprawę to on je przecież obsługuje – w plikach mht (w strasznie zakręcony sposób). a skoro potrafi tam, to może da się go przycisnąć (choćby małym oszustwem) żeby jednak i w plikach html też potrafił?

  8. witam mam prośbo-pytanie.
    jak, za pomocą kodu html, zamieścić do strony www dokument textowy typu word lub pdf?? najlepiej zeby się dało go pobierać i drukowac.(jesli to mozliwe:))

    bardzo prosze o pomoc…

  9. Na IE przykład nie działa :(

  10. IE nie wspiera tej technologii, niestety. Data: URL możesz wykorzystywać natomiast z powodzeniem podczas tworzenia UserCSS do podmiany stylów lokalnie. Tak na przykład zrobiłem redesignując Ling.pl.

  11. Bardzo dobry artykuł, polecam.

Dodaj komentarz

Do formatowania komentarzy używaj Textile (HTML nie działa). Szczególnie jeśli wklejasz większe fragmenty kodu. W razie niepewności użyj podglądu komentarza.

Wypowiedzi obraźliwe, infantylne oraz nie na temat będą moderowane – pisząc postaraj się zwiększyć wartość dyskusji.

Komentarze nie służą do wysyłania wiadomości albo informowania o błędach, itd. Chcesz coś mi napisać – skontaktuj się.