• 2012 (3)
  • 2011 (51)
  • 2010 (38)
  • 2009 (36)
  • < września 2009 >
    Pn Wt Ś Cz Pt So N
      1 2 3 4 5 6
    7 8 9 10 11 12 13
    14 15 16 17 19 20
    21 22 23 24 25 26 27
    28 29 30        

    Weź udział!

    Logo konkursu Wolny Wybór

    wypróbuj

    Logo wielojęzycznego chatu

    : Home / blog / wpisy wg daty
    Piątek, 18 września 2009
    Grafika na stronie PDF Drukuj Napisz e-mail
    Wpisał %s Patryk yarpo Jar
    piątek, 18 września 2009 02:37
    HTML/CSS / kurs HTML

    Na naszej stronie ciągle jeszcze czegoś brakuje... Grafiki!

    Już naprawiamy. Do wstawiania grafiki służy znacznik:
    {codecitation}<img src="źródło pliku graficznego" alt="tekst widoczy, jeśli nie uda się wyświetlić grafiki" title="tekst widoczny po najechaniu myszką na grafikę" align="left | right | center">{/codecitation}

    Można jeszcze doliczyć takie artybuty jak: width (szerokość), height (wysokość), style (definicja stylów - o tym później). Atrybut align jest tu użyty "tymczasowo". Na nowocześnie tworzonych stronach nie powinno się go używać (patrz: CSS, float). Dla wygody jednak użyjemy go tu.

    Wstawmy zatem jakieś zdjęcie do kontaktu:
    {codecitation}<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
        <title>Kontakt</title>
        <meta http-equiv="content-type" content="text/html;charset=utf-8">
    </head>
    <body>
        <h1>Kontakt</h1>
        <p><img src="img/kontakt.jpg" alt="Zdjęcie" title="To jest grafika">
            <a href="mailto:zdzisio(a)serwer.pl">zdzisio(a)serwer.pl - napisz</a><br>
            tel. 99887766</p>
        <p><a href="index.htm">Powrót do strony głównej</a></p>
    </body>
    </html>{/codecitation}
    Być może zastanawiasz się, co to znaczy:
    {codecitation}src="img/kontakt.jpg"{/codecitation}
    Jest to ścieżka do pliku. Można to przeczytać jako "w katalogu, w którym znajduje się plik, w którym jesteś (kurs html youthcoders - bo tam powinien być zapisany plik kontakt.htm) znajdź katalog `img', a w nim plik `kontakt.jpg'".

    Gdyby zdarzyło się, że chcesz przejść do katalogu nadrzędnego, należałoby użyć `..", do jeszcze wyższego `../../'. Do wyższego i tem znaleźc jakiś katalog `../../katalog/podkatalog/plik.jpg' itd. Oczywiście nie tyczy się to tylko obrazków. Zagadnienie ścieżek względnych i bezwzględnych tyczy się wszystkich rodzajów plików.

    Zadanie dla ciebie:
    Stwórz w katalagu `kurs html youthcoders' katalog `img' i umieść w nim dowolny plik graficzny. Nazwij ten plik `kontakt.jpg' (lub inaczej, ale wtedy dokonaj też odpowiednich zmian w kodzie). Pamiętaj o nazenictwie. Mała litera to nie to samo co wielka litera! Ku ścisłości - pod Windowsem tak. Pod linuksem (a większość serwerów w internecie jest postawionych na linuksie), plik kontakt.JPG i kontakt.jpg to dwa _różne_ pliki.
     

    Read more
    Zmieniony ( środa, 11 listopada 2009 16:39 )

    Hiperłącza PDF Drukuj Napisz e-mail
    Wpisał %s Patryk yarpo Jar
    piątek, 18 września 2009 02:35
    HTML/CSS / kurs HTML

    Internet nie byłby tym, czym jest, gdyby nie hiperłącza pozwalające połączyć wiele dokumentów w jedną stronę www.

    Musisz wiedzieć, że gdy klikasz w jakiś link (zakładamy, że mamy do czynienia z prostą stroną napisaną w HTML) to zostaje wczytany osobny dokument.

    Załóżmy, że mamy dwa dokumenty:
    `index.htm' (tak nazywa się zwyczajowo pierwszy dokument witryny www)
    `kontakt.htm'

    Jeśli chcemy, aby na stronie index.htm znalazł się link do strony kontakt.htm to musimy w sekcji body wstawić taki kod:{codecitation}<a href="kontakt.htm" title="Skontaktuj się ze mną!">kontakt</a>{/codecitation}

    Tak wyglądałby zatem cały kod z poprzedniej strony:

    {codecitation}<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
        <title>Moja pierwsza strona</title>
        <meta http-equiv="content-type" content="text/html;charset=utf-8">
    </head>
    <body>
        <h1>Witam na mojej pierwszej stronie</h1>
        <p>Tu umieśc jakiś krótki wstęp.</p>
        <p>Jeśli chciałbyś się ze mną skontaktować, to zajrzyj na stronę <a href="kontakt.htm">kontaktu</a>.</p>
    </body>
    </html>{/codecitation}

    I teraz stwórzmy plik `kontakt.htm'. Możesz albo skopiować plik `index.htm' i zmienić mu nazwę, albo stworzyć nowy plik tekstowy i nadać mu odpowiednią nazwę. Gdy już posiadasz taki plik. Otówrz geany i umieść w tym pliku taki kod:

    {codecitation}<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
        <title>Kontakt</title>
        <meta http-equiv="content-type" content="text/html;charset=utf-8">
    </head>
    <body>
        <h1>Kontakt</h1>
        <p>    <a href="mailto:zdzisio@serwer.pl">zdzisio@serwer.pl - napisz</a><br>
            tel. 99887766</p>
        <p><a href="index.htm">Powrót do strony głównej</a></p>
    </body>
    </html>{/codecitation}

    W powyższym kodzie widać, że w adresie podanym w atrybucie href występuje `mailto:'. Nakazuje to przeglądarce przekierować link na program pocztowy.

    W ten sposób mamy 2 oddzielne pliki: stronę główną (`index.htm') i kontakt (`kontakt.htm').

    Read more
    Zmieniony ( środa, 11 listopada 2009 16:38 )

    Akapity PDF Drukuj Napisz e-mail
    Wpisał %s Patryk yarpo Jar
    piątek, 18 września 2009 02:34
    HTML/CSS / kurs HTML

    Treść na stronie głównie umieszcza się w akapitach. Nagłówek stosuje się rzadko. Artykuł ma przecież tylko jeden tytuł :).

    Jak zatem wstawić akapit na stronę? Służy do tego znacznik p.

    {codecitation}<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
        <title>tytuł strony</title>
        <meta http-equiv="content-type" content="text/html;charset=utf-8">
    </head>
    <body>
        <h1>To jest moja pierwsza strona!</h1>
        <p>To jest                      mój pierwszy akapit</p>
        <p>To jest mój drugi akapit. Posiada on niesamowicie długi tekst. Tu wstawię ENTER
        jednak to nie złamie wcale tam linii :(</p>
        <p>To jest mój trzeci akapit, który chciałbym, aby tu<br> się złamał.</p>
    </body>
    </html>{/codecitation}

    Wstawienie nwego akapitu ogranicza się do wstawienia pary znaczników:
    {codecitation}<p>?</p>{/codecitation}
    z odpowiednią treścią w miejscu `?'.

    Na stronie może być nieskończenie wiele akapitów.

    Zauważ, że zwykły enter nie łamie linii. Podobnie jak wstawienie więcej niż jednej spacji nie oddala bardziej słów od siebie.
    Spacja, enter, tabulacja to tzn. "białe znaki". W większości przypadków zostaną wyświetlone po prostu jako spacja (jakaś odległość między literami).

    Aby złamać linię używaj:
    {codecitation}<br>{/codecitation}

    Może nie tyle niepoprawnym, co nieładnym jest zapis:{codecitation}<br><br>{/codecitation}

    Znacznik złania lini _nie_ służy do tworzenia odstępów w tekście. Jeśli uważasz, że dwa teksty powinny być od siebie dalej odsunięte - zrób dwa osobne akapity.

    Dla dociekliwych

    Czasem możesz spotkać się z zapisem w stylu:{codecitation}<br/>{/codecitation}
    Jest to zapis zgodny z XMLem. Różnice między XHTML (który jest "aplikacją XML"), a HTMLem (ktory jest "aplikacją SGML") są kolejnym tematem rzeką. Wrócę do niego później. Na razie przyjmij, że tak po prostu jest :)
     

    Read more
    Zmieniony ( środa, 11 listopada 2009 16:38 )

    Nagłówki PDF Drukuj Napisz e-mail
    Wpisał %s Patryk yarpo Jar
    piątek, 18 września 2009 02:33
    HTML/CSS / kurs HTML

    Skoro już mamy za sobą pierwsze stracie z tworzeniem stron www, pójdźmy dalej.

    W trakcie kilku kolejnych lekcji nauczysz się umieszczać tekst na stronie.

    Zacznijmy od nagłowków, czyli wyróżnionych w tekście fragmentów.

    {codecitation}<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
        <title>tytuł strony</title>
        <meta http-equiv="content-type" content="text/html;charset=utf-8">
    </head>
    <body>
        <h1>To jest moja pierwsza strona!</h1>
        <h2>To jest moja pierwsza strona!</h2>
        <h3>To jest moja pierwsza strona!</h3>
        <h4>To jest moja pierwsza strona!</h4>
        <h5>To jest moja pierwsza strona!</h5>
        <h6>To jest moja pierwsza strona!</h6>
    </body>
    </html>{/codecitation}

    Oczywiście później zostaw tylko jeden nagłówek. Chodziło mi tu jedynie o to, aby pokazać, że jest 6 stopni nagłówków.
    Jak pewnie łatwo się domyślić h1 jest najważniejszy (także dla wyszukiwarek), a h6 jest najmniej istotny.

    Skopiuj ten kod do swojego pliku, zapisz i otwórz w przeglądarce (jesli już masz otwarty to by zobaczyć zmiany, musisz odświeżyć).

    Read more
    Zmieniony ( środa, 11 listopada 2009 16:37 )

    Sekcja head PDF Drukuj Napisz e-mail
    Wpisał %s Patryk yarpo Jar
    piątek, 18 września 2009 02:31
    HTML/CSS / kurs HTML

    Przed chwilą już stworzyłeś swoją pierwszą stronę. Ale chyba nie masz zamiaru na tym skończyć?!

    Ta lekcja jest bardzo istotna, choć możesz nie dostrzec tego teraz (wiem, wiem - chcesz już stworzyć drugi onet:P), ale wierz mi to dosyć ważne.

    W sekcji head umieszcza się infomacje o dokumencie. Póki co pokazałem tylko dwie rzeczy umieszczane w sekcji head: tytuł i kodowanie. Jest ich więcej:

    {codecitation}<meta http-equiv="refresh" content="X">
    <meta http-equiv="Creation-Date" content="Sun,01 Oct 2003 10.30.30. GMT">
    <meta http-equiv="content-language" content="pl">
    <meta name="Keywords" content="słowa kluczowe">
    <meta name="Description" content="TEKST">
    <meta name="Generator" content="NotePad">
    <meta name="Author" content="dane autora">{/codecitation}

    To niekoniecznie wszystkie meta-tagi, które możesz znaleźć. Jednak wydaje mi się, że nie będziesz raczej potrzebował innych.

    krótki opis:

    • refresh - odświeżanie strony co X sekund
    • Creation-Data - czas utworzenia
    • content-language - język w jakim napisane są treści na stronie
    • keywords - już raczej nieprzydatny znacznik (google wcale go nie bierze pod uwagę)
    • description - czasem pojawia się jako opis wyniku w google
    • genrator - program, jakie użyto do stworzenia strony (w sumie zbędny bajer. Ale niektórzy lubią)
    • author - autor strony, cżesto pomijane.

    Wg mnie najważniejsze są dwa wpisy, o których była mowa w osnowie dokumentu. To są dodatkowe informacje. Warto też pamiętać, że w meta tagach _nie_ ma możliwości by nakazać cokolwiek robotom indeksującym wyszukiwarek.

    W sekcji head można także załączać skrypty JS i style CSS. Jednak o tym, będzie w dalszej części kursu :).

    Zapraszam dalej.

    Read more
    Zmieniony ( środa, 11 listopada 2009 16:38 )

    Osnowa dokumentu PDF Drukuj Napisz e-mail
    Wpisał %s Patryk yarpo Jar
    piątek, 18 września 2009 02:29
    HTML/CSS / kurs HTML

    Przez osnowę dokumentu będziemy tu uważać kod HTML niezbędne do tego, aby dokument tekstowy nazwać stroną internetową.
    Proponuję, aby zawsze zaczynać od takiego kodu:
    {codecitation}<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
        <title>tytuł strony</title>
        <meta http-equiv="content-type" content="text/html;charset=utf-8">
    </head>
    <body>
        Ten tekst będzie widoczny!
    </body>
    </html>{/codecitation}

    wytłumaczanie:

    Na samej górze dokumentu powinna się znajdować deklaracja typu dokumentu. DOCTYPE mówi przeglądarce, z jakim dokumentem na do czynienia. Na razie załóż, że to tam powinno być (na samym początku nie ma sensu się zbytnio w to wgłębiać - można o tym spokojnie napisać książkę :P).
    Znacznik <html> otwiera dokument. Zauważ, że większość znaczników to pary: <znacznik> ... </znacznik>. Łatwo zauważyć, że dodając ukośnik zamykamy wcześniej otwarty tag (tag = znacznik).

    Sekcja head służy do umieszczania informacji, które niekoniecznie muszą być widoczne dla internauty, np. kodowanie. Kodowanie to kolejny temat rzeka. Załóżmy na potrzeby kursu, że używamy utf-8. Znacznik title pozwala na ustawienie tytułu strony - widoczny na pasku programu, nad menu ('Plik', 'edycja' itp.).
    Sekcja body - to jest część strony, gdzie należy umieszczać treści jakie chcemy, aby się wyświetlały.

    Przejdź do folderu `kurs html youthcoders' i stwórz tam plik `index.htm' (pamiętaj, aby w ustawieniach folderu odznaczyć "ukrywaj rozszerzenia znanych plików". Windows uważa, że użytkownik jest idiotą i nie powienien widzieć rozszerzenia pliku).

    Następnie wklej powyższy kod i zapisz plik. Otwórz go w dowolnej przeglądarce i podziwiaj efekt :). Tak, to jest twoja pierwsza strona. Póki co jeszcze nie jest idealna, ale spokojnie - będzie lepiej!

    Zadania dodatkowe:

    1. Spraw, aby w tytule strony wyświetliło się twoje imię.
    2. Zmień tekst widoczny na ekranie "Ten tekst będzie widoczny" na dowolny inny.
       
    Read more
    Zmieniony ( środa, 11 listopada 2009 16:38 )

    IE 6 najlepszą przeglądarką w historii PDF Drukuj Napisz e-mail
    Wpisał %s Patryk yarpo Jar
    piątek, 18 września 2009 02:15
    Oprogramowanie / Inne

    IE6 da się lubić

    Mimo że od czasu wypuszczenia Internet Explorera 6 minęło już prawie 10lat, to przeglądarka ta nadal jest jedną z najpopularniejszych przeglądarek na rynku. Co sprawia, że tak archaiczna aplikacja nadal utrzymuje tak liczne grono użytkowników? W przeglądarce tej można nadal zrobić wszystko – nawet to, czego nie chce użytkownik oraz nawet to, o czego nie przewidzieli jego twórcy.

    Windows Internet Explorer 6 (dawniej Microsoft Internet Explorer) został wydany 27 sierpnia 2001. Mimo to popularny miś (od MSIE) nadal stanowi bardzo pokaźną część rynku – wg danych z wikipedii w tym roku to nadal prawie 20% polskiego rynku. Blisko dekada w świecie przeglądarek to niemal wieczność. Jako praktykujący webdeveloper bardzo często mam okazję dostrzegać jak przestarzałą przeglądarką jest IE6. Nie zmienia to jednak faktu, że mimo wielu luk i niedoróbek IE6 można zmusić do pracy nawet z bardzo nowoczesnymi stronami. Fenomen tej przeglądarki polega na tym, że nawet jawne błędy (jak choćby niepoprawne interpretowanie stylów CSS) da się wykorzystać na jej korzyść. Jak? Przeczytaj.

     

    AJAX

    AJAX, czyli Asynchroniczny JavaScript i XML to nowoczesna technologia pozwalająca na komunikowanie się skryptu JS z serwerem bez konieczności przeładowania całego dokumentu.

     

    AJAX to tak naprawdę nie jest całkowicie nowa technologia. W ogóle słowo „technologia” jest tu pewną nadinterpretacją. AJAX to nic innego jak sprytne połączenie kilku już wcześniej istniejących technologii. Wszystko tak naprawdę opiera się o jeden obiekt JavaScript – XMLHttpRequest. Ktoś kto zna JS mógłby z powodzeniem tworzyć witryny w oparciu o AJAKSA, choć mógłby o tym nie wiedzieć. Co więcej X z nazwy pochące od XML wcale nie oznacza, że XML jest niezbędny równie dobrze można dane przesyłać jako zwykły tekst albo jako obiekt JSON (co dla mnie jest wygodniejsze).

    Więcej o JSON możesz przeczytać na stronie:

    http://webmade.org/porady/json-js.php

     

    W przypadku nowoczesnych przeglądarek (włączając w to IE7 i nowsze) istnieje banalny sposób na stworzenie obiektu XMLHttpRequest. Wymagany kod prezentuje listing 1.

    {codecitation}var xmlHttp = new XMLHttpRequest();{/codecitation}
    Listing 1. Tworzenie obiektu XMLHttpRequest w nowoczesnych przeglądarkach
     

    Niestety w przypadku Internet Explorera 6 takie coś działać nie będzie. Jednak spokojnie – pamiętaj, że IE 6 to najlepsza przeglądarka na świecie. Można żartobliwie powiedzieć, że potrafi robić nawet to, czego nikt tworząc go nie przewidział. Także tę luke można załatać. Sposób na wykorzystanie AJAX w IE6 jest prezentowany na listingu nr 2.

    {codecitation}// utwórz obiekt XMLHttpRequest

    var xmlHttp = createXmlHttpRequestObject();

     

    // tworzy obiekt XMLHttpRequest

     

    // wykorzystanie wzorca fabryki obiektów

     

    function createXmlHttpRequestObject() {

     

        var xmlHttp;

     

        try {

     

            // to powinno działać w nowoczesnych przeglądarkach

     

            xmlHttp = new XMLHttpRequest();

     

        } catch(e) {

     

            // dla IE 6 i starszych

     

            var XmlHttpVersions = new Array('MSXML2.XMLHTTP.6.0',

     

                        'MSXML2.XMLHTTP.5.0',

     

                        'MSXML2.XMLHTTP.4.0',

     

                        'MSXML2.XMLHTTP.3.0',

     

                        'MSXML2.XMLHTTP',

     

                        'Microsoft.XMLHTTP');

     

            for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) {

     

                try {

     

                    // próbuje utworzyć obiekt XMLHttpRequest

     

                    xmlHttp = new ActiveXObject(XmlHttpVersions[i]);

     

                } catch (e) {}

     

            }

     

        }

     

    return xmlHttp; // zwracamy obiekt

     

    }{/codecitation}

     

    Listing 2. Tworzenie obiektu XMLHttpRequest w IE6

     

     

    Jak można łatwo zauważyć porównując listing 1 i 2, IE6 wymaga sporego nadpisania kodu. Oczywiście ma to wpływ na szybkość działania strony. Dodatkowo warto pamiętać, że IE6 nie ma tak sprawdznego silnika JS jak najnowsze przeglądarki, więc kod ten w IE6 będzie działał wolniej niż w nowszych programach – dlatego choćby warto pobrać z internetu nowszą przeglądarkę. Nie zmiania to faktu, że kod z listingu 2 pozwala wykorzystywać bardzo popularną technologię na naszych stronach bez konieczności rezygnowania z 20% klientów (a więc i 20% potencjalnych zysków). Klient nie zawsze musi korzystać z oprogramowania z jakiego my chcielibyśmy, by on korzystał. Nam za to zawsze zależy na jak największych zyskach.

     

    << RAMKA 1>>

    Frameworki JavaScript

    Jako, że bardzo często webmaster jest postawiony pod ścianą i musi wszystko działać we wszystkim – w tym w archaicznym IE6 – wygodnie korzystać jest z gotowych bibliotek. Przykładem takiej biblioteki może być jQuery, który jest moim ulubionym frameworkiem. Są jednak także i polskie darmowe projekty takie jak mintAjax czy advAjax. Stosowanie gotowych bibliotek oczywiście często powoduje pewne spowolnienie działania naszych skryptów, ale jednocześnie pozwala zapomnieć o problemach z kompatybilności naszych skryptów ze wszystkimi najpopularniejszymi przeglarkami.

    <</RAMKA 1>>

     

     

    PNG

    PNG (ang. Portable Network Graphics) został opracowany jako następca GIF w 1995 roku w wyniku problemów patentowych z formatem GIF. PNG nie jest obciążony patentami. Obsługuje stopniowaną przezroczystość (tzw. kanał alfa) oraz 24-bitową głębię kolorów. Dzięki temu można zapisać bezstratnie dowolne grafiki RGB.

    JavaScript

    Oczywiście IE6 nie ma obsługi kanału alfa. Co nas tak bardzo nie dziwi – przynajmniej mnie. Jednak czego IE nie umie, to się da go nauczyć. Na rysunku 1 widać stronę wyświetlaną przez IE, która nie ma obsługi kanału alfa.

     

    Rysunek 1. Strona wyświetlana w IE6 bez obsługi kanału alfa

     

    Zastosujmy teraz bardzo ciekawy kod JavaScript, który można pobrać ze strony http://www.dillerdesign.com/experiment/DD_belatedPNG. Skrypt ten powoduje, że IE6 potrafi wyświetlać poprawnie kanał alfa. Kod pokazany na listingu 3 wykorzystuje tę bibliotekę do zrenderowania poprawnie strony z grafikami png z kanałem alfa (tzw. półprzezroczystości).

     

    Rysunek 2. Strona wyświetlana w IE6 z obsługą kanału alfa

    {codecitation}<html>
    <head>
        <title>PNG w IE6</title>
        <script type="text/javascript" src="DD_belatedPNG_0.0.8a.js"></script>
        <script type="text/javascript">
            DD_belatedPNG.fix('img, .bg_png');
        </script>
        <style type="text/css">
            .bg_png { background: #fff000 url(1.png) 0 0; }
        </style>
    </head>
    <body>
        <div class="bg_png">
            <img src="2.png" alt="grafika png z przezroczystoscia">
        </div>
    </body>
    </html>{/codecitation}
    Listing 3. Strona wyświetlająca poprawnie grafiki PNG z kanałem alfa.

     

    Filtry

    Microsoft udostępnił specjalne filtry w IE, które pozwalają m.in. wykorzystać kanał alfa w PNG.

    Uważam, że filtry są rozwiązaniem trudniejszym i bardziej inwazyjnym od wyżej pokazanego. Wymagają tworzenia nadmiarowego kodu HTML, o czym trzeba myśleć dużo wcześneij i co może mieć dużo większy wpływ na działanie strony, niż załączenie jednego skryptu JS. Jednak stosując filtry nie musimy się obawiać, że internauta ma wyłączoną obsługę JavaScript. Filtry te są dostępne tylko w IE, więc nie musimy się obawiać, że wpłyną w jakikolwiek sposób na inne przeglądarki.

     

    Jak powiedziałem, musimy nadpisać trochę kodu. Zatem jeśli chcemy wyświetlić jakąś grafikę, to kod będzie wyglądać jak na listingu 4.

    {codecitation}<html>
    <head>
        <title>PNG w IE6</title>
        <style type="text/css">
            body { background: #f00; }
            #png {
                display:inline-block;
                /* załąduj grafikę z kanałem alfa */
                filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='1.png');
            }
            #png img {
                /* nie pokazuj tej grafiki - przezroczystość */
                filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);
            }
        </style>
    </head>
    <body>
        <span id="png">
            <img src="1.png" alt="grafika png z przezroczystością">
        </span>
    </body>
    </html>{/codecitation}
    Listing 4. Strona wykorzystująca filtry do wyświetlania kanału alfa

    Na listingu 4 widać, że dodaliśmy znacznik <span />. Po co? To właśnie on będzie wyświetlał grafikę. Dlatego w regule css dla #png umieściliśmy display: block-inline, choć to jest wymagane tylko jeśli używamy HTML 4.01 strict. Może także spowodować problemy – przesunięcia – w innych przeglądarkach. Dla grafiki ustaliliśmy filtr powodujące, że grafika nie będzie widoczna – opacity=0. Musimy to zrobić, gdyż w przeciwnym razie grafika nadal będzie wyświetlana bez przeroczystości, co popsuje cały efekt o jaki tak zaciekle tu walczymy.

     

    CSS

    Oczywiście – IE 6 potrafi obsługiwać CSS. Oczwywiście – po swojemu. Oczywiście – da się z tym żyć. Co więcej – niektóre jego błędy pozwalają łatać inne! Jak tu nie kochać takiej przeglądarki. Będąc obiektywnym, to IE6 w roku 2001 miał naprawdę nieźle zaimplementowaną obsługę stylów CSS. Jednak od roku 2001 trochę wody w Wiśle upłynęło, dlatego też dzisiaj słusznie wydaje się, że IE6 bardzo słabo na tle nowoczesnycyh przeglądarek sobie z tym radzi. Postaram się pokazać, jak tworzyć kod, który pozwoli nam wyświetlać strony tak samo w IE6 jak i w nowoczesnych programach.

    :hover dla wszystkich elementów

    Arkusze stylów CSS pozwalają na tworzenie reguł dla klas, identyfikatorów, elementów i pseudoelementów. Pseudoklasa hover pozwala na dodanie specjalnej reguły, uaktywnianej w odpowiedzi na jakieś zdarzenie. W przypadku hover reguła zostanie zastosowana po najechaniu na element, do którego jest ona przypisana. Prosty przykład pokazuje listing 5.

    {codecitation}<html>
    <head>
        <title>Użycie pseudoklasy hover</title>
        <style type="text/css">
            div { background: #fff; }
            div:hover { background: #0f0; }
        </style>
    </head>
    <body>
        <div>Najedź na mnie</div>
    </body>
    </html>{/codecitation}
    Listing 5. Wykorzystanie pseudoklasy hover

    Po najechaniu na pojemnik div kolor tła się zmieni. Jednak w przypadku IE 6 taki kod działać nie będzie. Dlaczego? Z tylko sobie znanych przyczyn twórcy IE6 zdecydowali, że lepiej wiedzą o co chodzi w CSS niż konsorcjum W3C i pozwolili przypisywać :hover tylko do znacznika <a/> (hiperłącza). Na pewno wielokrotnie widziałeś na stronach jak kolor linku zmienia się po najechaniu na niego. Istnieje kilka sposób na zasymulowanie :hover w IE6. Pierwszy z nich polega na wykorzystaniu zdarzeń JS: onmouseover i onmouseout. Przykład dający wizualnie taki sam efekt jak ten z listingu 5, prezentuje listing 6.

    {codecitation}<html>
    <head>
        <title>Symulowanie :hover za pomocą zdarzeń JS</title>
    </head>
    <body>
        <div onmouseover="this.style.background='#0f0'" onmouseout="this.style.background='#fff'">Najedź na mnie</div>
    </body>
    </html>{/codecitation}

    Listing 6. Symulowanie :hover za pomocą zdarzeń JS

    << RAMKA 2>>

    Czytelniejszy kod

    Zawsze jest kilka sposobów na rozwiązanie jednego zagadnienia. Tak samo jest w przypadku listingu 6. Może się okazać, że chciałbyś zmienić więcej niż jeden atrybut. Można przypisać całą klasę do danego elementu. Jak już wcześniej wspomniałem, bardzo dobrze radzą sobie z tym frameworki JS. Warto zajrzeć na stronę:

    http://docs.jquery.com/Attributes/addClass

    Jeśli jednak chcesz użyć czystego JS, to zapoznaj się z tą poradą:

    http://webmade.org/porady/zmiana-klasy-css-js.php

    <</RAMKA 2>>

     

    Ten sposób wydaje się być niezłym rozwiązaniem, jednak za każdym razem trzeba ingerować w kod i pamiętać, aby załatać ten konkretny element. Jest to dosyć nużące. Co gorsze – może powodować w przyszłości wiele błędów (konieczność zmian w dużym projekcie może się okazać koszmarnie skomplikowana). Dlatego warto jest zapoznać się z inną metodą. Także wykorzystuje ona JS, jednak łata od razu wszystkie elementy i już więcej nie potrzebujemy się tym przejmować. Autorem tego rozwiąznia jest Peter Nederlof. Kod whatever:hover można pobrać ze strony autora http://www.xs4all.nl/~peterned/csshover.html. W najnowszej wersji (pierwszy raz z tym rozwiązaniem spotkałem się w roku 2003) whatever:hover automatycznie łata :hover, :active i :focus dla IE6, IE7 oraz IE8. Dostarcza także wsparcie dla AJAX, dzięki czemu każdy element zostaje załatany nawet jeśli został dodany do dokumentu już po wczytaniu strony. Zastosowanie tej metody prezentuje listing 7.

    {codecitation}<html>
    <head>
        <title>Symulowanie :hover za pomocą whatever:hover </title>
        <style type="text/css">
            /* zakładam, że pobrałeś plik csshover.htc ze strony autora */
            body { behavior:url(csshover.htc); }
            div { background: #fff; }
            div:hover { background: #0f0; }
        </style>
    </head>
    <body>
        <div>Najedź na mnie</div>
    </body>
    </html> {/codecitation}

    Listing 7. Załatanie :hover za pomocą whatever:hover by Peter Nederlof

    Kod ten dodajemy w css. Atrybut behavior nie jest zgodny ze standardami W3C. Nie dość zatem, że nadpisujemy niepotrzebnie kod, to jeszcze psujemy poprawność naszej strony. To także da się załatać. W dalszej części artykułu pokażę, jak można zaaplikować kod widoczny tylko dla przeglądarek z rodziny Windows Internet Explorer.

     

    wyśrodkowanie

    Dawniej (w strasznych czasach, gdy popularnym było tworzenie stron w HTML-owym spaghetti) treść strony wyśrodkowywało się za pomocą znacznika <center /> (patrz listing 8).

     

    {copdecitation}<center><div>jestem na środku</div></center>{/codecitation}

     

    Listing 8. Stare i niepoprawne wyśrodkowanie treści

     

    Dzisiaj nadal w większości przeglądarek znacznik ten działa, jednak nie należy go już stosować. Powód jest prosty – należy rozdzielać strukturę strony od warstwy prezentacji. Kod HTML – struktura, CSS – prezentacja. Znacznik <center/> był stosowany jedynie dla celów prezentacyjnych.

     

    Dlatego jeśli chcemy wyśrodkować warstwę w IE6 (chodź w tym wypadku wyśrodkujemy wszystko, co jest na stronie) należy zrobić to, co widać na listingu 9.

    {codecitation}<html>
    <head>
        <style type="text/css">
        body { text-align: center; }
        div {
        border: 1px solid;
        width: 50%;
        }
        </style>
    </head>
    <body>
        <div>Ta warstwa będzie wyśrodkowana</div>
    </body>
    </html>{/codecitation}
    Listing 9. Wyśrodkowanie w IE6

    Jednak co w przypadku innych przeglądarek niż IE6? Taka metoda w nich nie zadziała. Dlaczego? Według rekomendacji W3C, atrybut text-align wyśrodkowuje tekst (wyświetkany jako elementy liniowy – inline) zawarty w pojemniku, a nie sam pojemnik wyświetlany jako element blokowy (block).

     

    Dla nowoczesnych przegląarek stosuje się rozwiązanie pokazane na listingu 10.

    {codecitation}<!-- reszta kodu jak na listingu 9 -->
    <style type="text/css">
        div {
            border: 1px solid;
            width: 50%;
            margin: 0 auto 0 auto; /* można zapisać krócej: margin: 0 auto; */
        }
    </style>{/codecitation}
    Listing 10. Wyśrodkowanie w nowoczesnych przeglądarach

    << RAMKA 3>>

    Skrócony zapis atrybutów w CSS

    W tym artykule kilkukrotnie zobaczyć mogłeś, że stosuję jakieś skrócone zapisy atrybutów w CSS. Jak choćby margin: 0 auto; co naczy margines górny/dolny 0, prawy/lewy automatycznie. Więcej na ten temat możesz przeczytać na stronie:

    http://yarpo.republika.pl/css2/pliki/skroty.htm

    <</RAMKA 3>>

     

    Skoro wiemy już jak wyśrodkować pojemnik w IE6, oraz wiemy jak wyśrodkować go w nowoczesnych przeglądarkach, to jeszcze warto się dowiedzieć jak przygotować kod działający we wszystkich przeglądarkach – listing 11.

    {codecitation}<!-- reszta kodu jak na listingu 9 -->

     

    <style type="text/css">

     

    /* IE6 wyśrodkuje wszystko, nowoczesne przeglądarki tylko tekst*/

     

    body { text-align: center; }

     

    div {

     

        border: 1px solid; width: 50%;

     

        text-align: left; /* treść w pojemniku będzie dosunięta do lewej */

     

        margin: 0 auto 0 auto;

     

    }

     

    </style> {/codecitation}

     

    Listing 11. Wyśrodkowanie we wszystkich przeglądarach

     

     

    Czyli, jak wynika z przykładu, starczy połączyć obie metody.

    hacki

    Czasem nie starczy po prostu dodać kilka dodatkowych linii widocznych dla wszystkich przeglądarek. Zdarzają się przypadki, w których niezbędna staje się możliwość podawania dwóch różnych kodów: jednego dla nowoczesnych przeglądarek, drugiego dla IE6. Nanjpierw pokażę jak ukrywać kod przed IE6 – listing 12.

    {codecitation}<style type="text/css">
        /* box model hack */
        table {
            width: 100px;
            voice-family: "\"}\""; /* tu się gubi IE6 i dalej nie czyta */
            voice-family: inherit; /* nowoczesne przeglądarki wciąż tu są */
            width: 200px; /* i zapamiętają inną wartość */
        } /* tu IE6 dalej będzie czytał */

        /* commented backslash hack */
        table {
            właściwości: wartości czytane przez wszystkie przeglądarki;
        }

        /*
        Komentarz wieloliniowy, jednak przez dodanie '\' na końcu MSIE przeoczy
        koniec i będzie uważał cały pozostały kod za komentarz
        \*/

        table {
            właściwości: czytane tylko przez nowsze przeglądarki;
        }

        /* Komentarz wieloliniowy zamknięty normalnie
        MSIE będzie uważał zamknięcie tego komentarza jako zamknięcie poprzedniego,
        a otwierające '\*' zignoruje */

        /* child selector hack */
        table {
            właściwości: wartości czytane przez wszystkie przeglądarki;
        }

        /* tego IE6 nie zrozumie*/
        body > table {
            właściwości: czytane tylko przez nowsze przeglądarki;
        }

        /* attribute selector hack */
        p#nazwa_id { color: #000; } /* to rozpozna każda przeglądarka */
        p[id='nazwa_id'] { color: #0f0; } /* to rozpoznają tylko nowoczesne przeglądarki i nadpiszą wcześniej przypisane wartości */
    </style>{/codecitation}
    Listing 12. Hacki na IE6 – ukrywanie kodu

    Czasem jednach chciałoby się podać wręcz osobny plik ze stylami CSS. Także na to znajdą się sposoby. Pierwszy wymagać będzie JS – listing 13.

    {codecitation}<head>
    <script type="text/javaScript">
        if (-1 != navigator.userAgent.indexOf("MSIE")) {
            // użytkownik używa IE
            document.write('<link rel="stylesheet" type="text/css" href="msie.css">');
        }
    </script>
    </head>{/codecitation}
    Listing 13. Dodawanie osobnego arkusza stylów CSS tylko dla IE

    Głównym minusem tego rozwiązania jest to, że każda przeglądarka będzie musiała wykonać ten skrypt. Nie jest może zbyt rozbudowany. Jednak zawsze to jakieś obciążenie klienta – w tym wypadku całkowicie niepotrzebne dla nowoczesnych przeglądarek. Co gorsze, internauci z IE6, którzy z różnych przyczyn mają wyłączoną obsługę JS zobaczą stronę bez tego arkusza stylów. Nieciekawie. Jednak i na to IE ma sposoby!

     

    rozmiary pojemników

    Podobnie jak w innych wypadkach tak i w przypadku wyliczania rozmiarów pojemników IE6 nie sprawuje się tak jak powinien (wg zaleceń W3C). Na szczęście nie jest tak źle – można to załatać. Ale na tym etapia tego artykułu powinieneś już być na to gotowym.

     

    Może najpierw zobaczmy jak wyliczane są rozmiary w nowoczesnych przeglądarkach.

    Załóżmy, że mamy taki kod jak na listingu 16.

    {codecitation}div {
        width: 200px;
        padding: 10px;
        margin: 10px;
        border: 2px solid #000;
    }{/codecitation}
    Listing 16. Rozmiary pojemników

    W przypadku nowoczesnych przeglądarek ten pojemnik będzie miał rozmiar wyliczny według wzoru:

    X = width + paddingLeft + paddingRight + borderLeft + borderRight = 200 + 10 + 10 + 2 + 2 = 200 + 20 + 4 = 224 [px]

    Niestety – IE6 nie rozumie, jak powinien to robić. Robi to w następujący sposób:

    X = width = 200 [px]

    Wszystkie odstępy (padding) i obramowania (border) są jakby włączane w to, pomniejszając de facto rzeczywistą szerokość pojemnika.

    Warto tu wspomnieć jeszcze o marginesach. Nie zaliczyłem ich w poczet szerokości. Być może niesłusznie, wszak zajmują miesjce na stronie. Jednak nie wpływają na to co na stronie widać bezpośrednio (nie wydłużają tła, nie rozciągają obramowania pojemnika, do którego są przypisane). Marginesy jednak są przez IE brane niezależnie od szerokości.

    X = width = 200 + marginLeft + marginRight [px]

    Dobrze, skoro już wiemy jak to się wylicza i skoro wiemy jak ukrywać kod przed niektórymi przeglądarkami, to zobaczmy jak załatać tę lukę. Kod na listingu 17 rozwiązuje problem z nieprawidłowymi wyliczeniami.

    {codecitation}div {
        width: 224px;
        padding: 10px;
        margin: 10px;
        border: 2px solid #000;
    }
    /* reguła widoczna tylko dla nowoczesnych przeglądarek */
    body>div { width: 200px; } {/codecitation}
    Listing 17. Rozmiary pojemników – załatany na IE6

    I po bólu. Po raz kolejny okazało się, że IE6 potrafi wszystko. Co prawda musimy napisać trochę więcej kodu, ale wszystko działa. Trochę wolniej, webmaster się naczęczy, później się okaże, że ta łata gdzieś strasznie źle daje w kość... Jednak – póki co – działa.

    Warunkowe komentarze – kod tylko dla IE

    W kodzie HTML można umieszczać komentarze. Ich podstawowa konstrukcja pokazana jest na listingu 14.

    {codecitation}<head>

     

        <!--[if IE]>

     

        można go użyć w seksji head – wstawiając tu np. style CSS lub plik s JS

     

        <![endif]-->

     

    </head>

     

    <body>

     

        <!--[if IE]>

     

        Można też wstawić go w seksji body – wstawiając np. span (patrz listing 4)

     

        <![endif]-->

     

    </body> {/codecitation}

     

    Listing 14. Komentarze warunkowe

     

     

    Ale spokojnie – to jeszcze nie koniec. Dzięki warunkowym komentarzom można podać kod dla konkretnej wersji IE! Zobacz listing 15.

    {codecitation}<!--[if IE]>
        Wszystkie IE
    <![endif]-->

    <!--[if IE X.Y]>
        Odnosi się do IE w wersji X.Y, np. X=6, Y=0 => IE 6.0
    <![endif]-->

    <!--[if gt IE 6]>
        Dotyczy wersji nowszych od podanej.
    <![endif]-->

    <!--[if gte IE 5]>
        Dotyczy wszystkich IE w wersji większej lub podanej.
    <![endif]-->

    <!--[if lt IE 6]>
        Dotyczy wszystkich IE mniejszych od podanej wersji.
    <![endif]-->

    <!--[if lte IE 5.5]>
        Dotyczy mniejszych lub równych podanej wersji.
    <![endif]-->

    <![if !(IE 7)]-->
        Różne od podanej wersji
    <![endif]-->

    <![if (gt IE 5)&(lt IE 7)]-->
        Operator & - logiczny AND – to i to.
    <![endif]-->

    <![if (gt IE 5)|(lt IE 7)]-->
        Operator | - logiczne lub – to lub to
    <![endif]-->{/codecitation}
    Listing 15. Komentarze warunkowe – z wykrywaniem wersji IE

    Możesz się dziwić skąd się wzięły skróty typu lt, gt, lte, gte. Oto krótkie wyjaśnienie:

    • lt [ang. less than] – mniejsze od

    • lte [ang. less or equal than] – mniejsze lub równe od

    • gt [ang. greater than] – mniejsze od

    • gte [ang. greater or equal than] – mniejsze lub równe od

     

    Skoro potrafimy już ukrywać kod przed IE oraz przed nowoczesnymi przeglądarkami, możemy dalej łatać niedoskonałości IE6 w dziedzinie stylów CSS.

    XHTML w IE

    XHTML w IE6 jest pewnym problemem. Po pierwsze IE6 nie obsługuje poprawnie XHTML. Dlatego, jeśli bardzo ważną grupą twoich klientów są użytkownicy IE6 – nie rób stron w XHTML 1.0 ani nowszych, ale w HTML 4.01. Różnice między tymi standardami nie są takie wielkie – XHTML jest tak naprawdę okrojonym i trudniejszym dla webmastera HTML-em. Na dobrą sprawę sam w sobie XHTML nie daje niczego wspaniałego. Niepoprawna strona w HTML przepisana na XHTML nie zacznie być poprawna. Można nawet powiedzieć, że będzie jeszcze gorzej napisana. X zobowiązuje i utrudnia – choćby załączanie skryptów w ciele strony, czy stylów css. XHTML to dobra rzecz – jeśli się wie, jak i po co go używać. W przeciwnym razie HTML 4.01 nadal jest dobrym i wartym uwagi językiem.

     

    << RAMKA 4>>

    XHTML vs. HTML

    Ciekawe stanowisko nt. XHTML-a przedstawia na swojej stronie porneLa.

    http://pornel.net/xhtml

    Wartym zauważenia jest moda na skrypty negocjacji. Według mnie – jeśli musimy wysyłać coś do IE6 i być pewnymi, że będzie do wyświetlane poprawnie, to lepiej po prostu użyć HTML. Ty jednak możesz mieć inne zdanie, zapoznaj się zatem z przykładowym skryptem negocjacji

    http://pl.wikipedia.org/wiki/XHTML#Negocjacja_zawartości

    <</RAMKA 4>>

     

    Jeśli jednak nadal upierasz się przy stosowaniu XHTML-a, to dla IE6 wysyłaj go jako text/html, a nie application/xhtml+xml. Istotne są nagłowki ustawiane przez serwer (domyślnie najczęściej wysyłane jest text/html). Ustawianie typu zawartości w sekcji head nie ma tu większego znaczenia. Na listingu 18 pokazałem kod XHTMl, który zostanie wyświetlony także w IE6.

     

    {codecitation}<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
    <head>
        <title>Dokumentu zgodnego z XHTML 1.0 Strict</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
        <link rel="stylesheet" type="text/css" href="style.css" />
    </head>
    <body></body>
    </html>{/codecitation}
    Listing 18. Szablon strony XHTML działającej w IE6

     

    Jednak w takim wypadku dokument ten jest traktowany nadal jako HTML. Po co zatem się okłamywać – używaj HTML-a jeśli nie masz konkretnego powodu na stosowanie XHTML-a (wykorzystywanie innych XML-owych języków, np. MathML, SVG itp.). XHTML sam z siebie nie jest receptą na złą stronę. Najczęściej nie wykorzystuje się niczego, co daje XHTML.

     

    Oto lista czynności, które należy wykonać, aby nasza strona napisana w XHTML mogła być wyświetlona w IE6:

    • Znaczniki pustych elementów powinny zawierać dodatkową spację przed ukośnikiem, np. zamiast <br/> powinno być <br />

    • Należy unikać używania zminimalizowanej formy (np. <p/>) w przypadku pustych elementów, które mogą mieć zawartość; np. stosowanie znacznika

    • {codecitation}<script type="text/javascript" src="skrypt.js"/>{/codecitation}

    • w dokumencie przesyłanym jako HTML prowadzi zwykle do niewyświetlenia reszty dokumentu; należy w tym wypadku używać
      {codecitation}<script type="..." src="..."></script> {/codecitation}

    • Obok lub zamiast instrukcji xml-stylesheet należy odwoływać się do zewnętrznych arkuszy stylów przy pomocy obsługiwanego w HTML-u znacznika
      {codecitation}<link rel="stylesheet" ... /> {/codecitation}

    •  

      Objęcie wewnętrznych skryptów i stylów sekcją CDATA może powodować ich błędne działanie; należy w związku z tym zakomentować znaczniki początku i końca sekcji CDATA, np.:
      {codecitation}<style type="text/css">/* <![CDATA[ */ arkusz stylów /* ]] >*/</style>{/codecitation}

       

    • Oprócz typowej dla XML deklaracji języka za pomocą atrybutu xml:lang, należy też używać zgodnego z HTML atrybutu lang.

    • Dla kompatybilności z IE6 należy pomijać deklarację XML — powoduje to w nim przejście w tryb wstecznej zgodności. Nie ma sensu jednak dodawać jej dla innych przeglądarek (skryptami po stronie serwera), gdyż i tak jest ona nieobowiązkowa. Strona musi być zakodowana jako UTF-8/USC-*, a jeżeli jest zakodowana inaczej, musimy odpowiednią informację dodać do nagłówka Content-Type (np. kodem PHP: header('Content-Type: '.$mime.'; charset=iso-8859-2');, gdzie $mime to ustalony w wyniku negocjacji zawartości typ pliku. Zobacz: http://kurs.browsehappy.pl/HTML/Wysylanie ).

    • W DOM należy używać createElementNS zamiast createElement i trzeba uważać na wielkość liter (DOM HTML podaje nazwy elementów wielkimi literami, DOM XML zachowuje wielkość liter i w XHTML dopuszcza tylko małe litery).

     

    Pamiętaj jednak, że nawet nowoczesne przeglądarki gdy dostaną nagłówek o typie pliku text/html będą traktować kod jako HTML z jakimiś dziwnymi ukośnikami. Więc może po prostu póki co lepiej używać poprawnego HTML niż możliwego do wyświetlenia XHTML-a.

     

    << RAMKA 5>>

    Co jeśli nie XHTML?

    XHTML już istnieje dobrych kilka lat. Sam często go używam. Choć kod tak naprawdę mógłby wyglądać równie dobrze i być równie łatwy w utrzymaniu, gdybym napisał go w HTML 4.01 strict. Gdy w roku 2001 wydano rekomendację dla XHTML 1.0, HTML miał odejść w zapomnienie. Jednak nie do końca się tak stało. XHTML 2.0, który miał być totalną rewolucją, okazał się totalnym niewypałem (w moim odczuciu głównie przez brak kompatybilności wstecznej). Jeszcze żadna znana mi przeglądarka nie zaimplementowała tego standardu, mimo że od publikacji minęły już 4 lata. Rok temu pojawił się nowy standard, który może okazać się strzałem w 10. Jest to HTML 5. Więcej na ten temat możesz znaleźć na stronie

    http://www.w3schools.com/tags/html5.asp

    Mnie do tej pory najbardziej zainteresowały możliwości znacznika <canvas/>, o czym więcej na stronie

    https://developer.mozilla.org/en/Canvas_tutorial

    <</RAMKA 5>>

     

    Podsumowanie

    Internet Explorer 6 to stara i zła przeglądarka. Życie webmasterów byłoby dużo prostsze, gdyby nie ten zabytek. Jednak nadal jest ważną częścią rynku i nadal w projektach komercyjnych trzeba uwzględniać braki tej przeglądarki. Na szczęście – w przeciwieństwie do innych przeglądarek – IE6 posiada mechanizmy pozwalające go skutecznie łatać. Mam nadzieję, że ten krótki artykuł pozwolił ci zobaczyć, iż prawie nigdy nie można się poddać. Google zawsze jest twoim przyjacielem i wierz mi – większość problemów, na kóre się w życiu natkniesz już zostało rozwiązanych (albo udowodniono, ze rozwiązać ich się nie da). Będąc jednak szczerym... Czy ktokolwiek przeglądał nowoczesne witryny internetowa za pomocą innej przegladarki z roku 2001? Jestem pewien, że działałyby gorzej. Internet Explorer 6 jest niezwykłą przeglądarką stron www – głównie dlatego, że jego błędy można wykorzystać jako jego zalety. Tym optymistycznym akcentem zakończę. Życzę i sobie i Wam, aby IE6 jak najszybciej znalazł sobie jakieś przytulne miejsce w muzeum przeglądarek.

     

    <<RAMKA 6 – może być gdziekolwiek w trakcie artykułu. Jeśli się nie znajdzie dla niego miejsce, można zrezygnować>>

    JavaSctipt to NIE jest Java

    Niestety bardzo często ludize mylą JavaScript z Javą. Trzeba przyznać, że nazwa sugeruje, że są to spokrewnione języki. Jednak są dwa absolutnie różne języki programowania. Zbieżność nazw powoduje często wiele nieporozumień. Jeśli masz na myśli skrypt JavaScript, to nazywaj to skryptem JavaScript (określenie skrypt Javy nie jest synonimem, choć określenie takie spotkałem ostatnio nawet w książce poważnego polskiego wydawnictwa). Java także czasem jest wykorzystywana na stronach www w formie appletów. Jeśli masz na myśli applet napisany w języku Java, nazywaj to appletem Javy.

    <</RAMKA 6>>

     

    Read more
    Zmieniony ( sobota, 21 listopada 2009 19:06 )

    Strona 5 z 5
    << Początek < Poprzednia 1 2 3 4 5 Następna > Ostatnie >>