Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di marmo79
    Registrato dal
    Dec 2000
    Messaggi
    131

    immagini all'interno di liste

    Ciao,
    ho la necessità di ordinare dei nomi tramite una lista orizzontale;a ciascuno di questi nomi vorrei associare un'immagine che dovrebbe andare in alto rispetto a questi nomi che diventerebbero quindi una sorta di didascalia dell'immagini.
    html:
    codice:
    <div id="campo">
    <div class="por"><ul>[*][img]img.jpg[/img]gioc[/list]</div>
    <div class="dif"><ul>[*][img]img.jpg[/img]gioc[*][img]img.jpg[/img] gioc[*][img]img.jpg[/img] gioc[*][img]img.jpg[/img] gioc[/list]</div>
    <div class="cen"><ul>[*][img]img.jpg[/img]gioc[*][img]img.jpg[/img] gioc[*][img]img.jpg[/img] gioc[*][img]img.jpg[/img] gioc[*][img]img.jpg[/img] cen4[/list]</div>
    <div class="att"><ul>[*][img]img.jpg[/img]gioc[*][img]img.jpg[/img] gioc[*][img]img.jpg[/img] gioc[/list]</div>
    </div>
    codice:
    .por{
    margin-top:10px;
    text-align:center;
    }
    .dif{
    margin-top:50px;
    text-align:center;
    
    }
    .cen{
    margin-top:100px;
    text-align:center;
    border:1px solid;
    }
    .att{
    margin-top:120px;
    text-align:center;
    }
    div#campo ul{ list-style-type: none;MIN-height:20px;  margin:5px auto;
    }
    div#campo li{display:inline;font-size:12px;font-weight:bold;  border:3px solid;margin-right:5px;
    }
    div#campo img{display:block;
    }
    In pratica metto ciascuna lista in orizzontale grazie a display inline e riesco poi a gestirmi i margini dei vari div; mettendo però la proprietà display:block alle immagini, grazie al quale ciascuna immagine ha il nome correttamente sotto, tutte le voci della lista appaiono a loro volta come elementi blocco, uno sopra l'altro...
    Come faccio l'imitare questa proprietà alla coppia immagine/testo adiacente e non a ciascuna voce della lista?
    under costrussion

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    C'e` un errore di marcatura, ed un errore di formattazione.

    La tua lista e` in effetti una "lista di definizione", mentre tu hai usato la marcatura della "lista non ordinata".

    Hai affiancato trasformando dei blocchi in inline, e questo ti toglie la possibilita` di definire le dimensioni dei blocchi, e ti impedisce anche di avere dei blocchi all'interno di elementi inline. Per affiancare devi usare il float, che si applica solo ai blocchi.

    Prova ad applicare queste modifiche, e vedrai che poi la cosa si semplifica.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente di HTML.it L'avatar di marmo79
    Registrato dal
    Dec 2000
    Messaggi
    131
    Ok, non conoscevo le liste di definizione e ,grazie a qualche tutorial, sono arrivato a questo:

    codice:
    div#campo{width:350px;overflow:auto;background:url(../campo.gif) no-repeat;height:431px;}
    div#campo dl{float:left;width:80px;height:60px;text-align:center;color: #555;border:1px solid;}
    div#campo dt{padding: 5px 0 0}
    div#campo img{display:block;margin:0 auto;border:1px inset #CCC; width:35px;}
    div#campo dd{margin:0;padding: 2px 1px 0px;}
    
    .por{width:100%;border:3px solid;}
    .dif{margin-top:100px;width:350px;}
    .cen{margin-top:100px;width:350px;}
    .att{margin-top:100px;width:350px;}
    Per allineare l'elenco al centro, però, come faccio?
    L'html è questo..
    codice:
    <div id=\"campo\">
    
    <div class=por>
    <dl>
    <dt><img src=img></dt>
    <dd>Portiere1</dd>
    </dl>
    </div>
    <div class=dif>
    <dl>
    <dt><img src=img></dt>
    <dd>Difensore1</dd>
    </dl>
    <dl>
    <dt><img src=img></dt>
    <dd>Difensore2</dd>
    </dl>
    <dl>
    <dt><img src=img></dt>
    <dd>Difensore3</dd>
    </dl>
    <dl>
    <dt><img src=img></dt>
    <dd>Difensore4</dd>
    </dl>
    </div>
    <div class=cen>
    <dl>
    <dt><img src=img></dt>
    <dd>cenensore1</dd>
    </dl>
    <dl>
    <dt><img src=img></dt>
    <dd>cenensore2</dd>
    </dl>
    <dl>
    <dt><img src=img></dt>
    <dd>cenensore3</dd>
    </dl>
    <dl>
    <dt><img src=img></dt>
    <dd>cenensore4</dd>
    </dl>
    </div>
    </div>
    under costrussion

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Non riesco a capire cosa vuoi ottenere.
    Reputo che ci siano delle incongruenze tra quanto ho capito e quel codice.
    Pero` quando si programma occorre usare un metodo per capirci meglio: noi umani non siamo computer, ed abbiamo bisogno di ausili grafici.
    Inoltre nel codice ci sono molti erorri di sintassi, per cui qualche browser potrebbe arrabbiarsi e fare di testa sua.

    Ecco come va impostato il codice HTML (nota le indentazioni, le virgolette ed i commenti):
    codice:
    <div id="campo">
      <div class="por">
        <dl>
          <dt>[img]img...[/img]</dt>
          <dd>Portiere1</dd>
        </dl>
      </div>  
    
      <div class="dif">
        <dl>
          <dt>[img]img...[/img]</dt>
          <dd>Difensore1</dd>
        </dl>
        <dl>
          <dt>[img]img...[/img]</dt>
          <dd>Difensore2</dd>
        </dl>
        ....
      </div> 
      <div class="cen">
        <dl>
          <dt>[img]img...[/img]</dt>
          <dd>cenensore1</dd>
        </dl>
        ....
      </div>  
    </div>
    Poi si passa al CSS.
    Ma occorre fare una cosa razionale.
    Anzitutto noto che hai tutto misure fisse: a quel punto si puo` "centrare" anche mediante margini opportuni: e` piu` semplice, se hai un numero di oggetti variabile in ogni riga.
    Altrimenti si puo` centrare un oggetto in uno piu` grande, ma oggetti flottanti non possono essere centrati: o flottano o hanno margini opportuni; le due cose assieme non vanno.

    Quindi dovresti centrare i vari <div class="por">, "dif", "cen", che dovranno essere larghi per contenere tutti i loro float.

    In grassetto le modifiche mie:
    codice:
    #campo {
      width:350px;      /* andrebbero usati gli em per le dimensioni orizzontali */
      height:431px;
      overflow:auto;                /* perche`? Mi pare che sia da evitare */
      background:url(../campo.gif) no-repeat;
    }
    #campo div {
      margin: 0 auto;    /* questo dovrebbe centrare i vari blocchi */
    }
    #campo div:after {
      width: 100%;
      clear: left;        /* questo e` importante se vuoi che la cosa funzioni */
      .... vedi [Pillola] FabClearing, un metodo crossbrowser alternativo per il clearing dei float */
    }
    #campo dl {
      float:left;
      width:80px;    /* questo e` pericoloso: conviene dimensionare in em */
      height:60px;   /* idem */
      text-align:center;
      color: #555;
      border:1px solid;
    }
    #campo dt {
      /*padding: 5px 0 0;    /* perche` il padding che in IE e` interpretato male? */
      margin: 0 auto;    /* centra all'interno del dt */
      height: 1.2em;
      line-height: 1.2;
    }
    #campo dd {    /* va definito anche questo */
      margin: 0 auto;    /* centra all'interno del dt */
      height: ...;  /* conviene mettercela per avere uniformita` di altezze */
    }
    #campo img {
      display:block;
      /*margin:0 auto;    /* probabilmente non serve (e` gia` nel dd ) */
      margin: 5px 0 0 0;    /* al posto del padding del dt */
      border:1px inset #CCC;
      width:35px;
    }
    #campo dd {
      margin:0;
      padding: 2px 1px 0px;
    }
    
    /*Nelle definizioni seguenti puoi definire caratteristiche diverse per i vari ruoli: ad esempio sfondi.
    Se possibile non usare bordi, che danno problemi con IE. 
    Se usi le larghezze, devono essere multipli della larghezza del singolo ul 
    Qui puoi anche impostare margini sinistri per centrare i vari blocchi (al posto dei margini automatici del #campo div*/
    .por{width:100%;border:3px solid;}
    .dif{margin-top:100px;width:350px;}
    .cen{margin-top:100px;width:350px;}
    .att{margin-top:100px;width:350px;}
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Utente di HTML.it L'avatar di marmo79
    Registrato dal
    Dec 2000
    Messaggi
    131
    Guarda, innanzitutto grazie infinite per il tuo aiuto.

    Il mio obiettivo è ordinare , su un campo da calcio, la formazione di una squadra: così avevo pensato di creare un div per il portiere, uno per i difensori , uno per i centrocampisti e uno per gli attaccanti, da disporre centrati rispetto al campo(rappresentato da un'immagine di 350px,ecco perchè la dimensione fissa;limito i danni usando un carattere molto piccolo) ,ovvero al div contenitore

    Ora, visto che il numero di difensori,centrocampisti e attaccanti è variabile, (il codice si deve adattare automaticamente al loro numero), avevo pensato alle liste per gestire il tutto e , accontentandomi di inserire solo il nome del giocatore, realizzavo la cosa abbastanza semplicemente; creavo la lista, la affiancavo orizzontalmente con la proprietà display inline e la centravo come volevo.

    Il problema è nato volendo mettere, sopra ai nomi, le immagini dei giocatori stessi;per farlo ho dato display:block alle immagini ma la proprietà veniva ereditata anche dalla lista che così disponeva come blocchi anche tutti i valori della lista.

    Te poi mi hai consigliato l'uso delle liste di definizione che ,anche negli esempi del sito, vengono affiancate tramite float:left;nonostante la pillola che già avevo trovato sul clearing, non sono riuscito ad applicarlo al mio codice e non trovo modo ,nemmeno nell'esempio che gentilmente mi hai postato, di centrare la lista rispetto al div contenitore.
    under costrussion

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    limito i danni usando un carattere molto piccolo
    E` proprio questo che ti frega: non puioi definire un carattere piu` piccolo del minimo di ciascun browser: la dimensinoe viene sovrascritta e tutto il layout crolla.
    Invece dimensiona tutto (almeno in orizzonale) in em, e magicamente si risolvono tutti i problemi.

    il codice si deve adattare automaticamente al loro numero
    Allora usa il codice che ho postato: dovrebbe funzioanre se implementato correttamente

    Ora, visto che il numero di difensori,centrocampisti e attaccanti è variabile, avevo pensato alle liste per gestire il tutto
    Giusto pensare alle liste: infatti le tue sono liste. Ma la motivazione e` sbagliata non e` che con le liste automaticamente si centra o si creano strutture dinamiche: quelle cose si realizzano anche con altri sistemi: devi usare le liste perche` e` semanticamente corretto.

    non sono riuscito ad applicarlo al mio codice e non trovo modo ,nemmeno nell'esempio che gentilmente mi hai postato, di centrare la lista rispetto al div contenitore.
    Intanto prova a sistemare il tutto senza centramento, poi posta il codice usato: dovrebbero venire una serie di righe.
    Dovresti anche usare sfondi colorati (con colori diversi) per verificare che l'innestamento dei blocchi avvenga in modo corretto. Il clearing con l':after funziona (sperimentato piu` volte); se non va vuol dire ceh c'e` un errore da qualche parte.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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