Reklama która nie denerwuje?!

Jak większości pewnie wiadomo, dzisiaj na stronach panoszą się flashowe reklamy przykrywające treść strony, na których brak jest przycisku do ich zamykania lub przycisk ten jest praktycznie niewidoczny. W dodatku, gdy przewijamy stronę te reklamy podążają za nami. I jak tu się nie denerwować? Przeglądając dzisiaj sieć w poszukiwaniu dobrego radia internetowego natknąłem się na ciekawą formę reklamy. Chciałem się tym odkryciem podzielić z innymi, ponieważ nie dość, że reklama ta nie przeszkadzała w oglądaniu strony, to w dodatku przykuła mój wzrok. Otóż na stronie niemieckiego radia Regenbogen w prawym górnym rogu można było zobaczyć efekt zagiętej kartki, spod której wystawał kawałek innej treści:

Zwinięta reklama w górnym prawym rogu strony

Gdy najechałem myszką na to zagięcie, strona się płynną animacją jeszcze bardziej zawinęła i ukazała pozostałą treść reklamy.

Rozwinięta reklama

Gdyby właśnie w ten sposób działały reklamy na stronach, to nie byłoby powodów do narzekań.

Jak ta reklama została zrobiona?

Moja ciekawość wzięła górę i musiałem zobaczyć jak ta reklama została przygotowana. Poniżej prezentuję wyniki moich "badań".

Przygotowujemy niezbędne materiały

Jako, że kompletnie nie znam flasha, aby stworzyć przykładową stronę, pozwoliłem sobie zapożyczyć ze strony radia dwa pliki swf, które nazwałem sobie small.swf oraz big.swf. Następnie przygotowałem dwa pliki graficzne w formacie jpg o rozmiarach 100x100 oraz 650x650 pikseli. Mniejszy będzie wyświetlany, gdy reklama będzie zwinięta, większy, gdy rozwiniemy reklamę.

Dokument HTML

Teraz, gdy mamy niezbędne materiały, możemy przystapić do stworzenia przykładowej stony. Majstrujemy sobie przykładowy, dowolnie wyglądający szablon. Na koniec dodamy do dokumentu, przez samym zamknięciem znacznika </body> poniższy kod:


<object type="application/x-shockwave-flash" data="small.swf?ico=small.jpg" width="100" height="100" id="small">
	<param name="movie" value="small.swf?ico=small.jpg" />
	<param name="wmode" value="transparent" />
	<param name="allowScriptAccess" value="always"/>
	<param name="FlashVars" value="ico=small.jpg"/>
</object>
<object type="application/x-shockwave-flash" data="big.swf?big=big.jpg&ad_url=http%3A//rafael.jogger.pl" width="650" height="650" id="big">
	<param name="movie" value="big.swf?big=big.jpg&ad_url=http%3A//rafael.jogger.pl" />
	<param name="wmode" value="transparent" />
	<param name="allowScriptAccess" value="always"/>

	<param name="FlashVars" value="big=big.jpg&ad_url=http%3A//rafael.jogger.pl"/>
	<param name="swliveconnect" value="true" />
</object>

Cały kod powienien być w miarę zrozumiały. Ważne są dla nas szczególnie wartości atrybutów data oraz value parametrów movie i FlashVars. Wartość atrybutu data oraz parametru movie ustawiamy na ścieżkę do pliku flasha, np. small.swf wraz z parametrem będącym ścieżką do obrazka, który ma zostać wyświetlony na zwiniętej reklamie. W naszym przykładzie będzie to small.swf?ico=small.jpg. Jako wartość parametru Flashvars podajemy tylko sam Query string, np. ico=small.jpg. Mniejszy plik swf oczekuje w Query stringu parametru ico, który jest ścieżką do pliku, graficznego, który chcemy wyświetlić. Druga animacja Flash oczekuje już dwóch parametrów w Query stringu, o nazwach big - będący ścieżką do dużego obrazka, który chcemy wyświetlić na rozwiniętej reklamie - oraz ad_url - stanowiącego adres strony, na który chcemy przekierować użytkownika, kiedy ten kliknie w reklamę.

Arkusz stylów

Mamy już dokument z reklamą, trzeba teraz reklamę umieścić w rogu strony. Posłużymy się tutaj arkuszem stylów, który przedstawiam poniżej:


#small, #big {
	position: absolute;
	top: 0;
	right: 0;
}
#big {
	top: -1000px;
}

Podmiana animacji po najechaniu myszką

