Deprecated: Assigning the return value of new by reference is deprecated in /home/tudiro/public_html/wp-settings.php on line 472

Deprecated: Assigning the return value of new by reference is deprecated in /home/tudiro/public_html/wp-settings.php on line 487

Deprecated: Assigning the return value of new by reference is deprecated in /home/tudiro/public_html/wp-settings.php on line 494

Deprecated: Assigning the return value of new by reference is deprecated in /home/tudiro/public_html/wp-settings.php on line 530

Deprecated: Assigning the return value of new by reference is deprecated in /home/tudiro/public_html/wp-includes/cache.php on line 103

Deprecated: Assigning the return value of new by reference is deprecated in /home/tudiro/public_html/wp-includes/query.php on line 21

Deprecated: Assigning the return value of new by reference is deprecated in /home/tudiro/public_html/wp-includes/theme.php on line 623
Tutorial Javascript/CSS: Fade pe poze | Tudi.ro

Tutorial Javascript/CSS: Fade pe poze

Stau de ceva vreme cu “Design” in titlu si in tagline, dar pana acum n-am prea scris nimic in sensul asta. De fapt, pentru ca sunt doar un designer amator, o sa ma limitez probabil in sectiunea asta sa scriu mici tutoriale grafice, hackuri de CSS/Javascript si Flash. Pentru inceput am un hack CSS/JS, pe care l-am si implementat pe site (butoanele alea sexy de la sfarsitul postului): cum sa creezi un efect de fade-in/fade-out pe o poza, la hover.

Ok, hai sa iau pe post de cobai o poza cu moaca mea:

Pasul 1 – Javascript

Daca aveti deja un fisier Javascript extern pe blog, puteti sa copiati functiile de mai jos acolo, dar daca nu, creati un fisier .js, sa ii zicem effects.js, si dati copy/paste la codul de mai jos:

function opacity(id, opacStart, opacEnd, millisec) {
//speed for each frame
var speed = Math.round(millisec / 100);
var timer = 0;

//determine the direction for the blending, if start and end are the same nothing happens
if(opacStart > opacEnd) {
for(i = opacStart; i >= opacEnd; i–) {
setTimeout(”changeOpac(” + i + “,’” + id + “‘)”,(timer * speed));
timer++;
}
} else if(opacStart < opacEnd) {
for(i = opacStart; i <= opacEnd; i++)
{
setTimeout(”changeOpac(” + i + “,’” + id + “‘)”,(timer * speed));
timer++;
}
}
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
var object = document.getElementById(id).style;
object.opacity = (opacity / 100);
object.MozOpacity = (opacity / 100);
object.KhtmlOpacity = (opacity / 100);
object.filter = “alpha(opacity=” + opacity + “)”;
}

E un hack pe care l-am gasit mai demult pe net, dar din pacate nu pot da sursa pentru ca nu o mai tin minte (si la o cautare a codului, apare pe vreo 20 de siteuri diferite). Prima functie are 4 parametrii:

Id – id-ul obiectului care foloseste functia
opacStart – valoarea initiala a opacitatii
opacEnd – valoarea finala a opacitatii, dupa fade
millisec – timpul in care se produce fade-ul, in milisecunde

Nu ne bagam mai mult in cod, parametrii de mai sus e important sa intelegeti ce fac, pentru ca o sa ii folosim imediat cand chemam functia. A doua functie, changeOpac are rolul de a optimiza javascriptul pentru toate browserele (pentru ca nu toate interpreteaza la fel filtrul de opacitate).

Apoi, deschideti header.php in directorul temei si scrieti (copiati) asa:

<script type=”text/javascript” src=”<?php bloginfo(’template_directory’); ?>/effects.js”></script>

Evident, inlocuiti effects.js cu fisierul vostru de javascript, daca nu se cheama asa. Bun, acum daca totul a fost facut corect, putem chema functia de fade de pe orice pagina a site-ului.

Pasul 2 – CSS

Deschideti fisierul CSS al temei (style.css de obicei) si scrieti asa:

.opac {
opacity: .4;
-moz-opacity: .4;
filter: alpha(opacity=40);
}

Inlocuiti opacity=40 cu valoarea intiala de opacitate pe care vreti sa o dati imaginii (preferabil ar fi ca valoarea din CSS sa fie aceeasi cu cea a parametrului opacStart pe care il setam imediat). Salvati si uploadati CSS-ul.

