Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Problema Menu css3

    Ciao ragazzi,

    in rete ho trovato un menu in jquery con sottomenu verso il basso, ed è quello che cercavo io.

    Ho studiato un po il codice ed ho trovato, dopo averlo provato, un problema.

    Innanzitutto ecco il codice html:

    codice:
    <div id="wrapper">
    <ul class="ac-menu">
    
    <li id="one">
    Prima sezione
    <ul class="sub-menu">[*]1[*]2[*]3[*]4[*]5[*]6[*]7[*]8[/list]
    
    
    <li id="two">
    Seconda sezione
    <ul class="sub-menu">[*]1[*]2[*]3[*]4[*]5[*]6[*]7[*]8[*]9[*]10[*]11[/list]
    
    [/list]
    </div>
    questo il CCS:

    codice:
    #wrapper {
    width:250px;
    margin: 0;
    }
    
    
    .ac-menu,
    .ac-menu ul,
    .ac-menu li,
    .ac-menu a,
    .ac-menu span {
    	margin: 0;
    	padding: 0;
    	border: 0;
    	outline: none;
    }
    
    .ac-menu li {
    	list-style: none;
    }
    
    /* Accordian Style */
    
    .ac-menu li > a {
    	display: block;
    	position: relative;
    	min-width: 160px;
    	padding: 0 10px 0 0;
    	text-align: center;
    	height: 32px;
    
    	color: #FFFFFF;
    	font: bold 12px/32px Segoe UI, Helvetica, Arial, sans-serif;
    	text-decoration: none;
    	
    	
    	background: #343435;
    	background: -moz-linear-gradient(top, #343435 1%, #4a4a4a 100%);
    	background: -webkit-gradient(linear, left top, left bottom, color-stop(1%,#343435), color-stop(100%,#4a4a4a));
    	background: -webkit-linear-gradient(top, #343435 1%,#4a4a4a 100%);
    	background: -o-linear-gradient(top, #343435 1%,#4a4a4a 100%);
    	background: -ms-linear-gradient(top, #343435 1%,#4a4a4a 100%);
    	background: linear-gradient(top, #343435 1%,#4a4a4a 100%);
    	
    	-webkit-box-shadow: inset 0px 1px 0px 0px rgba(255,255,255, .1), 0px 1px 0px 0px rgba(0,0,0, .1);
    	-moz-box-shadow: inset 0px 1px 0px 0px rgba(255,255,255, .1), 0px 1px 0px 0px rgba(0,0,0, .1);
    	box-shadow: inset 0px 1px 0px 0px rgba(255,255,255, .1), 0px 1px 0px 0px rgba(0,0,0, .1);
    }
    
    .ac-menu > li:hover > a,
    .ac-menu > li:target > a {
    	text-shadow: 1px 1px 1px rgba(255,255,255, .2);
    	
    	
    	background: #20a4ca;
    	background: -moz-linear-gradient(top, #20a4ca 1%, #47b5d4 100%);
    	background: -webkit-gradient(linear, left top, left bottom, color-stop(1%,#20a4ca), color-stop(100%,#47b5d4));
    	background: -webkit-linear-gradient(top, #20a4ca 1%,#47b5d4 100%);
    	background: -o-linear-gradient(top, #20a4ca 1%,#47b5d4 100%);
    	background: -ms-linear-gradient(top, #20a4ca 1%,#47b5d4 100%);
    	background: linear-gradient(top, #20a4ca 1%,#47b5d4 100%);
    	
    	
    	-webkit-box-shadow: inset 0px 1px 0px 0px rgba(255,255,255, .1), 0px 1px 0px 0px rgba(0,0,0, .1);
    	-moz-box-shadow: inset 0px 1px 0px 0px rgba(255,255,255, .1), 0px 1px 0px 0px rgba(0,0,0, .1);
    	box-shadow: inset 0px 1px 0px 0px rgba(255,255,255, .1), 0px 1px 0px 0px rgba(0,0,0, .1);
    
    }
    
    
    
    /* Sub-Menu */
    
    .sub-menu li a {
    	color: #797979;
    	text-shadow: 1px 1px 0px rgba(255,255,255, .2);
    
    	background: #eae9e9;
    	border-bottom: 1px solid #c1bfbf;
    
    	-webkit-box-shadow: inset 0px 1px 0px 0px rgba(255,255,255, .1), 0px 1px 0px 0px rgba(0,0,0, .1);
    	-moz-box-shadow: inset 0px 1px 0px 0px rgba(255,255,255, .1), 0px 1px 0px 0px rgba(0,0,0, .1);
    	box-shadow: inset 0px 1px 0px 0px rgba(255,255,255, .1), 0px 1px 0px 0px rgba(0,0,0, .1);
    }
    
    .sub-menu li:hover a { background: #f6f5f5; }
    
    
    
    /* Accordian Function */
    
    .ac-menu li > .sub-menu {
    	height: 0;
    	overflow: hidden;
    
    	-webkit-transition: height .2s ease-in-out;
    	-moz-transition: height .2s ease-in-out;
    	-o-transition: height .2s ease-in-out;
    	-ms-transition: height .2s ease-in-out;
    	transition: height .2s ease-in-out;
    }
    
    .ac-menu li:target > .sub-menu {
    	height: 363px; <<< questo è l'altezza del sub-menu.
    }
    I problemi che si vengono a porre sono:

    Quando si clicca, esempio, sul:

    <li id="one">Prima sezione

    la visuale dello schermo si sposta in quella porzione come la regola css pretende:

    .ac-menu li > a {
    display: block;
    position: relative;
    min-width: 160px;
    padding: 0 10px 0 0;
    text-align: center;
    height: 32px;


    o dipende da qualcos'altro? :/ e questo da fastidio, vorrei che la visuale rimanga dov'è

    Inoltre se il primo [*] è più corto, intendo di [*]<a></a>, allora si visualizza uno spazio tra il primo [*] ed il secondo [*], che graficamente parlando è orrendo.

    Mi sapreste dire alcuni consigli su come risolvere questi problemi? almeno dove devo concentrarmi sul poterli risolvere, non voglio la 'pappa pronta', vorrei sopratutto capire quale regola fa incasinare e poi risolvere per conto mio.

    Grazie di tutto!

    --messaggio editato, mi ero confuso, non c'entrava assolutamente nulla il jquery

  2. #2
    Utente di HTML.it L'avatar di Experiment8
    Registrato dal
    Jun 2012
    residenza
    Milano
    Messaggi
    254
    Il primo problema, quello della visuale che sale, è dovuto al fatto che mettendo come href "#one" lo vede come un ancora (vedrai aggiungersi #one all'indirizzo), devi disattivare da jquery questa funzione default inserendo nella funzione:

    function(e){
    e.preventDefault();
    }

    Mentre per il secondo problema non ho capito bene, puoi spiegarmi meglio? grazie.

  3. #3
    Ciao e grazie per la risposta .)

    Siccome cercavo un menu adatto al sito, ne ho provato tanti e mi sono confuso col scrivere che è in jquery perché nell' header non lo includo quindi il tutto riguarda il css.

    Il secondo problema invece è questo:

    Ci sono due colonne, #one e #two: se il contenuto di #one è più piccolo di #two si vedrà uno spazio bianco tra l'ultimo contenuto di #one e il primo di #two.
    questo perché viene specificata l'altezza dei contenuti (#one e #two) da questa regola css:

    codice:
    .ac-menu li:target > .sub-menu {
    	height: 363px; <<< questo è l'altezza del sub-menu.
    }
    quindi rispiegandolo, se l'altezza reale di #one è 200px ma viene dettata la regola sopracitata i 163px inoccupati saranno bianchi.

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.