Nasza reklama znajduje się już we właściwym miejscu. Większy z plików wyrzuciliśmy poza ekran (top: -1000px). Teraz musimy napisać dwie funkcje JavaScriptowe, do których odwołują się wstawione animacje Flash. Funkcje musimy nazwać sizeup987 oraz sizedown987.


function sizeup987(){
	document.getElementById('small').style.top='-1000px';
	document.getElementById('big').style.top='0px';
}
function sizedown987(){
	document.getElementById('small').style.top='0px';
	document.getElementById('big').style.top='-1000px';
}

To wszystko. Teraz możemy cieszyć się działającą reklamę.

Uwagi końcowe

Niektórzy mogą zauważyć, że zaraz po załadowaniu strony i pierwszych najechaniu myszką na małą reklamę, ta znika i po chwili pojawia się wersja z animacją rozwinięcia. Wynika to z faktu, że plik swf musi załadować najpierw większy z plików graficznych. Nie jest to robione przy starcie strony, ponieważ automatycznie wyrzucamy obiekt poza ekran, a przeglądarki zwykle nie ładują grafik/zawartości niewidocznych elementów. Na stronie radia Regenbogen poradzono sobie z tym problemem w ten sposób, że nie wyrzucamy elementu poza ekran w arkuszu stylów, tylko wykonujemy to skryptowo. Pod elementem <object> wstawiamy zatem kolejny skrypt o treści:


setTimeout('try{document.getElementById("big").style.top = "-1000px";}catch(e){}',1000);

co przedstawiłem na drugiej stronie testowej o kodzie nieco bardziej niezgodnym ze standardami.


Kategorie: WWW 27 kwietnia 2007, 16:02:58 10 komentarzy

Komentarze dla notki “Reklama która nie denerwuje?!”

  1. Winhelp - 27 kwietnia 2007, 16:19:14

    Genialne :) Jestem tylko ciekaw sytuacji, gdy ktoś nie ma flasha albo wyłączył JS :)

  2. Rafael - 27 kwietnia 2007, 16:22:56

    Zawsze można całość wykonać przy użyciu JSa. Zresztą i tak większość chyba dzisiaj korzysta z SWFObject do osadzania flasha. W skrócie cała procedura polegałaby na wykryciu JSem wtyczki flasha (ew. jej wersji), dynamiczne utworzenie elementów <object> z animacjami i odpowiednie ich ulokowanie na stronie. Wszystko da się zrobić ;-)

  3. iss - 27 kwietnia 2007, 16:52:10

    Na Fx z flashblockiem strona staje się nieużywalna po aktywacji tych reklam.
    BTW Na środku wisi też zwykła denerwująca flashowa reklama.

  4. Rafael - 27 kwietnia 2007, 16:58:48

    BTW Na środku wisi też zwykła denerwująca flashowa reklama

    Tak, na stronie tego radia jest wiele reklam, ale jednak skupiłem sie tylko na tej jednej.

  5. Ktos - 27 kwietnia 2007, 17:00:37

    iss, u mnie działa normalnie.

    A swoją drogą fajne całkiem, ale sie chyba nie przyjmie jako sposób reklamowy – zbyt mało inwazyjne ;-)

  6. BeteNoire - 27 kwietnia 2007, 18:07:33

    Włączyłem JS i Flash i nie widzę żadnej zagiętej kartki. Firefox 2.0.0.3.

  7. Rafael - 27 kwietnia 2007, 18:43:13

    Też mam Firefoksa 2.0.0.3 i wszystko działa. Nawet bez JSu pierwsza z przykładowych stron powinna wyświetlić animacje… upewnij się jeszcze raz, że masz wtyczkę flasha, czy nie masz jakiegoś flashblocka, czy adblocka.

  8. Big_Z - 08 maja 2007, 01:59:03

    Wszedłem na tą stronę radia. Pod moim Linuksem i Operą zobaczyłem wielki, purpurowy kwadrat w rogu strony, który mi oczywiście zasłaniał część właściwą.

  9. Rafael - 11 maja 2007, 13:08:12

    Faktycznie, sprawdziłem pod Linuksem. No cóż, przypuszczam, że wynika to z jakichś ograniczeń pluginu flasha pod Linuksa. Chyba, że ktoś zna dokładniejszy powód

  10. przemek - 24 lipca 2007, 15:42:53

    przy mniejszej rodzielczości ta reklama z prawej wchodzi na srodkowy flash… jak więc zrobić by ta zawijana kartka była na wierzchu przed wszystkimi innymi flash ktore osadzono na stronie ?

Pozostaw komentarz

Copyright © 2003-2011 Rafał Kukawski. Powered by Jogger | RSS Subskrybuj