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

    Distribuire equamente elementi LI inline in UL

    Buonasera a tutto il forum.
    Come già s'intuisce dal titolo di questo post, il mio problema è il seguente: ho una lista non ordinata, <UL> per l'appunto, che contiene diversi tag <LI>. La proprietà 'display' di questi è impostata, da CSS, al valore 'inline', quindi gli elementi sono visualizzati sulla stessa riga; l'UL che li contiene occupa il 100%, in larghezza, del suo contenitore (che, per inciso, è una div centrata di larghezza 500px); vorrei fare in modo, possibilmente da CSS, che i vari elementi LI non si "appiccicassero" l'uno contro l'altro, come fanno ora, ma venissero ripartiti per tutta la larghezza dell'UL che li contiene, un po' come quando si imposta style="text-align:justify" ad un paragrafo e il testo ivi contenuto occupa tutta la larghezza del paragrafo stesso.
    Alcune ulteriori precisazioni: non so, a priori, quanti elementi LI la mia lista UL possa contenere, né quanto è larga la UL (adesso è 500px, ma può subire ridimensionamenti!); non so inoltre quanto sono larghi gli LI (ma la loro width è la minima per mostrarne il contenuto testuale); quindi la soluzione deve essere indipendente da questi dati.
    Es: UL larga 300px, 6 LI (tutti incredibilmente di larghezza 43px!): i sette spazi (uno prima del primo, 5 in mezzo e uno dopo l'ultimo) risulteranno essere di 8px (infatti 43*6 + 6*7 = 300)
    Credo di essermi spiegato dignitosamente... o almeno spero!
    Ringrazio anticipatamente chiunque si interesserà al mio problema.

    Andrea
    Don't know what I want, but I know how to get it...

  2. #2

    Re: Distribuire equamente elementi LI inline in UL

    Errata corrige:

    i sette spazi (uno prima del primo, 5 in mezzo e uno dopo l'ultimo) risulteranno essere di 8px (infatti 43*6 + 6*7 = 300)
    ...risulteranno essere di 6px, ovviamente, come si capisce anche dall'espressione.
    Pardon.

    Andrea
    Don't know what I want, but I know how to get it...

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Devi "giocare" con i margini automatici.

    Be` i blocchi non possono essere inline, per cui devi togliere il display ed usare invece il float.
    Poi i il primo blocco[*] avra` margin:0;, mentre tutti gli altri avranno margin-left:auto;
    (oppure puoi anche dare margin: 0 auto 0 auto; a tutti, ma l'effetto e` meno raffinato)

    Nota: trattandosi di[*], probabilmente con list-style-type: none;, devi anche mettere padding:0 e definrie margin e padding anche al <ul>.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  4. #4
    Grazie Mich per la risposta!
    Proverò a mettere in pratica quello che mi hai detto, solo una domanda: tu hai scritto
    Be` i blocchi non possono essere inline
    ...perché no?
    Io ho la seguente struttura (esempio):

    Nel Css
    ======

    li {
    display:inline;
    list-style-type:none;
    }

    Nella pagina
    =========

    <ul>[*]Link1[*]Link2[*]Link3[/list]

    che si visualizza come da immagine allegata.
    Grazie comunque per le indicazioni.

    Andrea
    Immagini allegate Immagini allegate
    Don't know what I want, but I know how to get it...

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Evidentemente non sai cosa e` un blocco ...

    Un elemento inline viene inserito nel flusso normale del testo, ad esempio uno <span> o un <a>.
    Invece gli elementi di tipo blocco possono avere dimension proprie, margini ed altro.

    Quindi se scrivi ad un[*] display:inline perdi la possibilita` di definire margini e dimensioni.
    E se un elemento ha il float, automaticamente non puo` essere inline, che e` quello che succede alle immagini, quando vengono spostate a destra o a sinistra.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  6. #6
    Originariamente inviato da Mich_
    Evidentemente non sai cosa e` un blocco ...
    Beh, grazie per la considerazione, ma io SO cos'è un blocco.

    [...] Quindi se scrivi ad un[*] display:inline perdi la possibilita` di definire margini e dimensioni.
    Non per contraddirti, ma hai provato a scrivere

    li {
    display:inline;
    list-style-type:none;
    margin-left:35px;
    }

    e vedere cosa succede?
    Don't know what I want, but I know how to get it...

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.