Pasul 3 – Poza

Deschideti pagina unde vreti sa apara efectul, cautati poza si dati-i urmatorii parametrii in tag-ul <img> (evident inlocuiti cu datele voastre):

<img id=”moaca” src=”/adresapozei/moaca.jpg” alt=”moaca” class=”opac” onMouseOver=”javascript:opacity(’moaca’, 40, 100, 300);” onMouseOut=”javascript:opacity(’moaca’, 100, 40, 300);” />

Trebuie musai sa ii dati un ID unic (in cazul asta “moaca”) si sa ii aplicati clasa “opac” pe care am definit-o mai devreme in CSS. Cu onMouseOver si onMouseOut creem efectul la hoverul mouseului si cu javascript:opacity(id, opacStart, opacEnd, millisec) chemam functia care am definit-o in effects.js.

opacStart e bine sa fie, dupa cum am zis, la aceeasi valoare cu cea care am dat-o in CSS la filter: alpha(opacity=40); si parametrul millisec undeva intre 1 si 2000 (1=instant, 2000 fade pe durata a 2 secunde). Voila (hover pe poza):

moaca

Jucati-va eventual cu valorile si vedeti care cum arata, pana gasiti fade-ul perfect. Ah si inca o chestie, daca nu va iese ceva, va rog nu imi dati mail, scrieti aici un comment, mai usor rezolvam :) Seara faina!


  1. 131 Layer Styles Gratuite pentru Photoshop
  2. Se Cauta Web Developer
  3. Cum te tratezi de writer’s block
  4. Cum sa cresti marimea Speed Dial-ului in Opera
  5. Duplicate Content si Cum Ne Ferim de Plagiat

6 Responses to “Tutorial Javascript/CSS: Fade pe poze”

  1. Razvan GirmaceNo Gravatar  Says:
    October 9th, 2008 at 10:26 am

    Ai incercat MooTools pentru efectul asta ? Cam in 3-4 linii de cod faci acelasi lucru si fara sa adaugi in html onmouseover si onmouseout.

  2. TudiNo Gravatar  Says:
    October 9th, 2008 at 11:08 am

    Nu, sincer nu stiam de MooTools, acum am auzit prima data de el.

  3. totoNo Gravatar  Says:
    October 9th, 2008 at 11:30 am

    3 - 4 linii de cod, e adevarat, insa cu ditamai js-urile incarcate in prealabil… Bine, si efectele sunt pe masura, mult mai diverse, variate, etc… Dar nu-i rau nici asa pentru cine doreste doar un fade… :)

  4. TudiNo Gravatar  Says:
    October 9th, 2008 at 11:35 am

    Eu in general prefer sa lucrz cu hackuri, decat cu frameworkuri, poate e chestie de obisnuinta. Oricum nici codul de mai sus nu e enorm: 2 functii JS, 3 linii de CSS si 2 mouseEvents pe poza (care ar putea fi si 1 un singur mouseEvent, daca nu adaugam si fade-out-ul).

    O sa incerc totusi MooTools, pare interesant. Mersi Razvan! :)

  5. Razvan GirmaceNo Gravatar  Says:
    October 9th, 2008 at 11:52 am

    Uite de exemplu pe http://www.dofollow.ro am implementat un fade effect in 2 linii de JS si fara sa adaug nimic in HTML de genul onclick,onmouseover etc.

    $$(’#items div.item’).addEvent(’mouseenter’,function(e){ this.addClass(’hover’); });
    $$(’#items div.item’).addEvent(’mouseleave’,function(e){ this.removeClass(’hover’); });

    Daca vrei animat, in loc de addClass/removeClass, inlocuiesti cu 2 linii de cod pentru obiectul Fx.Tween si gata (chiar si o linie) ca suporta functia .start() pe noul obiectul.

  6. Javascript TutorialsNo Gravatar  Says:
    August 26th, 2009 at 6:01 pm

    Salut

    sper sa nu te superi, dar as vrea sa recomand un site de tutoriale JavaScript.

    http://www.freeitsolutions.com/javascript

    Are foarte multe tutoriale prin care poti sa faci diverse cautari. Adauga-l te rog la lista de siteuri utile daca iti place.

    Mersi

Leave a Reply