Visualizzazione dei risultati da 1 a 8 su 8

Discussione: menu orizontale

  1. #1

    menu orizontale

    Salve a tutti! Ho realizzato un semplicissimo menu orizzontale ma ho un problema... il menu esteticamente è venuto come lo volevo solo che non riesco a fare in modo che mi apra le pagine anche se clicco sulla casella e non necessariamente sul testo della casella, ecco un'immagine per farvi capire meglio...

    Immagine.jpg
    il menu deve aprire la pagina in entrambi i casi...

    Ho apportato diverse modifiche osservando anche altri menu che ho trovato su internet ma senza nessun risultato.. non riesco proprio a capire come fare...

    Ecco il codice completo
    codice HTML:
    <!DOCTYPE html><html>    
    <head>
            <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
            <title>Senza nome 1</title>
            <style>
                .menu{
                         position:fixed; top:0px; left:0px;
                         border-bottom:4px solid #000000;
                         list-style:none;  margin:0;
                         padding:0; display:table;
                          z-index:350; width:100%;
                     }
                .menu li{
                        display:inline-block;
                        font-weight:bold;
                        text-align:center;
                        padding:10px 0px 10px 0px;                                                                    
                        width:16.66666666666667%;
                        }
                .menu li a{
                       cursor:pointer;
                        font-size:18px;
                       font-family:Arial, Helvetica, sans-serif;
                       text-shadow: 1px 1px 2px #666666;
                       }
                .menu a:link,
                 .menu a:visited{
                        color: #fff;
                        text-decoration:none;
                        font-variant:small-caps;
                        }
            </style>
        </head>
        <body>
            <ul class="menu">
                <li style="background-color:#404040;"><a href="#section1" style="color:#e5e4e2;">Section1</a></li>
                <li style="background-color:#ffc900;"><a href="#section2">Section2</a></li>
                <li style="background-color:#ff8957;"><a href="#section3">Section3</a></li>
                <li style="background-color:#ff2525;"><a href="#section4">Section4</a></li>
                <li style="background-color:#bad700;"><a href="#sectopm5">Section5</a></li>
                <li style="background-color:#49b6e8;"><a href="#section6">Section6</a></li>
            </ul>
        </body>
    </html>
    Ultima modifica di bibbul_dex; 31-07-2014 a 20:46

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    11
    Aggiungi display:block; al tag a
    codice:
    .menu li a
    {
        cursor:pointer;
        font-size:18px;
        font-family:Arial, Helvetica, sans-serif;
        display:block;
        text-shadow: 1px 1px 2px #666666;
    }

  3. #3
    Si grazie! funziona! e mi hai fatto capire anche come funziona! io pensavo che dovevo modificare il tag del blocco in se invece è il tag che contiene la scritta che viene modificato, inserendo display: block; funzionava però solo se cliccavo a destra e a sinistra della scritta, quindi ho provato a spostare padding:10px 0px 10px 0px; sempre sul tag a e ora funziona perfettamente!

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao.
    Risposta breve:

    display:block per i tag <a>, come giustamente ha indicato s1501.

    Risposta esaustivamente particolareggiata:


    1. Il block su <a> estende l'elemento per tutta la larghezza disponibile (quindi per la larghezza di <li>), e questo è ok, ma il padding su <li> va a "rubare" dello spazio (che non sarà quindi sensibile al puntatore) sopra e sotto lo stesso <a>.

      Dovresti impostare il padding direttamente su <a>, non su <li>, in modo che <a> vada ad occupare l'intero spazio per tutta la larghezza e tutta l'altezza di <li>.

      (Vedo che questo punto lo hai già risolto da te)
    2. Il display:table applicato in quel modo non serve a molto, o meglio, ha una parvenza di funzionamento solo su CH, mentre su FF e IE9 non vedo una sostanziale funzionalità.

      Se intendi far funzionare gli elementi <li> come fossero celle di una tabella, sarebbe più opportuno applicare table-cell a questi.

      Inoltre...
    3. Tutta la formattazione del testo, sia quella che indichi su ".menu li" sia quella inserita nelle pseudo-classi :link e :visited, potresti applicarla direttamente a ".menu li a".
      In questo caso puoi fare a meno anche di specificare :link e :visited.
    4. Su IE9 non è supportato text-shadow.

      Se vuoi ottenere un effetto simile anche per IE9, e precedenti versioni, potresti aggiungere filter:shadow(...).

      Gli altri browser ignoreranno questa regola e manterranno comunque l'applicazione di text-shadow.
    5. Non è una regola fissa ma è buona norma mantenere una separazione, quanto più netta possibile, tra i contenuti HTML e la formattazione CSS.

      Se non è strettamente necessario è meglio non inserire codice CSS in-linea (vedi style="background-color:... ecc.). Sarebbe preferibile utilizzare invece delle classi e applicarne la formattazione sul CSS principale.

    Chiaramente sono giusto dei consigli.

    Posto una rivisitazione del tuo codice in base a quanto indicato:
    codice:
    <!DOCTYPE html>
    <html>
      <head>
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        <title>Senza nome 1</title>
        <style>
          .menu{
            position:fixed;
            top:0;
            left:0;
            border-bottom:4px solid #000;
            list-style:none;
            margin:0;
            padding:0;
            display:table;
            z-index:350;
            width:100%;
          }
          .menu li{
            display:table-cell;
          }
          .menu li a{
            display:block;
            color: #fff;
            font:bold small-caps 18px Arial,Helvetica,sans-serif;
            padding:10px 5px;
            text-align:center;
            text-decoration:none;
            text-shadow:1px 1px 2px #666;
            filter:shadow(color=#666666,direction=135,strength=2); /* IE8, IE9 */
          }
          
          /* Colori fondo voci menu */
          .menu .c1 { background:#404040 }
          .menu .c2 { background:#ffc900 }
          .menu .c3 { background:#ff8957 }
          .menu .c4 { background:#ff2525 }
          .menu .c5 { background:#bad700 }
          .menu .c6 { background:#49b6e8 }
          
          /* Voce attiva */
          .menu .active a { color:#e5e4e2 }
        </style>
      </head>
      <body>
        <ul class="menu">
          <li class="c1 active"><a href="#section1">Section1</a></li>
          <li class="c2"><a href="#section2">Section2</a></li>
          <li class="c3"><a href="#section3">Section3</a></li>
          <li class="c4"><a href="#section4">Section4</a></li>
          <li class="c5"><a href="#sectopm5">Section5</a></li>
          <li class="c6"><a href="#section6">Section6</a></li>
        </ul>
      </body>
    </html>
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Ciao.
    Risposta breve:

    display:block per i tag <a>, come giustamente ha indicato s1501.

    Risposta esaustivamente particolareggiata:


    1. Il block su <a> estende l'elemento per tutta la larghezza disponibile (quindi per la larghezza di <li>), e questo è ok, ma il padding su <li> va a "rubare" dello spazio (che non sarà quindi sensibile al puntatore) sopra e sotto lo stesso <a>.

      Dovresti impostare il padding direttamente su <a>, non su <li>, in modo che <a> vada ad occupare l'intero spazio per tutta la larghezza e tutta l'altezza di <li>.

      (Vedo che questo punto lo hai già risolto da te)
    2. Il display:table applicato in quel modo non serve a molto, o meglio, ha una parvenza di funzionamento solo su CH, mentre su FF e IE9 non vedo una sostanziale funzionalità.

      Se intendi far funzionare gli elementi <li> come fossero celle di una tabella, sarebbe più opportuno applicare table-cell a questi.

      Inoltre...
    3. Tutta la formattazione del testo, sia quella che indichi su ".menu li" sia quella inserita nelle pseudo-classi :link e :visited, potresti applicarla direttamente a ".menu li a".
      In questo caso puoi fare a meno anche di specificare :link e :visited.
    4. Su IE9 non è supportato text-shadow.

      Se vuoi ottenere un effetto simile anche per IE9, e precedenti versioni, potresti aggiungere filter:shadow(...).

      Gli altri browser ignoreranno questa regola e manterranno comunque l'applicazione di text-shadow.
    5. Non è una regola fissa ma è buona norma mantenere una separazione, quanto più netta possibile, tra i contenuti HTML e la formattazione CSS.

      Se non è strettamente necessario è meglio non inserire codice CSS in-linea (vedi style="background-color:... ecc.). Sarebbe preferibile utilizzare invece delle classi e applicarne la formattazione sul CSS principale.

    Chiaramente sono giusto dei consigli.

    Posto una rivisitazione del tuo codice in base a quanto indicato:
    codice:
    <!DOCTYPE html>
    <html>
      <head>
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        <title>Senza nome 1</title>
        <style>
          .menu{
            position:fixed;
            top:0;
            left:0;
            border-bottom:4px solid #000;
            list-style:none;
            margin:0;
            padding:0;
            display:table;
            z-index:350;
            width:100%;
          }
          .menu li{
            display:table-cell;
          }
          .menu li a{
            display:block;
            color: #fff;
            font:bold small-caps 18px Arial,Helvetica,sans-serif;
            padding:10px 5px;
            text-align:center;
            text-decoration:none;
            text-shadow:1px 1px 2px #666;
            filter:shadow(color=#666666,direction=135,strength=2); /* IE8, IE9 */
          }
          
          /* Colori fondo voci menu */
          .menu .c1 { background:#404040 }
          .menu .c2 { background:#ffc900 }
          .menu .c3 { background:#ff8957 }
          .menu .c4 { background:#ff2525 }
          .menu .c5 { background:#bad700 }
          .menu .c6 { background:#49b6e8 }
          
          /* Voce attiva */
          .menu .active a { color:#e5e4e2 }
        </style>
      </head>
      <body>
        <ul class="menu">
          <li class="c1 active"><a href="#section1">Section1</a></li>
          <li class="c2"><a href="#section2">Section2</a></li>
          <li class="c3"><a href="#section3">Section3</a></li>
          <li class="c4"><a href="#section4">Section4</a></li>
          <li class="c5"><a href="#sectopm5">Section5</a></li>
          <li class="c6"><a href="#section6">Section6</a></li>
        </ul>
      </body>
    </html>

    Ciao KillerWorm! Grazie per la tua risposta dettagliatissima, mi hai chiarito parecchio le idee!

  6. #6
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Ciao.
    Risposta breve:

    display:block per i tag <a>, come giustamente ha indicato s1501.

    Risposta esaustivamente particolareggiata:


    1. Il block su <a> estende l'elemento per tutta la larghezza disponibile (quindi per la larghezza di <li>), e questo è ok, ma il padding su <li> va a "rubare" dello spazio (che non sarà quindi sensibile al puntatore) sopra e sotto lo stesso <a>.

      Dovresti impostare il padding direttamente su <a>, non su <li>, in modo che <a> vada ad occupare l'intero spazio per tutta la larghezza e tutta l'altezza di <li>.

      (Vedo che questo punto lo hai già risolto da te)
    2. Il display:table applicato in quel modo non serve a molto, o meglio, ha una parvenza di funzionamento solo su CH, mentre su FF e IE9 non vedo una sostanziale funzionalità.

      Se intendi far funzionare gli elementi <li> come fossero celle di una tabella, sarebbe più opportuno applicare table-cell a questi.

      Inoltre...
    3. Tutta la formattazione del testo, sia quella che indichi su ".menu li" sia quella inserita nelle pseudo-classi :link e :visited, potresti applicarla direttamente a ".menu li a".
      In questo caso puoi fare a meno anche di specificare :link e :visited.
    4. Su IE9 non è supportato text-shadow.

      Se vuoi ottenere un effetto simile anche per IE9, e precedenti versioni, potresti aggiungere filter:shadow(...).

      Gli altri browser ignoreranno questa regola e manterranno comunque l'applicazione di text-shadow.
    5. Non è una regola fissa ma è buona norma mantenere una separazione, quanto più netta possibile, tra i contenuti HTML e la formattazione CSS.

      Se non è strettamente necessario è meglio non inserire codice CSS in-linea (vedi style="background-color:... ecc.). Sarebbe preferibile utilizzare invece delle classi e applicarne la formattazione sul CSS principale.
    Ciao scusa ti chiedo un'ultima cosa che c'entra con jQuery, al menu volevo aggiungere l'effetto bounce al passaggio del mouse, solo che l'effetto funziona ma bene.. le caselle si spostano leggermente verso sinistra e poi se passo con il mouse su più caselle fa un casino... ecco la pagina con il menu: http://destinationluccaceg.altervista.org/#section3

    ed ecco il codice:

    codice HTML:
    <!DOCTYPE html>
    <html>
      <head>
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        <title>Senza nome 1</title>
        <style>
          .menu{
            position:fixed;
            top:0; 
           left:0;
            list-style:none; 
           margin:0;
            padding:0;
            display:table;
            z-index:350;
            width:100%;
          }
          .menu li{
            display:table-cell;
           width:16.66666666666666%;
            border-bottom:4px solid #000000;
          }
          .menu li a{
            display:block;
            color: #fff;
            font:bold small-caps 18px Arial,Helvetica,sans-serif;
            padding:10px 0px 10px 0px;
            text-align:center;
            text-decoration:none;
            text-shadow:1px 1px 2px #666;
            filter:shadow(color=#666666,direction=135,strength=2);
           }
         .menu .c1 { background:#404040 }
          .menu .c2 { background:#ffc900 }
          .menu .c3 { background:#ff8957 }
          .menu .c4 { background:#ff2525 }
          .menu .c5 { background:#bad700 }
          .menu .c6 { background:#49b6e8 }
        
         .active a { color:#e5e4e2 }
        </style> 
       <script src="//code.jquery.com/jquery-1.10.2.js"></script>
        <script src="//code.jquery.com/ui/1.11.0/jquery-ui.js"></script>
      </head>
      <body>
        <ul class="menu">
          <li class="c1 active"><a href="#section1">Section1</a></li>
          <li class="c2"><a href="#section2">Home</a></li>
          <li class="c3"><a href="#section3">Section3</a></li>
          <li class="c4"><a href="#section4">Section4</a></li>
          <li class="c5"><a href="#sectopm5">Section5</a></li>
          <li class="c6"><a href="#section6">Section6</a></li>
        </ul>
        <script>
          $( "li" ).hover(function() {
            $( this ).effect( "bounce", "slow" );
          });
        </script>
      </body>
    </html>
    Ultima modifica di bibbul_dex; 02-08-2014 a 21:59

  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Perdonami ma sarebbe un argomento off-topic e non riguarda XHTML e HTML.
    Faresti meglio ad aprire una nuova discussione (con questa nuova richiesta) sulla sezione Javascript.

    PS: Un consiglio, quando rispondi evita di quotare i precedenti post se non strettamente necessario.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  8. #8
    Va bene adesso la apro grazie ancora

Tag per questa discussione

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.