Visualizzazione dei risultati da 1 a 9 su 9

Discussione: creare un menu in JS

  1. #1

    creare un menu in JS

    ciao a tutti...
    io dovrei creare un menu simile a questo: http://it.tv.yahoo.com/ (quello al centro pagina blu e bianco)
    però senza il testo a destra, cioè devo creare solo l'immagine e il testo che appare, anche con lo sfondo nero trasparente ...
    volevo sapere prima di tutto se è meglio (in tutti i sensi, velocità caricamento, leggerezza del codice ecc.) farlo in flash o in JS?
    e come faccio ad impostare che al click su un link, cambia sia immagine, sia testo e sia sfondo nero trasparente, e con quegli effetti li...

    grazie anticipatamente ..

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131

    Re: creare un menu in JS

    Originariamente inviato da ciucciamellea
    ciao a tutti...
    io dovrei creare un menu simile a questo: http://it.tv.yahoo.com/ (quello al centro pagina blu e bianco)
    però senza il testo a destra, cioè devo creare solo l'immagine e il testo che appare, anche con lo sfondo nero trasparente ...
    volevo sapere prima di tutto se è meglio (in tutti i sensi, velocità caricamento, leggerezza del codice ecc.) farlo in flash o in JS?
    Dipende quale conosci meglio, non credo che ci saranno grosse differenze di peso o di compatibilità
    e come faccio ad impostare che al click su un link, cambia sia immagine, sia testo e sia sfondo nero trasparente, e con quegli effetti li...
    Bisogna studiarselo un attimo e avere buona conoscenza di javascript
    grazie anticipatamente ..
    Figurati
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    beh specificatamente nessuno dei due ... forse però è meglio il JS dato che il flash non proprio tutti possono visualizzarlo...

    comuqnue oltre alla guida generale sul JS, ce ne sono di specifiche sul mio problema? cioè che possano in qualche modo servire per creare quel menu la?
    grazie ...

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    Non saprei l'unica e cercare google, oppure prova a guardare su mootools o jquery, ma come già detto se mastichi poco javascript la vedo dura, comunque ti auguro di risolvere.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente bannato
    Registrato dal
    Dec 2008
    Messaggi
    78

    TD buttons changing IMG SRC from an Array.

    Sicuramente è fatto coi DIV e CSS; ma siccome resto un aficionado delle TABLE, ti posto questo per cominciare a studiarci un po' su'; ho messo anche il cambio del puntatore freccia/manina, usando style="cursor: ;" :

    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head><title>TD buttons turning IMG SRC</title>
    
    <script type="text/javascript">
    
    var content = new Array();
        content[0] = "";
        content[1] = "http://www.cameraworkphotographers.com/002ITALIA.jpg";
        content[2] = "http://www.cameraworkphotographers.com/003ITALIA.jpg";
        content[3] = "http://www.cameraworkphotographers.com/004ITALIA.jpg";
        content[4] = "http://www.cameraworkphotographers.com/009ITALIA.jpg";
        content[5] = "http://www.cameraworkphotographers.com/008ITALIA.jpg";
    
    var facing = "1";
    
    function change(which){ 
    
     var cell = document.getElementById("quadr").getElementsByTagName("td");
     cell[facing].bgColor = "#EFEFEF";
     cell[facing].style.cursor="pointer";
    
     document.getElementById("field").src =content[which];
    
     cell[which].bgColor = "aqua";
     cell[which].style.cursor="default";
    
     facing = which;
     }
    
    </script>
    
    </head>
    <body bgcolor="#444440" style="font-family: Trebuchet MS, Helvetica, Arial;">
    
    <div align="center">
                
    
    
    
    <table id="quadr" border="1" cellpadding="8" cellspacing="0" bgcolor="#EFEFEF"><tr>
          <td rowspan="5">
              
    
     </td>
          <td onclick='change("1");' width="150" bgcolor="aqua" 
                                     style="cursor: default;">Content 1
              
     </td></tr>
     <tr>
          <td onclick='change("2");' style="cursor: pointer;">Content 2
              
     </td></tr>
     <tr>
          <td onclick='change("3");' style="cursor: pointer;">Content 3
              
     </td></tr>
     <tr>
          <td onclick='change("4");' style="cursor: pointer;">Content 4
              
     </td></tr>
     <tr>
          <td onclick='change("5");' style="cursor: pointer;">Content 5
              
     </td></tr>
    </table>
    
    </div>
    
    
    </body>
    </html>
    P.S.: Sono immagini.jpg non leggerissime (130-180 Kb), attendi un attimo per il primo download se subito non ti appaiono; dipende anche dalla connessione: io ho la tipica Alice 20 Mega che va a 2,46 Mega, però.

  6. #6
    si una cosa cosi riesco a farla con i div ...
    però non riesco a fare in modo che cambi sia il testo, l'immagine e lo sfondo nero (che cè nel link nel primo post) ...
    e far si che siano a "sfumatura" le entrate ..

  7. #7
    Utente bannato
    Registrato dal
    Dec 2008
    Messaggi
    78

    setTimeout for self re-calling function.

    Si potrebbe anche considerare di elaborare le foto in post-production sovrapponendoci testo e quant' altro, ed ognuna si salva come nuovo file.jpg
    Potrebbe risultare una via anche preferibile, se volessi diversificare lo stile del testo e del fader da foto a foto.

    Comunque, stanto al Code, si può far caricare la foto alla TD (o al DIV) come sua immagine di sfondo,
    come style="background-image: url(path.jpg);" ed il testo come contenuto;
    che diventano &#160; style.backgroundImage="url(path.jpg)"; &#160;e&#160; innerHTML=""; &#160; in JavaScript.
    Dopo vediamo.


    Avevo preparato la funzione per avere l' automazione tipo slide-show iniziale quando la pagina appare; da inserire con l' altra nel medesimo SCRIPT (diciamo, prima del Tag di chiusura &#60;/script&#62; per chi teme di sbagliare):
    codice:
     var which = facing;
    
    function slide(){ 
    
     change(which)
     which ++;
         if (which == content.length){ 
             which = "1";
       }
    
     T3 = setTimeout('slide()', 4000);
     
     }
    4000 sono 4 secondi di ritardo, che vanno espressi in milli-sec.
    Possiamo farla partire a caricamento pagina completato, tramite il gestore d' evento ONLOAD nel Tag BODY:

    &#60;body bgcolor="#444440" style="font-family: Trebuchet MS, Helvetica, Arial;" onload='slide();'&#62;

    Poi però dovrà escludersi con un clearTimeout(T3); al primo ONCLICK manuale.

  8. #8
    scusa ma mi sono perso
    quelli li è un JS per cosa? per dare un tempo al cambio immagine-testo?

  9. #9
    Utente bannato
    Registrato dal
    Dec 2008
    Messaggi
    78

    filter: alpha(opacity=60); -moz-opacity:0.6;

    Sì, ma per il momento lasciamo stare.
    Vedi se ti ritrovi qui, facciamo due DIV; uno che ne contiene un altro.

    Il primo DIV mostra l' immagine come proprio sfondo background-image e non come contenuto; il suo contenuto sarà il secondo DIV che è tenuto a "zero pixel" di altezza (ad 1px in realtà) allo scopo di nasconderne il suo successivo contenuto (Testo formattato, nel nostro esempio).
    Quando con JS lo faremo crescere, non andrà "a spingere" sull' immagine perché questa lavora in background.

    &#60;div id="viewer" style="width: 500px; height: 335px; background-image: url(pathImage.jpg)"&#62;

    &#160; &#60;div id="titler" style="height: 1px; overflow: hidden; background-color: #000000; filter: alpha(opacity=60); -moz-opacity:0.6;"&#62;

    &#160; &#160; <h1><font color="white">Testo</font></h1>
    &#160; &#60;/div&#62;

    &#60;/div&#62;


    Il DIV interno deve anche avere overflow: hidden; altrimenti il DIV si abbassa sì a 1px ma lascia fuori il Testo.
    Metti la path a una tua immagine e prova a processare; poi editi dando 10 poi 30 poi 50 px di height al DIV e vedi apparire lo sfondo nero semitrasparente che desideravi ottenere.
    Questo effetto è dato da filter: alpha(opacity=60); (per IExplorer) e da -moz-opacity:0.6; (per i tipi Netscape/Mozilla); quindi vanno messi in due, non entrano in conflitto, persino potresti dare un' opacità diversa per IE e per NN; dove 100 e 1 significano "piena consistenza" mentre 0 e 0 "totale trasparenza".

    A Testo ho dato H1 per ingrandirlo e FONT COLOR="white" per farlo diventare bianco, siccome abbiamo scelto il nero per lo sfondo e nero con nero non lo vedresti perché l' opacity agisce su entrambi sfondo e contenuto in quanto applicata al DIV. Per la cronaca, si può applicare anche ad un Tag IMG direttamente.

    Ora il "cartiglio" crescendo, scende dall' alto; aggiungi position: relative; top: 200px; e si staccherà di 200px dalla linea superiore della sua posizione naturale: ha a disposizione 500x335px per essere riposizionato e per crescere all' interno del primo DIV; l' ho dimensionato in base alle foto che avevo messo a disposizione nell' esempio precedente. Adattalo alle tue esigenze e vedi come riesci ad integrare questo schema con il tuo layout; se preferisci, il tutto è fattibile anche con le TABLE o con un misto di TABLE e DIV.

    padding: 20px; dato al DIV per esempio, invece darebbe dei problemi impedendo al DIV medesimo di chiudersi a zero.
    Restano fattibili padding-left: 20px; e padding-right: 20px; come pure [COLOR=]&#60;br&#62;[/COLOR] per staccare dal top (cosa che il "vecchio" &#60;H1&#62; fa già di suo).


    Una prima funzione che puoi mettere nella HEAD per far crescere il DIV in automatico:
    codice:
    <script type="text/javascript">
    
        
        var grower = 1;         // ( Variabile funzionale ).
    
    
    function grow(){
    
     var sizeH = grower;
     document.getElementById("titler").style.height = sizeH + 'px';
     grower = sizeH + 10;
    
     T2 = setTimeout('grow()', 50); //Timer che si imposta per richiamare grow() dopo  50  millisec.
    
     }
    
    </script>
    Per un primo test associala ad un pulsante &#60;input type="button" onclick='grow();'&#62; e vedi il funzionamento; senonché il div id="titler"continua a crescere indefinitamente.
    Un secondo Timer che spenge il primo e interrompe il ciclo, può già offrire una soluzione:

    &#60;input type="button" onclick='grow(); setTimeout("clearTimeout(T2)", 500);'&#62;

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 © 2024 vBulletin Solutions, Inc. All rights reserved.