Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    249

    aiutino per un piccolo script

    ciao a tutti, premesso che conosco pochissimo javascript vi chiedo un piccolo aiuto

    vorrei creare un menu fatto di immagini che al passaggio del mouse si schiariscono e ci compare all'interno o sotto la foto un testo
    per le immagini ho fatto così:
    <a class="menufoto"href="xxx...">
    [img]images/foto.png[/img]
    </a>
    dove nel css ho:
    .chiaro {opacity:1;
    filter:alpha(opacity=100);
    }
    .acuro {opacity:0.4;
    filter:alpha(opacity=40);
    }

    per il testo ho cercato di fare una funzione mostra e una nascondi con display none ma non ci sono riuscito e non mi funziona nulla, come posso fare?
    grazie in anticipo a chi mi vuole aiutare, roberto

  2. #2
    Ci sono tanti modi per fare il cosiddetto toggling di un layer dato un certo evento (toggle= mostra layer a, nascondi layer b, e viceversa). guarda un po' se questo può esserti di aiuto o spunto: Javascript Toggle Layers By Class Names Or Id. Show Some Hide Others Or Reverse

  3. #3
    Ciao! allora io ti consiglierei di dividere "il problema" in due compartimenti stagni.

    Mi spiego meglio:

    Il primo problema e' quello di fare illuminare l'immagine al passaggio del mouse con jquery...

    Per questo io userei la proprieta' .css("opacity","0.5") quando il mouse non e' sull'elemento e .css("opacity","1.0") quando il mouse ci passa sopra.

    Guarda la demo

    Il secondo passo da quanto ho capito e fare apparire del testo sopra quando vi e' il mouse...
    Puoi usare molto facilmente la proprieta' .slideUp o .fadeIn in modalita' .hover function() etc...

    fadeIn jQuery
    slideUp jQuery

    P.s Ovviamente il div container del testo onmouseover va reso invisibile coi css con il comando display:"none"; e reso visibile prima dell'animazione grazie a jQuery grazie al comando molto semplice: $('#tuodiv").show()

    Se hai bisogni di chiarimenti sono qui
    http://www.targetweb.it - Web design, guide e risorse utili su Html5, jQuery, Css3

  4. #4
    Ciao,

    allora se vuoi usare JQ come ha suggerito l'amico ricky devi sapere 2 cose:

    1 - Per usare JQ devi includere una libreria, non pensate, ma che comunque è una richiesta in più al server, nel caso la includessi come API di server esterni al tuo, i cui tempi di caricamento sono DIVERSI da quelli del tuo server.
    2 - Molti pongono l'accento sul fatto che non sia il caso di utilizzare una libreria intera per animazioni semplici. Io replico dicendo che si parte da animazioni semplici e poi si impara a gestire Jquery per tutta una serie di altre problematiche legate al mondo di Javascript. E' giusto approcciarsi ad esso per cose "SEMPLICI" come nel tuo caso.

    tornando al tuo problema: ecco come risolverlo definitivamente senza aggiungere altro o fare ricerche da parte tua (mi diverto a scrivere codice perché mi tiene in allenamento):

    Incomincia ad includere Jquery nella <head> in questo modo:
    codice:
    <script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.5.min.js"></script>
    sono disponibili anche API di Jquery e Google Code
    puoi anche scaricare dallo stesso link la libreria, copiarla e incollarla in un file .js salvarlo come e dove più ti aggrada nel tuo dominio e usare un link locale tipo:
    codice:
    <script src="js/jquery.js"></script>
    Per creare la tua animazione includi questo codice o nella <head> oppure sotto il tuo menu come sei più comodo:
    codice:
    <script type="text/javascript">
    	$(function(){
    			   $(".testo_menu").css({display : "none"});
    			   $(".menufoto").hover(
    										function(){
    											$(this).find(".immagine_menu").fadeTo(100,0.5); // modifica il 100 per rendere l'animazione più o meno veloce e lo 0.5 per rendere più o meno trasparente l'immagne (1 = 100%)
    											$(this).find(".testo_menu").fadeToggle(500); // modifica il 500 per rendere l'animazione più o meno veloce
    											 // puoi usare anche slideToggle (IDEM VALE PER SOTTO)
    											 },
    										function(){
    											$(this).find(".immagine_menu").fadeTo(100,1);
    											$(this).find(".testo_menu").fadeToggle(500);
    											 }
    										 );
    			   });
    </script>
    *Come "commento" all'interno del codice sono inserite alcune indicazioni su come "ottimizzare" l'animazione secondo le tue esigenze.

    l'HTML del tuo menù dovrà essere così formattato:

    codice:
    <a class="menufoto"href="xxx...">
        [img]image/foto.png[/img]
        <div class="testo_menu">tuo testo...</div>
    </a>
    Alcuni accorgimenti:

    • Puoi spostare i due elementi <img> e <div> purché siano FIGLI del tag <a class="menufoto"> e purché mantengano le loro CLASSI... gli ID li puoi cambiare a piacere.
    • Puoi annidare <img> e <div> all'interno di altri elmenti, purché siano tutti FIGLI del tag <a class="menufoto">
    • Tutto quello che si troverà nel tag <div> con class = "testo_menu" subirà l'animazione.
    • Puoi cambiare il nome delle classi purché cambi il corrispettivo nello script sopra.


    Vedi se è di tuo gradimento, e ricordati la mia premessa. per decidere se JQ è la via che vuoi seguire.
    Ciao.

  5. #5
    Originariamente inviato da simo_JQ
    Ciao,

    allora se vuoi usare JQ come ha suggerito l'amico ricky devi sapere 2 cose:

    1 - Per usare JQ devi includere una libreria, non pensate, ma che comunque è una richiesta in più al server, nel caso la includessi come API di server esterni al tuo, i cui tempi di caricamento sono DIVERSI da quelli del tuo server.
    2 - Molti pongono l'accento sul fatto che non sia il caso di utilizzare una libreria intera per animazioni semplici. Io replico dicendo che si parte da animazioni semplici e poi si impara a gestire Jquery per tutta una serie di altre problematiche legate al mondo di Javascript. E' giusto approcciarsi ad esso per cose "SEMPLICI" come nel tuo caso.

    tornando al tuo problema: ecco come risolverlo definitivamente senza aggiungere altro o fare ricerche da parte tua (mi diverto a scrivere codice perché mi tiene in allenamento):

    Incomincia ad includere Jquery nella <head> in questo modo:
    codice:
    <script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.5.min.js"></script>
    sono disponibili anche API di Jquery e Google Code
    puoi anche scaricare dallo stesso link la libreria, copiarla e incollarla in un file .js salvarlo come e dove più ti aggrada nel tuo dominio e usare un link locale tipo:
    codice:
    <script src="js/jquery.js"></script>
    Per creare la tua animazione includi questo codice o nella <head> oppure sotto il tuo menu come sei più comodo:
    codice:
    <script type="text/javascript">
    	$(function(){
    			   $(".testo_menu").css({display : "none"});
    			   $(".menufoto").hover(
    										function(){
    											$(this).find(".immagine_menu").fadeTo(100,0.5); // modifica il 100 per rendere l'animazione più o meno veloce e lo 0.5 per rendere più o meno trasparente l'immagne (1 = 100%)
    											$(this).find(".testo_menu").fadeToggle(500); // modifica il 500 per rendere l'animazione più o meno veloce
    											 // puoi usare anche slideToggle (IDEM VALE PER SOTTO)
    											 },
    										function(){
    											$(this).find(".immagine_menu").fadeTo(100,1);
    											$(this).find(".testo_menu").fadeToggle(500);
    											 }
    										 );
    			   });
    </script>
    *Come "commento" all'interno del codice sono inserite alcune indicazioni su come "ottimizzare" l'animazione secondo le tue esigenze.

    l'HTML del tuo menù dovrà essere così formattato:

    codice:
    <a class="menufoto"href="xxx...">
        [img]image/foto.png[/img]
        <div class="testo_menu">tuo testo...</div>
    </a>
    Alcuni accorgimenti:

    • Puoi spostare i due elementi <img> e <div> purché siano FIGLI del tag <a class="menufoto"> e purché mantengano le loro CLASSI... gli ID li puoi cambiare a piacere.
    • Puoi annidare <img> e <div> all'interno di altri elmenti, purché siano tutti FIGLI del tag <a class="menufoto"> tutto quello che si troverà nel tag <div> con class = "testo_menu" subirà l'animazione.
      Puoi cambiare il nome delle classi purché cambi il corrispettivo nello script sopra.

      Ciao.
    Penso però che lui volesse ottenere un offetto di opacita' sull'immagine che al suo passaggio si "illuminasse". con il fadeIn e out vi e' un effetto molto simile ma non uguale.. per questo avevo suggerito il .css() con modifica dell'opacita'. In ogni caso il codice suggerito da simo_JQ può risolverti il problema

    Saluti
    http://www.targetweb.it - Web design, guide e risorse utili su Html5, jQuery, Css3

  6. #6
    Originariamente inviato da rickynewtek
    Penso però che lui volesse ottenere un offetto di opacita' sull'immagine che al suo passaggio si "illuminasse". con il fadeIn e out vi e' un effetto molto simile ma non uguale.. per questo avevo suggerito il .css() con modifica dell'opacita'. In ogni caso il codice suggerito da simo_JQ può risolverti il problema

    Saluti
    Più che giusto, mentre scrivevo mi sono dimenticato questo particolare.

    Se vuoi un effetto di quel tipo come suggerisce ricky modifica questa porzione di codice:

    codice:
    $(this).find(".immagine_menu").fadeTo(100,0.5);
    in
    codice:
    $(this).find(".immagine_menu").css("opacity", 0.5);
    e

    codice:
    $(this).find(".immagine_menu").fadeTo(100,1);
    in
    codice:
    $(this).find(".immagine_menu").css("opacty",1);
    Grazie per la correzione.
    Buona giornata, torno a lavorare

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    249
    simo. ricky, grazie a tutti e due
    col fade in e out va benissimo, vi chiedo solo un cosa, pechè con firefox vedo tutto perfetto mentre con ie il testo appare per una frazione di secondo brutto (sgranato) per poi stabilizzarsi giusto? (lo stesso problema con ie lo avevo anche con il mio codice onmouseover e onmouseout)
    come posso inoltre farlo apparire all'interno della foto? tipo questo: http://fragilemilano.com/shop/index.php

  8. #8
    E' del tutto normale... purtroppo Ie ha un motore di rendering javascript troppo obsoleto (come tutto del resto -.-) e pertanto le animazioni risultano piu' scattose rispetto agli altri browser web.

    Per fortuna a breve uscira' ie9...che a quanto si dice sara' molto rivoluzionario sotto questo punto di vista.

    (jQuery da il massimo in tutti gli altri browser esistenti).

    Felice di essere di aiuto! Ciao!

    Se vuoi realizzarlo come nel sito che hai linkato però secondo me dovresti usare un overlay... appena posso se vuoi ti scrivo il codice. Se vuoi intanto cerca qualcosa su internet.
    http://www.targetweb.it - Web design, guide e risorse utili su Html5, jQuery, Css3

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    249
    grazie ricky, con l'overlay come lo faccio lo script del testo invece di fadeToggle?
    mi chiedevo... se do un valore per rendere l'animazione molto più veloce le brutture con ie8 si notano meno?
    sapevo che ie ha problemi con le dissolvenze, in quel sito che ho linkato ho visto dal codice pagina che sono fatti con prototype, con ie però vedo tutto perfetto... per quale motivo?

  10. #10
    prego, e come ti ha spiegato rickynewtek è un problema di come renderizza il browser.
    Nel caso del sito che hai linkato non è in realtà un fadeIn ma semplicemente un cambio di CSS cioè non cambia gradualmente la trasparenza da 0 a 1... ma lo fa direttamente impostando a 1 l'opacità senza passaggi intermedi.

    Per mettere al centro la parola basta che con il CSS imposti queste regole:

    a{position:relative; display:block;} (se devono rimanere comunque INLNE metti un float:left)
    .testo_menu{position:absolute; left:VALORE; right:VALORE; width:VALORE text-align:center;}

    al posto dei VALORE metti tu un valore numerico che dipende dalla dimensione dell'immagine, se le immagini sono di diverse dimensoni per centrarlo alla perfezione bisogna usare Jquery.

    ho impostato anche WIDTH che dovresti mettere abbastanza grande da tenere dentro la parola + lunga in modo che quelle più corte vengano centrate in modo corretto.

    Ciao.
    Aiuto perché mi piace, mi diverte, e mi allena.
    Non sono esperto, offro opportunità non obblighi.
    Uso un mio modo di fare le cose, che se risultasse poco gradito basta ignorarlo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.