Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: css menu ad albero

  1. #1

    css menu ad albero

    Ciao a tutti,

    ho un menu ad albero di questo tipo:

    codice HTML:
    <ul>
        <li>root
            <ul>
                <li>menu1
                    <ul>
                        <li>menu 1.1</li>
                        <li>menu 1.2</li>
                    </ul>
                </li>
                <li>menu2
                    <ul>
                        <li>menu 2.1</li>
                        <li>menu 2.2</li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>
    come posso fare per stampare i rami dell'albero, con bordi dot?

    Ho provato ad utilizzare border-bottom e border-left sui tag <li> ma il risultato è davvero brutto.

    codice:
    li {
        border-left: 1px dotted;
        border-bottom: 1px dotted;
    }
    il resto della pagina html non ha css, devo solo stampare una list item simile a questa (con molte più voci) ed avere la possibilità di vedere le linee orizzontali e verticali dei rami.

    Il menu deve essere sempre "esploso" non ho bisogno di aprire/chiudere i vari elementi..
    Ultima modifica di aquatimer2000; 17-07-2019 a 13:16
    aquatimer2000

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, qui puoi trovare i selettori css vari , non ho capito se non vuoi avere il bordo esattamente sul <li> stesso ma diversamente su qualcosa nel suo contenuto stesso. Hai un esempio da mostrare che vorresti replicare?

  3. #3
    indicativamente vorrei un risultato come questo:

    menu tree.jpg

    al posto dell'immagine della cartella dovrei metterci un'immagine con un cerchio di colore diverso (a seconda del risultato della query che stampa il menu ad albero)

    per il bordo punteggiato in verticale ho risolto con:

    codice:
    li {
        border-left: 1px dotted;
        margin:15px;
    }
    a questo punto mi manca il bordo orizzontale fino (all'immagine) e l'inserimento dell'immagine. (ammesso che l'immagine sia da collocare nel css e non nel print dell'albero)

    Grazie 1000 per l'aiuto!!
    Ultima modifica di aquatimer2000; 18-07-2019 a 15:51
    aquatimer2000

  4. #4
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    A questo punto forse ti conviene guardare una guida tipo questa visto che vuoi fare qualcosa di abbastanza dinamico. Puoi creare classi e gestire quindi immagini o colori direttamente da css

  5. #5
    ok intanto do uno sguardo, io comunque non devo esplorare il menu, mi serve solo che venga stampato con tutti i sottomenu aperti.
    aquatimer2000

  6. #6
    praticamente mi ritrovo sempre allo stesso punto:

    riesco a far bene le linee punteggiate che vanno dall'alto in basso (con border-left: 1px dotted; ) ma, quando faccio quelle orizzontali con border-bottom: 1px dotted; il bordo punteggiato prosegue per tutta la larghezza della pagina, mentre si dovrebbe fermare quando inizia il testo del menu

    oppure queste linee punteggiate sono fatte con immagini che vengono ripetute in altezza e in larghezza ?!?!
    aquatimer2000

  7. #7
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Il fatto è che tu vuoi una riga tratteggiata semplicemente decoarativa prima della label/descrizione di ogni voce. Quello che stai impostando tu ora invece è il bordo del <li> che lo contiene, quindi non sarà mai in linea col testo e di lunghezza probabilmente variabili in base al testo (o 100%) se non gestito il contenitore. Quindi potresti tenere solo il bordo laterale e volendo aggiungere banalmente dei puntini come fossero testo priama delle label, oppure inserirli appunto tramite css https://www.w3schools.com/cssref/sel_before.asp

  8. #8
    bene, provo e ti aggiorno!
    aquatimer2000

  9. #9
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, giusto una dritta al volo, col CSS puoi usare gli pseudo-elementi ::before e ::after; dimensionati, posizionati e impostati a dovere possono creare l'effetto che ti serve.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  10. #10
    ringrazio tutti, ho ottenuto un risultato magari non perfetto, ma per le mie esigenze soddisfacente utilizzando quanto segue:

    codice:
    ul {
        list-style-type: none;
        list-style: inside; 
    }
    
    
    li {
        list-style-type: none;
        border-left: 1px dotted;
        margin:15px;
    }
    
    
    li::before {
        content: "....... ";
    }

    grazie a tutti per l'aiuto!
    aquatimer2000

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.